Thu, 04 May 2023 17:58:52 +0200
Merged with branch 'mpy_network' to get the latest MicroPython related additions.
--- a/Dictionaries/words.dic Tue May 02 11:39:09 2023 +0200 +++ b/Dictionaries/words.dic Thu May 04 17:58:52 2023 +0200 @@ -8,3 +8,4 @@ param keyparam rtype +instantiation
--- a/docs/changelog.md Tue May 02 11:39:09 2023 +0200 +++ b/docs/changelog.md Thu May 04 17:58:52 2023 +0200 @@ -2,6 +2,9 @@ ### Version 23.6 - bug fixes +- MicroPython + - Added support of th WebREPL device interface available on some boards with + builtin network capability. ### Version 23.5 - bug fixes
--- a/eric7.epj Tue May 02 11:39:09 2023 +0200 +++ b/eric7.epj Thu May 04 17:58:52 2023 +0200 @@ -352,6 +352,9 @@ "src/eric7/MicroPython/IgnoredDevicesDialog.ui", "src/eric7/MicroPython/MicroPythonFileManagerWidget.ui", "src/eric7/MicroPython/MicroPythonProgressInfoDialog.ui", + "src/eric7/MicroPython/MicroPythonWebreplConnectionDialog.ui", + "src/eric7/MicroPython/MicroPythonWebreplUrlAddEditDialog.ui", + "src/eric7/MicroPython/MicroPythonWebreplUrlsConfigDialog.ui", "src/eric7/MicroPython/MicroPythonWidget.ui", "src/eric7/MicroPython/MipPackageDialog.ui", "src/eric7/MicroPython/NtpParametersDialog.ui", @@ -1347,7 +1350,14 @@ "src/eric7/MicroPython/MicroPythonFileSystemUtilities.py", "src/eric7/MicroPython/MicroPythonGraphWidget.py", "src/eric7/MicroPython/MicroPythonProgressInfoDialog.py", + "src/eric7/MicroPython/MicroPythonReplWidget.py", + "src/eric7/MicroPython/MicroPythonSerialDeviceInterface.py", "src/eric7/MicroPython/MicroPythonSerialPort.py", + "src/eric7/MicroPython/MicroPythonWebreplConnectionDialog.py", + "src/eric7/MicroPython/MicroPythonWebreplDeviceInterface.py", + "src/eric7/MicroPython/MicroPythonWebreplSocket.py", + "src/eric7/MicroPython/MicroPythonWebreplUrlAddEditDialog.py", + "src/eric7/MicroPython/MicroPythonWebreplUrlsConfigDialog.py", "src/eric7/MicroPython/MicroPythonWidget.py", "src/eric7/MicroPython/MipLocalInstaller.py", "src/eric7/MicroPython/MipPackageDialog.py",
--- a/src/eric7/APIs/Python3/eric7.api Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/APIs/Python3/eric7.api Thu May 04 17:58:52 2023 +0200 @@ -2692,6 +2692,7 @@ eric7.MicroPython.Devices.DeviceBase.BaseDevice.disconnectWifi?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.downloadFirmware?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.ensurePath?4(target) +eric7.MicroPython.Devices.DeviceBase.BaseDevice.executeCommands?4(commands, *, mode="raw", timeout=0) eric7.MicroPython.Devices.DeviceBase.BaseDevice.exists?4(pathname) eric7.MicroPython.Devices.DeviceBase.BaseDevice.fileSystemInfo?4() eric7.MicroPython.Devices.DeviceBase.BaseDevice.forceInterrupt?4() @@ -2956,15 +2957,15 @@ eric7.MicroPython.IgnoredDevicesDialog.IgnoredDevicesDialog?1(deviceList, parent=None) eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.PasteModePrompt?7 eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.TracebackMarker?7 -eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.connectToDevice?4(port) +eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.connectToDevice?4(connection) eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.dataReceived?7 eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.disconnectFromDevice?4() eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.execute?4(commands, *, mode="raw", timeout=0) -eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.executeAsync?4(commandsList) +eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.executeAsync?4(commandsList, submitMode) eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.executeAsyncFinished?7 -eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.executeAsyncPaste?4(commandsList) eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.handlePreferencesChanged?4() eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.isConnected?4() +eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.osdInfo?7 eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.probeDevice?4() eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface.write?4(data) eric7.MicroPython.MicroPythonDeviceInterface.MicroPythonDeviceInterface?1(parent=None) @@ -3037,6 +3038,30 @@ eric7.MicroPython.MicroPythonGraphWidget.MicroPythonGraphWidget?1(parent=None) eric7.MicroPython.MicroPythonProgressInfoDialog.MicroPythonProgressInfoDialog.addMessage?4(message) eric7.MicroPython.MicroPythonProgressInfoDialog.MicroPythonProgressInfoDialog?1(parent=None) +eric7.MicroPython.MicroPythonReplWidget.AnsiColorSchemes?7 +eric7.MicroPython.MicroPythonReplWidget.MicroPythonReplEdit.doZoom?4(value) +eric7.MicroPython.MicroPythonReplWidget.MicroPythonReplEdit.handlePreferencesChanged?4() +eric7.MicroPython.MicroPythonReplWidget.MicroPythonReplEdit.keyPressEvent?4(evt) +eric7.MicroPython.MicroPythonReplWidget.MicroPythonReplEdit.mouseReleaseEvent?4(evt) +eric7.MicroPython.MicroPythonReplWidget.MicroPythonReplEdit.osdInfo?7 +eric7.MicroPython.MicroPythonReplWidget.MicroPythonReplEdit.processData?4(data) +eric7.MicroPython.MicroPythonReplWidget.MicroPythonReplEdit.setInterface?4(deviceInterface) +eric7.MicroPython.MicroPythonReplWidget.MicroPythonReplEdit?1(parent=None) +eric7.MicroPython.MicroPythonReplWidget.MicroPythonReplWidget.ZoomMax?7 +eric7.MicroPython.MicroPythonReplWidget.MicroPythonReplWidget.ZoomMin?7 +eric7.MicroPython.MicroPythonReplWidget.MicroPythonReplWidget.clearOSD?4() +eric7.MicroPython.MicroPythonReplWidget.MicroPythonReplWidget.replEdit?4() +eric7.MicroPython.MicroPythonReplWidget.MicroPythonReplWidget.setOSDInfo?4(infoStr) +eric7.MicroPython.MicroPythonReplWidget.MicroPythonReplWidget?1(parent=None) +eric7.MicroPython.MicroPythonSerialDeviceInterface.MicroPythonSerialDeviceInterface.connectToDevice?4(connection) +eric7.MicroPython.MicroPythonSerialDeviceInterface.MicroPythonSerialDeviceInterface.disconnectFromDevice?4() +eric7.MicroPython.MicroPythonSerialDeviceInterface.MicroPythonSerialDeviceInterface.execute?4(commands, *, mode="raw", timeout=0) +eric7.MicroPython.MicroPythonSerialDeviceInterface.MicroPythonSerialDeviceInterface.executeAsync?4(commandsList, submitMode) +eric7.MicroPython.MicroPythonSerialDeviceInterface.MicroPythonSerialDeviceInterface.handlePreferencesChanged?4() +eric7.MicroPython.MicroPythonSerialDeviceInterface.MicroPythonSerialDeviceInterface.isConnected?4() +eric7.MicroPython.MicroPythonSerialDeviceInterface.MicroPythonSerialDeviceInterface.probeDevice?4() +eric7.MicroPython.MicroPythonSerialDeviceInterface.MicroPythonSerialDeviceInterface.write?4(data) +eric7.MicroPython.MicroPythonSerialDeviceInterface.MicroPythonSerialDeviceInterface?1(parent=None) eric7.MicroPython.MicroPythonSerialPort.MicroPythonSerialPort.closeSerialLink?4() eric7.MicroPython.MicroPythonSerialPort.MicroPythonSerialPort.hasTimedOut?4() eric7.MicroPython.MicroPythonSerialPort.MicroPythonSerialPort.isConnected?4() @@ -3044,21 +3069,51 @@ eric7.MicroPython.MicroPythonSerialPort.MicroPythonSerialPort.readUntil?4(expected=b"\n", size=None, timeout=0) eric7.MicroPython.MicroPythonSerialPort.MicroPythonSerialPort.setTimeout?4(timeout) eric7.MicroPython.MicroPythonSerialPort.MicroPythonSerialPort?1(timeout=10000, parent=None) -eric7.MicroPython.MicroPythonWidget.AnsiColorSchemes?7 +eric7.MicroPython.MicroPythonWebreplConnectionDialog.MicroPythonWebreplConnectionDialog.getWebreplConnectionParameters?4() +eric7.MicroPython.MicroPythonWebreplConnectionDialog.MicroPythonWebreplConnectionDialog.on_showPasswordButton_clicked?4(checked) +eric7.MicroPython.MicroPythonWebreplConnectionDialog.MicroPythonWebreplConnectionDialog?1(currentWebreplUrl, currentType, parent=None) +eric7.MicroPython.MicroPythonWebreplDeviceInterface.MicroPythonWebreplDeviceInterface.connectToDevice?4(connection) +eric7.MicroPython.MicroPythonWebreplDeviceInterface.MicroPythonWebreplDeviceInterface.disconnectFromDevice?4() +eric7.MicroPython.MicroPythonWebreplDeviceInterface.MicroPythonWebreplDeviceInterface.execute?4(commands, *, mode="raw", timeout=0) +eric7.MicroPython.MicroPythonWebreplDeviceInterface.MicroPythonWebreplDeviceInterface.executeAsync?4(commandsList, submitMode) +eric7.MicroPython.MicroPythonWebreplDeviceInterface.MicroPythonWebreplDeviceInterface.handlePreferencesChanged?4() +eric7.MicroPython.MicroPythonWebreplDeviceInterface.MicroPythonWebreplDeviceInterface.isConnected?4() +eric7.MicroPython.MicroPythonWebreplDeviceInterface.MicroPythonWebreplDeviceInterface.probeDevice?4() +eric7.MicroPython.MicroPythonWebreplDeviceInterface.MicroPythonWebreplDeviceInterface.write?4(data) +eric7.MicroPython.MicroPythonWebreplDeviceInterface.MicroPythonWebreplDeviceInterface?1(parent=None) +eric7.MicroPython.MicroPythonWebreplSocket.MicroPythonWebreplSocket.connectToDevice?4(host, port) +eric7.MicroPython.MicroPythonWebreplSocket.MicroPythonWebreplSocket.disconnect?4() +eric7.MicroPython.MicroPythonWebreplSocket.MicroPythonWebreplSocket.hasTimedOut?4() +eric7.MicroPython.MicroPythonWebreplSocket.MicroPythonWebreplSocket.isConnected?4() +eric7.MicroPython.MicroPythonWebreplSocket.MicroPythonWebreplSocket.login?4(password) +eric7.MicroPython.MicroPythonWebreplSocket.MicroPythonWebreplSocket.readAll?4(timeout=0) +eric7.MicroPython.MicroPythonWebreplSocket.MicroPythonWebreplSocket.readUntil?4(expected=b"\n", size=None, timeout=0) +eric7.MicroPython.MicroPythonWebreplSocket.MicroPythonWebreplSocket.readyRead?7 +eric7.MicroPython.MicroPythonWebreplSocket.MicroPythonWebreplSocket.setTimeout?4(timeout) +eric7.MicroPython.MicroPythonWebreplSocket.MicroPythonWebreplSocket.timeout?4() +eric7.MicroPython.MicroPythonWebreplSocket.MicroPythonWebreplSocket.waitForConnected?4() +eric7.MicroPython.MicroPythonWebreplSocket.MicroPythonWebreplSocket.writeTextMessage?4(data) +eric7.MicroPython.MicroPythonWebreplSocket.MicroPythonWebreplSocket?1(timeout=10000, parent=None) +eric7.MicroPython.MicroPythonWebreplUrlAddEditDialog.MicroPythonWebreplUrlAddEditDialog.getWebreplUrl?4() +eric7.MicroPython.MicroPythonWebreplUrlAddEditDialog.MicroPythonWebreplUrlAddEditDialog?1(definedNames, connectionParams=None, parent=None) +eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.MicroPythonWebreplUrlsConfigDialog.getWebreplDict?4() +eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.MicroPythonWebreplUrlsConfigDialog.on_addButton_clicked?4() +eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.MicroPythonWebreplUrlsConfigDialog.on_editButton_clicked?4() +eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.MicroPythonWebreplUrlsConfigDialog.on_removeAllButton_clicked?4() +eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.MicroPythonWebreplUrlsConfigDialog.on_removeButton_clicked?4() +eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.MicroPythonWebreplUrlsConfigDialog?1(webreplDict, parent=None) eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.DeviceBoardRole?7 +eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.DeviceInterfaceTypeRole?7 eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.DevicePidRole?7 eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.DevicePortRole?7 eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.DeviceSerNoRole?7 eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.DeviceTypeRole?7 eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.DeviceVidRole?7 +eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.DeviceWebreplUrlRole?7 eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.ManualMarker?7 -eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.ZoomMax?7 -eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.ZoomMin?7 eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.dataReceived?7 eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.deviceInterface?4() eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.deviceSupportsLocalFileAccess?4() -eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.eventFilter?4(obj, evt) -eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.getCurrentBoard?4() eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.getCurrentPort?4() eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.getDevice?4() eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.getDeviceWorkspace?4() @@ -3068,7 +3123,6 @@ eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.isLinkConnected?4() eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.isMicrobit?4() eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.on_chartButton_clicked?4(checked) -eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.on_checkButton_clicked?4() eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.on_connectButton_clicked?4() eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.on_deviceTypeComboBox_activated?4(index) eric7.MicroPython.MicroPythonWidget.MicroPythonWidget.on_filesButton_clicked?4(checked) @@ -7963,7 +8017,6 @@ eric7.Project.AddLanguageDialog.AddLanguageDialog.getSelectedLanguage?4() eric7.Project.AddLanguageDialog.AddLanguageDialog?1(parent=None, name=None) eric7.Project.CreateDialogCodeDialog.CreateDialogCodeDialog.DialogClasses?7 -eric7.Project.CreateDialogCodeDialog.CreateDialogCodeDialog.Separator?7 eric7.Project.CreateDialogCodeDialog.CreateDialogCodeDialog.initError?4() eric7.Project.CreateDialogCodeDialog.CreateDialogCodeDialog.on_buttonBox_clicked?4(button) eric7.Project.CreateDialogCodeDialog.CreateDialogCodeDialog.on_classNameCombo_activated?4(index) @@ -7975,7 +8028,6 @@ eric7.Project.CreateDialogCodeDialog.pyqtSignatureRole?7 eric7.Project.CreateDialogCodeDialog.pythonSignatureRole?7 eric7.Project.CreateDialogCodeDialog.returnTypeRole?7 -eric7.Project.CreateDialogCodeDialog.rubySignatureRole?7 eric7.Project.DebuggerPropertiesDialog.DebuggerPropertiesDialog.on_debugClientClearHistoryButton_clicked?4() eric7.Project.DebuggerPropertiesDialog.DebuggerPropertiesDialog.on_debugClientPicker_aboutToShowPathPickerDialog?4() eric7.Project.DebuggerPropertiesDialog.DebuggerPropertiesDialog.storeData?4() @@ -8329,7 +8381,6 @@ eric7.Project.ProjectOthersBrowser.ProjectOthersBrowser.showMenu?7 eric7.Project.ProjectOthersBrowser.ProjectOthersBrowser?1(project, projectBrowser, parent=None) eric7.Project.ProjectResourcesBrowser.ProjectResourcesBrowser.RCFilenameFormatPython?7 -eric7.Project.ProjectResourcesBrowser.ProjectResourcesBrowser.RCFilenameFormatRuby?7 eric7.Project.ProjectResourcesBrowser.ProjectResourcesBrowser._contextMenuRequested?5(coord) eric7.Project.ProjectResourcesBrowser.ProjectResourcesBrowser._createPopupMenus?5() eric7.Project.ProjectResourcesBrowser.ProjectResourcesBrowser._initHookMethods?5() @@ -8404,10 +8455,12 @@ eric7.Project.TranslationPropertiesDialog.TranslationPropertiesDialog?1(project, new, parent) eric7.Project.UicCompilerOptionsDialog.UicCompilerOptionsDialog.getData?4() eric7.Project.UicCompilerOptionsDialog.UicCompilerOptionsDialog?1(compilerOptions, compiler, parent=None) +eric7.Project.UicLoadUi5._printerr?5(dataString) eric7.Project.UicLoadUi5._printout?5(dataString) eric7.Project.UicLoadUi5.className?4(formFile, projectPath) eric7.Project.UicLoadUi5.objectName?4(formFile, projectPath) eric7.Project.UicLoadUi5.signatures?4(formFile, projectPath) +eric7.Project.UicLoadUi6._printerr?5(dataString) eric7.Project.UicLoadUi6._printout?5(dataString) eric7.Project.UicLoadUi6.className?4(formFile, projectPath) eric7.Project.UicLoadUi6.objectName?4(formFile, projectPath)
--- a/src/eric7/APIs/Python3/eric7.bas Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/APIs/Python3/eric7.bas Thu May 04 17:58:52 2023 +0200 @@ -664,7 +664,15 @@ MicroPythonGraphWidget QWidget MicroPythonPage ConfigurationPageBase Ui_MicroPythonPage MicroPythonProgressInfoDialog QDialog Ui_MicroPythonProgressInfoDialog +MicroPythonReplEdit QTextEdit +MicroPythonReplWidget QWidget +MicroPythonSerialDeviceInterface MicroPythonDeviceInterface MicroPythonSerialPort QSerialPort +MicroPythonWebreplConnectionDialog QDialog Ui_MicroPythonWebreplConnectionDialog +MicroPythonWebreplDeviceInterface MicroPythonDeviceInterface +MicroPythonWebreplSocket QWebSocket +MicroPythonWebreplUrlAddEditDialog QDialog Ui_MicroPythonWebreplUrlAddEditDialog +MicroPythonWebreplUrlsConfigDialog QDialog Ui_MicroPythonWebreplUrlsConfigDialog MicroPythonWidget QWidget Ui_MicroPythonWidget MicrobitDevice BaseDevice MicrosoftEngine TranslationEngine
--- a/src/eric7/Documentation/Help/source.qhp Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/Documentation/Help/source.qhp Thu May 04 17:58:52 2023 +0200 @@ -327,7 +327,14 @@ <section title="eric7.MicroPython.MicroPythonFileSystemUtilities" ref="eric7.MicroPython.MicroPythonFileSystemUtilities.html" /> <section title="eric7.MicroPython.MicroPythonGraphWidget" ref="eric7.MicroPython.MicroPythonGraphWidget.html" /> <section title="eric7.MicroPython.MicroPythonProgressInfoDialog" ref="eric7.MicroPython.MicroPythonProgressInfoDialog.html" /> + <section title="eric7.MicroPython.MicroPythonReplWidget" ref="eric7.MicroPython.MicroPythonReplWidget.html" /> + <section title="eric7.MicroPython.MicroPythonSerialDeviceInterface" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html" /> <section title="eric7.MicroPython.MicroPythonSerialPort" ref="eric7.MicroPython.MicroPythonSerialPort.html" /> + <section title="eric7.MicroPython.MicroPythonWebreplConnectionDialog" ref="eric7.MicroPython.MicroPythonWebreplConnectionDialog.html" /> + <section title="eric7.MicroPython.MicroPythonWebreplDeviceInterface" ref="eric7.MicroPython.MicroPythonWebreplDeviceInterface.html" /> + <section title="eric7.MicroPython.MicroPythonWebreplSocket" ref="eric7.MicroPython.MicroPythonWebreplSocket.html" /> + <section title="eric7.MicroPython.MicroPythonWebreplUrlAddEditDialog" ref="eric7.MicroPython.MicroPythonWebreplUrlAddEditDialog.html" /> + <section title="eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog" ref="eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.html" /> <section title="eric7.MicroPython.MicroPythonWidget" ref="eric7.MicroPython.MicroPythonWidget.html" /> <section title="eric7.MicroPython.MipLocalInstaller" ref="eric7.MicroPython.MipLocalInstaller.html" /> <section title="eric7.MicroPython.MipPackageDialog" ref="eric7.MicroPython.MipPackageDialog.html" /> @@ -2097,6 +2104,7 @@ <keyword name="BaseDevice.disconnectWifi" id="BaseDevice.disconnectWifi" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.disconnectWifi" /> <keyword name="BaseDevice.downloadFirmware" id="BaseDevice.downloadFirmware" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.downloadFirmware" /> <keyword name="BaseDevice.ensurePath" id="BaseDevice.ensurePath" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.ensurePath" /> + <keyword name="BaseDevice.executeCommands" id="BaseDevice.executeCommands" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.executeCommands" /> <keyword name="BaseDevice.exists" id="BaseDevice.exists" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.exists" /> <keyword name="BaseDevice.fileSystemInfo" id="BaseDevice.fileSystemInfo" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.fileSystemInfo" /> <keyword name="BaseDevice.forceInterrupt" id="BaseDevice.forceInterrupt" ref="eric7.MicroPython.Devices.DeviceBase.html#BaseDevice.forceInterrupt" /> @@ -3642,7 +3650,6 @@ <keyword name="CreateDialogCodeDialog (Module)" id="CreateDialogCodeDialog (Module)" ref="eric7.Project.CreateDialogCodeDialog.html" /> <keyword name="CreateDialogCodeDialog.__className" id="CreateDialogCodeDialog.__className" ref="eric7.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.__className" /> <keyword name="CreateDialogCodeDialog.__generateCode" id="CreateDialogCodeDialog.__generateCode" ref="eric7.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.__generateCode" /> - <keyword name="CreateDialogCodeDialog.__generatePythonCode" id="CreateDialogCodeDialog.__generatePythonCode" ref="eric7.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.__generatePythonCode" /> <keyword name="CreateDialogCodeDialog.__mapType" id="CreateDialogCodeDialog.__mapType" ref="eric7.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.__mapType" /> <keyword name="CreateDialogCodeDialog.__objectName" id="CreateDialogCodeDialog.__objectName" ref="eric7.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.__objectName" /> <keyword name="CreateDialogCodeDialog.__runUicLoadUi" id="CreateDialogCodeDialog.__runUicLoadUi" ref="eric7.Project.CreateDialogCodeDialog.html#CreateDialogCodeDialog.__runUicLoadUi" /> @@ -10793,18 +10800,10 @@ <keyword name="MicroPythonDeviceInterface" id="MicroPythonDeviceInterface" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface" /> <keyword name="MicroPythonDeviceInterface (Constructor)" id="MicroPythonDeviceInterface (Constructor)" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.__init__" /> <keyword name="MicroPythonDeviceInterface (Module)" id="MicroPythonDeviceInterface (Module)" ref="eric7.MicroPython.MicroPythonDeviceInterface.html" /> - <keyword name="MicroPythonDeviceInterface.__execute_paste" id="MicroPythonDeviceInterface.__execute_paste" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.__execute_paste" /> - <keyword name="MicroPythonDeviceInterface.__execute_raw" id="MicroPythonDeviceInterface.__execute_raw" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.__execute_raw" /> - <keyword name="MicroPythonDeviceInterface.__pasteOff" id="MicroPythonDeviceInterface.__pasteOff" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.__pasteOff" /> - <keyword name="MicroPythonDeviceInterface.__pasteOn" id="MicroPythonDeviceInterface.__pasteOn" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.__pasteOn" /> - <keyword name="MicroPythonDeviceInterface.__rawOff" id="MicroPythonDeviceInterface.__rawOff" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.__rawOff" /> - <keyword name="MicroPythonDeviceInterface.__rawOn" id="MicroPythonDeviceInterface.__rawOn" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.__rawOn" /> - <keyword name="MicroPythonDeviceInterface.__readSerial" id="MicroPythonDeviceInterface.__readSerial" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.__readSerial" /> <keyword name="MicroPythonDeviceInterface.connectToDevice" id="MicroPythonDeviceInterface.connectToDevice" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.connectToDevice" /> <keyword name="MicroPythonDeviceInterface.disconnectFromDevice" id="MicroPythonDeviceInterface.disconnectFromDevice" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.disconnectFromDevice" /> <keyword name="MicroPythonDeviceInterface.execute" id="MicroPythonDeviceInterface.execute" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.execute" /> <keyword name="MicroPythonDeviceInterface.executeAsync" id="MicroPythonDeviceInterface.executeAsync" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.executeAsync" /> - <keyword name="MicroPythonDeviceInterface.executeAsyncPaste" id="MicroPythonDeviceInterface.executeAsyncPaste" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.executeAsyncPaste" /> <keyword name="MicroPythonDeviceInterface.handlePreferencesChanged" id="MicroPythonDeviceInterface.handlePreferencesChanged" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.handlePreferencesChanged" /> <keyword name="MicroPythonDeviceInterface.isConnected" id="MicroPythonDeviceInterface.isConnected" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.isConnected" /> <keyword name="MicroPythonDeviceInterface.probeDevice" id="MicroPythonDeviceInterface.probeDevice" ref="eric7.MicroPython.MicroPythonDeviceInterface.html#MicroPythonDeviceInterface.probeDevice" /> @@ -10902,6 +10901,44 @@ <keyword name="MicroPythonProgressInfoDialog (Constructor)" id="MicroPythonProgressInfoDialog (Constructor)" ref="eric7.MicroPython.MicroPythonProgressInfoDialog.html#MicroPythonProgressInfoDialog.__init__" /> <keyword name="MicroPythonProgressInfoDialog (Module)" id="MicroPythonProgressInfoDialog (Module)" ref="eric7.MicroPython.MicroPythonProgressInfoDialog.html" /> <keyword name="MicroPythonProgressInfoDialog.addMessage" id="MicroPythonProgressInfoDialog.addMessage" ref="eric7.MicroPython.MicroPythonProgressInfoDialog.html#MicroPythonProgressInfoDialog.addMessage" /> + <keyword name="MicroPythonReplEdit" id="MicroPythonReplEdit" ref="eric7.MicroPython.MicroPythonReplWidget.html#MicroPythonReplEdit" /> + <keyword name="MicroPythonReplEdit (Constructor)" id="MicroPythonReplEdit (Constructor)" ref="eric7.MicroPython.MicroPythonReplWidget.html#MicroPythonReplEdit.__init__" /> + <keyword name="MicroPythonReplEdit.__clear" id="MicroPythonReplEdit.__clear" ref="eric7.MicroPython.MicroPythonReplWidget.html#MicroPythonReplEdit.__clear" /> + <keyword name="MicroPythonReplEdit.__paste" id="MicroPythonReplEdit.__paste" ref="eric7.MicroPython.MicroPythonReplWidget.html#MicroPythonReplEdit.__paste" /> + <keyword name="MicroPythonReplEdit.__setCharFormat" id="MicroPythonReplEdit.__setCharFormat" ref="eric7.MicroPython.MicroPythonReplWidget.html#MicroPythonReplEdit.__setCharFormat" /> + <keyword name="MicroPythonReplEdit.__showContextMenu" id="MicroPythonReplEdit.__showContextMenu" ref="eric7.MicroPython.MicroPythonReplWidget.html#MicroPythonReplEdit.__showContextMenu" /> + <keyword name="MicroPythonReplEdit.doZoom" id="MicroPythonReplEdit.doZoom" ref="eric7.MicroPython.MicroPythonReplWidget.html#MicroPythonReplEdit.doZoom" /> + <keyword name="MicroPythonReplEdit.handlePreferencesChanged" id="MicroPythonReplEdit.handlePreferencesChanged" ref="eric7.MicroPython.MicroPythonReplWidget.html#MicroPythonReplEdit.handlePreferencesChanged" /> + <keyword name="MicroPythonReplEdit.keyPressEvent" id="MicroPythonReplEdit.keyPressEvent" ref="eric7.MicroPython.MicroPythonReplWidget.html#MicroPythonReplEdit.keyPressEvent" /> + <keyword name="MicroPythonReplEdit.mouseReleaseEvent" id="MicroPythonReplEdit.mouseReleaseEvent" ref="eric7.MicroPython.MicroPythonReplWidget.html#MicroPythonReplEdit.mouseReleaseEvent" /> + <keyword name="MicroPythonReplEdit.processData" id="MicroPythonReplEdit.processData" ref="eric7.MicroPython.MicroPythonReplWidget.html#MicroPythonReplEdit.processData" /> + <keyword name="MicroPythonReplEdit.setInterface" id="MicroPythonReplEdit.setInterface" ref="eric7.MicroPython.MicroPythonReplWidget.html#MicroPythonReplEdit.setInterface" /> + <keyword name="MicroPythonReplWidget" id="MicroPythonReplWidget" ref="eric7.MicroPython.MicroPythonReplWidget.html#MicroPythonReplWidget" /> + <keyword name="MicroPythonReplWidget (Constructor)" id="MicroPythonReplWidget (Constructor)" ref="eric7.MicroPython.MicroPythonReplWidget.html#MicroPythonReplWidget.__init__" /> + <keyword name="MicroPythonReplWidget (Module)" id="MicroPythonReplWidget (Module)" ref="eric7.MicroPython.MicroPythonReplWidget.html" /> + <keyword name="MicroPythonReplWidget.clearOSD" id="MicroPythonReplWidget.clearOSD" ref="eric7.MicroPython.MicroPythonReplWidget.html#MicroPythonReplWidget.clearOSD" /> + <keyword name="MicroPythonReplWidget.replEdit" id="MicroPythonReplWidget.replEdit" ref="eric7.MicroPython.MicroPythonReplWidget.html#MicroPythonReplWidget.replEdit" /> + <keyword name="MicroPythonReplWidget.setOSDInfo" id="MicroPythonReplWidget.setOSDInfo" ref="eric7.MicroPython.MicroPythonReplWidget.html#MicroPythonReplWidget.setOSDInfo" /> + <keyword name="MicroPythonSerialDeviceInterface" id="MicroPythonSerialDeviceInterface" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface" /> + <keyword name="MicroPythonSerialDeviceInterface (Constructor)" id="MicroPythonSerialDeviceInterface (Constructor)" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface.__init__" /> + <keyword name="MicroPythonSerialDeviceInterface (Module)" id="MicroPythonSerialDeviceInterface (Module)" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html" /> + <keyword name="MicroPythonSerialDeviceInterface.__executeAsyncPaste" id="MicroPythonSerialDeviceInterface.__executeAsyncPaste" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface.__executeAsyncPaste" /> + <keyword name="MicroPythonSerialDeviceInterface.__executeAsyncRaw" id="MicroPythonSerialDeviceInterface.__executeAsyncRaw" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface.__executeAsyncRaw" /> + <keyword name="MicroPythonSerialDeviceInterface.__execute_paste" id="MicroPythonSerialDeviceInterface.__execute_paste" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface.__execute_paste" /> + <keyword name="MicroPythonSerialDeviceInterface.__execute_raw" id="MicroPythonSerialDeviceInterface.__execute_raw" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface.__execute_raw" /> + <keyword name="MicroPythonSerialDeviceInterface.__pasteOff" id="MicroPythonSerialDeviceInterface.__pasteOff" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface.__pasteOff" /> + <keyword name="MicroPythonSerialDeviceInterface.__pasteOn" id="MicroPythonSerialDeviceInterface.__pasteOn" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface.__pasteOn" /> + <keyword name="MicroPythonSerialDeviceInterface.__rawOff" id="MicroPythonSerialDeviceInterface.__rawOff" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface.__rawOff" /> + <keyword name="MicroPythonSerialDeviceInterface.__rawOn" id="MicroPythonSerialDeviceInterface.__rawOn" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface.__rawOn" /> + <keyword name="MicroPythonSerialDeviceInterface.__readSerial" id="MicroPythonSerialDeviceInterface.__readSerial" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface.__readSerial" /> + <keyword name="MicroPythonSerialDeviceInterface.connectToDevice" id="MicroPythonSerialDeviceInterface.connectToDevice" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface.connectToDevice" /> + <keyword name="MicroPythonSerialDeviceInterface.disconnectFromDevice" id="MicroPythonSerialDeviceInterface.disconnectFromDevice" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface.disconnectFromDevice" /> + <keyword name="MicroPythonSerialDeviceInterface.execute" id="MicroPythonSerialDeviceInterface.execute" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface.execute" /> + <keyword name="MicroPythonSerialDeviceInterface.executeAsync" id="MicroPythonSerialDeviceInterface.executeAsync" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface.executeAsync" /> + <keyword name="MicroPythonSerialDeviceInterface.handlePreferencesChanged" id="MicroPythonSerialDeviceInterface.handlePreferencesChanged" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface.handlePreferencesChanged" /> + <keyword name="MicroPythonSerialDeviceInterface.isConnected" id="MicroPythonSerialDeviceInterface.isConnected" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface.isConnected" /> + <keyword name="MicroPythonSerialDeviceInterface.probeDevice" id="MicroPythonSerialDeviceInterface.probeDevice" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface.probeDevice" /> + <keyword name="MicroPythonSerialDeviceInterface.write" id="MicroPythonSerialDeviceInterface.write" ref="eric7.MicroPython.MicroPythonSerialDeviceInterface.html#MicroPythonSerialDeviceInterface.write" /> <keyword name="MicroPythonSerialPort" id="MicroPythonSerialPort" ref="eric7.MicroPython.MicroPythonSerialPort.html#MicroPythonSerialPort" /> <keyword name="MicroPythonSerialPort (Constructor)" id="MicroPythonSerialPort (Constructor)" ref="eric7.MicroPython.MicroPythonSerialPort.html#MicroPythonSerialPort.__init__" /> <keyword name="MicroPythonSerialPort (Module)" id="MicroPythonSerialPort (Module)" ref="eric7.MicroPython.MicroPythonSerialPort.html" /> @@ -10911,20 +10948,73 @@ <keyword name="MicroPythonSerialPort.openSerialLink" id="MicroPythonSerialPort.openSerialLink" ref="eric7.MicroPython.MicroPythonSerialPort.html#MicroPythonSerialPort.openSerialLink" /> <keyword name="MicroPythonSerialPort.readUntil" id="MicroPythonSerialPort.readUntil" ref="eric7.MicroPython.MicroPythonSerialPort.html#MicroPythonSerialPort.readUntil" /> <keyword name="MicroPythonSerialPort.setTimeout" id="MicroPythonSerialPort.setTimeout" ref="eric7.MicroPython.MicroPythonSerialPort.html#MicroPythonSerialPort.setTimeout" /> + <keyword name="MicroPythonWebreplConnectionDialog" id="MicroPythonWebreplConnectionDialog" ref="eric7.MicroPython.MicroPythonWebreplConnectionDialog.html#MicroPythonWebreplConnectionDialog" /> + <keyword name="MicroPythonWebreplConnectionDialog (Constructor)" id="MicroPythonWebreplConnectionDialog (Constructor)" ref="eric7.MicroPython.MicroPythonWebreplConnectionDialog.html#MicroPythonWebreplConnectionDialog.__init__" /> + <keyword name="MicroPythonWebreplConnectionDialog (Module)" id="MicroPythonWebreplConnectionDialog (Module)" ref="eric7.MicroPython.MicroPythonWebreplConnectionDialog.html" /> + <keyword name="MicroPythonWebreplConnectionDialog.__updateOkButton" id="MicroPythonWebreplConnectionDialog.__updateOkButton" ref="eric7.MicroPython.MicroPythonWebreplConnectionDialog.html#MicroPythonWebreplConnectionDialog.__updateOkButton" /> + <keyword name="MicroPythonWebreplConnectionDialog.getWebreplConnectionParameters" id="MicroPythonWebreplConnectionDialog.getWebreplConnectionParameters" ref="eric7.MicroPython.MicroPythonWebreplConnectionDialog.html#MicroPythonWebreplConnectionDialog.getWebreplConnectionParameters" /> + <keyword name="MicroPythonWebreplConnectionDialog.on_showPasswordButton_clicked" id="MicroPythonWebreplConnectionDialog.on_showPasswordButton_clicked" ref="eric7.MicroPython.MicroPythonWebreplConnectionDialog.html#MicroPythonWebreplConnectionDialog.on_showPasswordButton_clicked" /> + <keyword name="MicroPythonWebreplDeviceInterface" id="MicroPythonWebreplDeviceInterface" ref="eric7.MicroPython.MicroPythonWebreplDeviceInterface.html#MicroPythonWebreplDeviceInterface" /> + <keyword name="MicroPythonWebreplDeviceInterface (Constructor)" id="MicroPythonWebreplDeviceInterface (Constructor)" ref="eric7.MicroPython.MicroPythonWebreplDeviceInterface.html#MicroPythonWebreplDeviceInterface.__init__" /> + <keyword name="MicroPythonWebreplDeviceInterface (Module)" id="MicroPythonWebreplDeviceInterface (Module)" ref="eric7.MicroPython.MicroPythonWebreplDeviceInterface.html" /> + <keyword name="MicroPythonWebreplDeviceInterface.__pasteOff" id="MicroPythonWebreplDeviceInterface.__pasteOff" ref="eric7.MicroPython.MicroPythonWebreplDeviceInterface.html#MicroPythonWebreplDeviceInterface.__pasteOff" /> + <keyword name="MicroPythonWebreplDeviceInterface.__pasteOn" id="MicroPythonWebreplDeviceInterface.__pasteOn" ref="eric7.MicroPython.MicroPythonWebreplDeviceInterface.html#MicroPythonWebreplDeviceInterface.__pasteOn" /> + <keyword name="MicroPythonWebreplDeviceInterface.__readAll" id="MicroPythonWebreplDeviceInterface.__readAll" ref="eric7.MicroPython.MicroPythonWebreplDeviceInterface.html#MicroPythonWebreplDeviceInterface.__readAll" /> + <keyword name="MicroPythonWebreplDeviceInterface.__readSocket" id="MicroPythonWebreplDeviceInterface.__readSocket" ref="eric7.MicroPython.MicroPythonWebreplDeviceInterface.html#MicroPythonWebreplDeviceInterface.__readSocket" /> + <keyword name="MicroPythonWebreplDeviceInterface.connectToDevice" id="MicroPythonWebreplDeviceInterface.connectToDevice" ref="eric7.MicroPython.MicroPythonWebreplDeviceInterface.html#MicroPythonWebreplDeviceInterface.connectToDevice" /> + <keyword name="MicroPythonWebreplDeviceInterface.disconnectFromDevice" id="MicroPythonWebreplDeviceInterface.disconnectFromDevice" ref="eric7.MicroPython.MicroPythonWebreplDeviceInterface.html#MicroPythonWebreplDeviceInterface.disconnectFromDevice" /> + <keyword name="MicroPythonWebreplDeviceInterface.execute" id="MicroPythonWebreplDeviceInterface.execute" ref="eric7.MicroPython.MicroPythonWebreplDeviceInterface.html#MicroPythonWebreplDeviceInterface.execute" /> + <keyword name="MicroPythonWebreplDeviceInterface.executeAsync" id="MicroPythonWebreplDeviceInterface.executeAsync" ref="eric7.MicroPython.MicroPythonWebreplDeviceInterface.html#MicroPythonWebreplDeviceInterface.executeAsync" /> + <keyword name="MicroPythonWebreplDeviceInterface.handlePreferencesChanged" id="MicroPythonWebreplDeviceInterface.handlePreferencesChanged" ref="eric7.MicroPython.MicroPythonWebreplDeviceInterface.html#MicroPythonWebreplDeviceInterface.handlePreferencesChanged" /> + <keyword name="MicroPythonWebreplDeviceInterface.isConnected" id="MicroPythonWebreplDeviceInterface.isConnected" ref="eric7.MicroPython.MicroPythonWebreplDeviceInterface.html#MicroPythonWebreplDeviceInterface.isConnected" /> + <keyword name="MicroPythonWebreplDeviceInterface.probeDevice" id="MicroPythonWebreplDeviceInterface.probeDevice" ref="eric7.MicroPython.MicroPythonWebreplDeviceInterface.html#MicroPythonWebreplDeviceInterface.probeDevice" /> + <keyword name="MicroPythonWebreplDeviceInterface.write" id="MicroPythonWebreplDeviceInterface.write" ref="eric7.MicroPython.MicroPythonWebreplDeviceInterface.html#MicroPythonWebreplDeviceInterface.write" /> + <keyword name="MicroPythonWebreplSocket" id="MicroPythonWebreplSocket" ref="eric7.MicroPython.MicroPythonWebreplSocket.html#MicroPythonWebreplSocket" /> + <keyword name="MicroPythonWebreplSocket (Constructor)" id="MicroPythonWebreplSocket (Constructor)" ref="eric7.MicroPython.MicroPythonWebreplSocket.html#MicroPythonWebreplSocket.__init__" /> + <keyword name="MicroPythonWebreplSocket (Module)" id="MicroPythonWebreplSocket (Module)" ref="eric7.MicroPython.MicroPythonWebreplSocket.html" /> + <keyword name="MicroPythonWebreplSocket.__textDataReceived" id="MicroPythonWebreplSocket.__textDataReceived" ref="eric7.MicroPython.MicroPythonWebreplSocket.html#MicroPythonWebreplSocket.__textDataReceived" /> + <keyword name="MicroPythonWebreplSocket.connectToDevice" id="MicroPythonWebreplSocket.connectToDevice" ref="eric7.MicroPython.MicroPythonWebreplSocket.html#MicroPythonWebreplSocket.connectToDevice" /> + <keyword name="MicroPythonWebreplSocket.disconnect" id="MicroPythonWebreplSocket.disconnect" ref="eric7.MicroPython.MicroPythonWebreplSocket.html#MicroPythonWebreplSocket.disconnect" /> + <keyword name="MicroPythonWebreplSocket.hasTimedOut" id="MicroPythonWebreplSocket.hasTimedOut" ref="eric7.MicroPython.MicroPythonWebreplSocket.html#MicroPythonWebreplSocket.hasTimedOut" /> + <keyword name="MicroPythonWebreplSocket.isConnected" id="MicroPythonWebreplSocket.isConnected" ref="eric7.MicroPython.MicroPythonWebreplSocket.html#MicroPythonWebreplSocket.isConnected" /> + <keyword name="MicroPythonWebreplSocket.login" id="MicroPythonWebreplSocket.login" ref="eric7.MicroPython.MicroPythonWebreplSocket.html#MicroPythonWebreplSocket.login" /> + <keyword name="MicroPythonWebreplSocket.readAll" id="MicroPythonWebreplSocket.readAll" ref="eric7.MicroPython.MicroPythonWebreplSocket.html#MicroPythonWebreplSocket.readAll" /> + <keyword name="MicroPythonWebreplSocket.readUntil" id="MicroPythonWebreplSocket.readUntil" ref="eric7.MicroPython.MicroPythonWebreplSocket.html#MicroPythonWebreplSocket.readUntil" /> + <keyword name="MicroPythonWebreplSocket.setTimeout" id="MicroPythonWebreplSocket.setTimeout" ref="eric7.MicroPython.MicroPythonWebreplSocket.html#MicroPythonWebreplSocket.setTimeout" /> + <keyword name="MicroPythonWebreplSocket.timeout" id="MicroPythonWebreplSocket.timeout" ref="eric7.MicroPython.MicroPythonWebreplSocket.html#MicroPythonWebreplSocket.timeout" /> + <keyword name="MicroPythonWebreplSocket.waitForConnected" id="MicroPythonWebreplSocket.waitForConnected" ref="eric7.MicroPython.MicroPythonWebreplSocket.html#MicroPythonWebreplSocket.waitForConnected" /> + <keyword name="MicroPythonWebreplSocket.writeTextMessage" id="MicroPythonWebreplSocket.writeTextMessage" ref="eric7.MicroPython.MicroPythonWebreplSocket.html#MicroPythonWebreplSocket.writeTextMessage" /> + <keyword name="MicroPythonWebreplUrlAddEditDialog" id="MicroPythonWebreplUrlAddEditDialog" ref="eric7.MicroPython.MicroPythonWebreplUrlAddEditDialog.html#MicroPythonWebreplUrlAddEditDialog" /> + <keyword name="MicroPythonWebreplUrlAddEditDialog (Constructor)" id="MicroPythonWebreplUrlAddEditDialog (Constructor)" ref="eric7.MicroPython.MicroPythonWebreplUrlAddEditDialog.html#MicroPythonWebreplUrlAddEditDialog.__init__" /> + <keyword name="MicroPythonWebreplUrlAddEditDialog (Module)" id="MicroPythonWebreplUrlAddEditDialog (Module)" ref="eric7.MicroPython.MicroPythonWebreplUrlAddEditDialog.html" /> + <keyword name="MicroPythonWebreplUrlAddEditDialog.__populateFields" id="MicroPythonWebreplUrlAddEditDialog.__populateFields" ref="eric7.MicroPython.MicroPythonWebreplUrlAddEditDialog.html#MicroPythonWebreplUrlAddEditDialog.__populateFields" /> + <keyword name="MicroPythonWebreplUrlAddEditDialog.__updateOkButton" id="MicroPythonWebreplUrlAddEditDialog.__updateOkButton" ref="eric7.MicroPython.MicroPythonWebreplUrlAddEditDialog.html#MicroPythonWebreplUrlAddEditDialog.__updateOkButton" /> + <keyword name="MicroPythonWebreplUrlAddEditDialog.getWebreplUrl" id="MicroPythonWebreplUrlAddEditDialog.getWebreplUrl" ref="eric7.MicroPython.MicroPythonWebreplUrlAddEditDialog.html#MicroPythonWebreplUrlAddEditDialog.getWebreplUrl" /> + <keyword name="MicroPythonWebreplUrlsConfigDialog" id="MicroPythonWebreplUrlsConfigDialog" ref="eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.html#MicroPythonWebreplUrlsConfigDialog" /> + <keyword name="MicroPythonWebreplUrlsConfigDialog (Constructor)" id="MicroPythonWebreplUrlsConfigDialog (Constructor)" ref="eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.html#MicroPythonWebreplUrlsConfigDialog.__init__" /> + <keyword name="MicroPythonWebreplUrlsConfigDialog (Module)" id="MicroPythonWebreplUrlsConfigDialog (Module)" ref="eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.html" /> + <keyword name="MicroPythonWebreplUrlsConfigDialog.__definedNames" id="MicroPythonWebreplUrlsConfigDialog.__definedNames" ref="eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.html#MicroPythonWebreplUrlsConfigDialog.__definedNames" /> + <keyword name="MicroPythonWebreplUrlsConfigDialog.__resizeColumns" id="MicroPythonWebreplUrlsConfigDialog.__resizeColumns" ref="eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.html#MicroPythonWebreplUrlsConfigDialog.__resizeColumns" /> + <keyword name="MicroPythonWebreplUrlsConfigDialog.__sortItems" id="MicroPythonWebreplUrlsConfigDialog.__sortItems" ref="eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.html#MicroPythonWebreplUrlsConfigDialog.__sortItems" /> + <keyword name="MicroPythonWebreplUrlsConfigDialog.__updateActionButtons" id="MicroPythonWebreplUrlsConfigDialog.__updateActionButtons" ref="eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.html#MicroPythonWebreplUrlsConfigDialog.__updateActionButtons" /> + <keyword name="MicroPythonWebreplUrlsConfigDialog.getWebreplDict" id="MicroPythonWebreplUrlsConfigDialog.getWebreplDict" ref="eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.html#MicroPythonWebreplUrlsConfigDialog.getWebreplDict" /> + <keyword name="MicroPythonWebreplUrlsConfigDialog.on_addButton_clicked" id="MicroPythonWebreplUrlsConfigDialog.on_addButton_clicked" ref="eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.html#MicroPythonWebreplUrlsConfigDialog.on_addButton_clicked" /> + <keyword name="MicroPythonWebreplUrlsConfigDialog.on_editButton_clicked" id="MicroPythonWebreplUrlsConfigDialog.on_editButton_clicked" ref="eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.html#MicroPythonWebreplUrlsConfigDialog.on_editButton_clicked" /> + <keyword name="MicroPythonWebreplUrlsConfigDialog.on_removeAllButton_clicked" id="MicroPythonWebreplUrlsConfigDialog.on_removeAllButton_clicked" ref="eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.html#MicroPythonWebreplUrlsConfigDialog.on_removeAllButton_clicked" /> + <keyword name="MicroPythonWebreplUrlsConfigDialog.on_removeButton_clicked" id="MicroPythonWebreplUrlsConfigDialog.on_removeButton_clicked" ref="eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.html#MicroPythonWebreplUrlsConfigDialog.on_removeButton_clicked" /> <keyword name="MicroPythonWidget" id="MicroPythonWidget" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget" /> <keyword name="MicroPythonWidget (Constructor)" id="MicroPythonWidget (Constructor)" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__init__" /> <keyword name="MicroPythonWidget (Module)" id="MicroPythonWidget (Module)" ref="eric7.MicroPython.MicroPythonWidget.html" /> <keyword name="MicroPythonWidget.__aboutToShowSuperMenu" id="MicroPythonWidget.__aboutToShowSuperMenu" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__aboutToShowSuperMenu" /> <keyword name="MicroPythonWidget.__addUnknownDevices" id="MicroPythonWidget.__addUnknownDevices" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__addUnknownDevices" /> - <keyword name="MicroPythonWidget.__clear" id="MicroPythonWidget.__clear" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__clear" /> <keyword name="MicroPythonWidget.__compileEditor2Mpy" id="MicroPythonWidget.__compileEditor2Mpy" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__compileEditor2Mpy" /> <keyword name="MicroPythonWidget.__compileFile2Mpy" id="MicroPythonWidget.__compileFile2Mpy" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__compileFile2Mpy" /> <keyword name="MicroPythonWidget.__configure" id="MicroPythonWidget.__configure" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__configure" /> + <keyword name="MicroPythonWidget.__configureWebreplUrls" id="MicroPythonWidget.__configureWebreplUrls" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__configureWebreplUrls" /> <keyword name="MicroPythonWidget.__connectToDevice" id="MicroPythonWidget.__connectToDevice" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__connectToDevice" /> <keyword name="MicroPythonWidget.__convertToUF2" id="MicroPythonWidget.__convertToUF2" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__convertToUF2" /> <keyword name="MicroPythonWidget.__crossCompile" id="MicroPythonWidget.__crossCompile" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__crossCompile" /> <keyword name="MicroPythonWidget.__disconnectFromDevice" id="MicroPythonWidget.__disconnectFromDevice" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__disconnectFromDevice" /> - <keyword name="MicroPythonWidget.__doZoom" id="MicroPythonWidget.__doZoom" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__doZoom" /> <keyword name="MicroPythonWidget.__downloadFirmware" id="MicroPythonWidget.__downloadFirmware" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__downloadFirmware" /> <keyword name="MicroPythonWidget.__downloadFromUrl" id="MicroPythonWidget.__downloadFromUrl" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__downloadFromUrl" /> <keyword name="MicroPythonWidget.__flashUF2" id="MicroPythonWidget.__flashUF2" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__flashUF2" /> @@ -10934,15 +11024,10 @@ <keyword name="MicroPythonWidget.__manageIgnored" id="MicroPythonWidget.__manageIgnored" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__manageIgnored" /> <keyword name="MicroPythonWidget.__manageUnknownDevices" id="MicroPythonWidget.__manageUnknownDevices" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__manageUnknownDevices" /> <keyword name="MicroPythonWidget.__mpyCrossAvailable" id="MicroPythonWidget.__mpyCrossAvailable" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__mpyCrossAvailable" /> - <keyword name="MicroPythonWidget.__paste" id="MicroPythonWidget.__paste" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__paste" /> <keyword name="MicroPythonWidget.__populateDeviceTypeComboBox" id="MicroPythonWidget.__populateDeviceTypeComboBox" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__populateDeviceTypeComboBox" /> - <keyword name="MicroPythonWidget.__processData" id="MicroPythonWidget.__processData" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__processData" /> - <keyword name="MicroPythonWidget.__replEditMouseReleaseEvent" id="MicroPythonWidget.__replEditMouseReleaseEvent" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__replEditMouseReleaseEvent" /> - <keyword name="MicroPythonWidget.__setCharFormat" id="MicroPythonWidget.__setCharFormat" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__setCharFormat" /> <keyword name="MicroPythonWidget.__setConnected" id="MicroPythonWidget.__setConnected" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__setConnected" /> <keyword name="MicroPythonWidget.__showBoardInformation" id="MicroPythonWidget.__showBoardInformation" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__showBoardInformation" /> <keyword name="MicroPythonWidget.__showBuiltinModules" id="MicroPythonWidget.__showBuiltinModules" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__showBuiltinModules" /> - <keyword name="MicroPythonWidget.__showContextMenu" id="MicroPythonWidget.__showContextMenu" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__showContextMenu" /> <keyword name="MicroPythonWidget.__showDeviceTime" id="MicroPythonWidget.__showDeviceTime" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__showDeviceTime" /> <keyword name="MicroPythonWidget.__showDeviceVersion" id="MicroPythonWidget.__showDeviceVersion" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__showDeviceVersion" /> <keyword name="MicroPythonWidget.__showDocumentation" id="MicroPythonWidget.__showDocumentation" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__showDocumentation" /> @@ -10953,8 +11038,6 @@ <keyword name="MicroPythonWidget.__synchronizeTime" id="MicroPythonWidget.__synchronizeTime" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.__synchronizeTime" /> <keyword name="MicroPythonWidget.deviceInterface" id="MicroPythonWidget.deviceInterface" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.deviceInterface" /> <keyword name="MicroPythonWidget.deviceSupportsLocalFileAccess" id="MicroPythonWidget.deviceSupportsLocalFileAccess" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.deviceSupportsLocalFileAccess" /> - <keyword name="MicroPythonWidget.eventFilter" id="MicroPythonWidget.eventFilter" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.eventFilter" /> - <keyword name="MicroPythonWidget.getCurrentBoard" id="MicroPythonWidget.getCurrentBoard" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.getCurrentBoard" /> <keyword name="MicroPythonWidget.getCurrentPort" id="MicroPythonWidget.getCurrentPort" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.getCurrentPort" /> <keyword name="MicroPythonWidget.getDevice" id="MicroPythonWidget.getDevice" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.getDevice" /> <keyword name="MicroPythonWidget.getDeviceWorkspace" id="MicroPythonWidget.getDeviceWorkspace" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.getDeviceWorkspace" /> @@ -10964,7 +11047,6 @@ <keyword name="MicroPythonWidget.isLinkConnected" id="MicroPythonWidget.isLinkConnected" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.isLinkConnected" /> <keyword name="MicroPythonWidget.isMicrobit" id="MicroPythonWidget.isMicrobit" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.isMicrobit" /> <keyword name="MicroPythonWidget.on_chartButton_clicked" id="MicroPythonWidget.on_chartButton_clicked" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.on_chartButton_clicked" /> - <keyword name="MicroPythonWidget.on_checkButton_clicked" id="MicroPythonWidget.on_checkButton_clicked" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.on_checkButton_clicked" /> <keyword name="MicroPythonWidget.on_connectButton_clicked" id="MicroPythonWidget.on_connectButton_clicked" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.on_connectButton_clicked" /> <keyword name="MicroPythonWidget.on_deviceTypeComboBox_activated" id="MicroPythonWidget.on_deviceTypeComboBox_activated" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.on_deviceTypeComboBox_activated" /> <keyword name="MicroPythonWidget.on_filesButton_clicked" id="MicroPythonWidget.on_filesButton_clicked" ref="eric7.MicroPython.MicroPythonWidget.html#MicroPythonWidget.on_filesButton_clicked" /> @@ -19188,6 +19270,8 @@ <keyword name="_percentReplacementFunc" id="_percentReplacementFunc" ref="eric7.Utilities.__init__.html#_percentReplacementFunc" /> <keyword name="_prettifyJSON" id="_prettifyJSON" ref="eric7.CycloneDXInterface.CycloneDXUtilities.html#_prettifyJSON" /> <keyword name="_prettifyXML" id="_prettifyXML" ref="eric7.CycloneDXInterface.CycloneDXUtilities.html#_prettifyXML" /> + <keyword name="_printerr" id="_printerr" ref="eric7.Project.UicLoadUi5.html#_printerr" /> + <keyword name="_printerr" id="_printerr" ref="eric7.Project.UicLoadUi6.html#_printerr" /> <keyword name="_printout" id="_printout" ref="eric7.Project.UicLoadUi5.html#_printout" /> <keyword name="_printout" id="_printout" ref="eric7.Project.UicLoadUi6.html#_printout" /> <keyword name="_shallPatch" id="_shallPatch" ref="eric7.DebugClients.Python.MultiProcessDebugExtension.html#_shallPatch" /> @@ -20566,7 +20650,14 @@ <file>eric7.MicroPython.MicroPythonFileSystemUtilities.html</file> <file>eric7.MicroPython.MicroPythonGraphWidget.html</file> <file>eric7.MicroPython.MicroPythonProgressInfoDialog.html</file> + <file>eric7.MicroPython.MicroPythonReplWidget.html</file> + <file>eric7.MicroPython.MicroPythonSerialDeviceInterface.html</file> <file>eric7.MicroPython.MicroPythonSerialPort.html</file> + <file>eric7.MicroPython.MicroPythonWebreplConnectionDialog.html</file> + <file>eric7.MicroPython.MicroPythonWebreplDeviceInterface.html</file> + <file>eric7.MicroPython.MicroPythonWebreplSocket.html</file> + <file>eric7.MicroPython.MicroPythonWebreplUrlAddEditDialog.html</file> + <file>eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.html</file> <file>eric7.MicroPython.MicroPythonWidget.html</file> <file>eric7.MicroPython.MipLocalInstaller.html</file> <file>eric7.MicroPython.MipPackageDialog.html</file>
--- a/src/eric7/Documentation/Source/eric7.MicroPython.Devices.DeviceBase.html Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.Devices.DeviceBase.html Thu May 04 17:58:52 2023 +0200 @@ -251,6 +251,10 @@ <td>Public method to ensure, that the given target path exists.</td> </tr> <tr> +<td><a href="#BaseDevice.executeCommands">executeCommands</a></td> +<td>Public method to send commands to the connected device and return the result.</td> +</tr> +<tr> <td><a href="#BaseDevice.exists">exists</a></td> <td>Public method to check the existence of a file or directory.</td> </tr> @@ -1070,6 +1074,46 @@ target directory </dd> </dl> +<a NAME="BaseDevice.executeCommands" ID="BaseDevice.executeCommands"></a> +<h4>BaseDevice.executeCommands</h4> +<b>executeCommands</b>(<i>commands, *, mode="raw", timeout=0</i>) + +<p> + Public method to send commands to the connected device and return the + result. +</p> +<p> + If no connected interface is available, empty results will be returned. +</p> +<dl> + +<dt><i>commands</i> (str or list of str)</dt> +<dd> +list of commands to be executed +</dd> +<dt><i>mode=</i> (str)</dt> +<dd> +submit mode to be used (one of 'raw' or 'paste') (defaults to + 'raw') +</dd> +<dt><i>timeout=</i> (int (optional))</dt> +<dd> +per command timeout in milliseconds (0 for configured default) + (defaults to 0) +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containing stdout and stderr output of the device +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bytes, bytes) +</dd> +</dl> <a NAME="BaseDevice.exists" ID="BaseDevice.exists"></a> <h4>BaseDevice.exists</h4> <b>exists</b>(<i>pathname</i>)
--- a/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonDeviceInterface.html Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonDeviceInterface.html Thu May 04 17:58:52 2023 +0200 @@ -9,7 +9,7 @@ <h1>eric7.MicroPython.MicroPythonDeviceInterface</h1> <p> -Module implementing some file system commands for MicroPython. +Module implementing an interface base class to talk to a connected MicroPython device. </p> <h3>Global Attributes</h3> @@ -43,14 +43,18 @@ <dt>dataReceived(data)</dt> <dd> -emitted to send data received via the serial - connection for further processing +emitted to send data received via the connection + for further processing </dd> <dt>executeAsyncFinished()</dt> <dd> emitted to indicate the end of an asynchronously executed list of commands (e.g. a script) </dd> +<dt>osdInfo(str)</dt> +<dd> +emitted when some OSD data was received from the device +</dd> </dl> <h3>Derived from</h3> QObject @@ -73,40 +77,12 @@ <td>Constructor</td> </tr> <tr> -<td><a href="#MicroPythonDeviceInterface.__execute_paste">__execute_paste</a></td> -<td>Private method to send commands to the connected device using 'paste' mode and return the result.</td> -</tr> -<tr> -<td><a href="#MicroPythonDeviceInterface.__execute_raw">__execute_raw</a></td> -<td>Private method to send commands to the connected device using 'raw REPL' mode and return the result.</td> -</tr> -<tr> -<td><a href="#MicroPythonDeviceInterface.__pasteOff">__pasteOff</a></td> -<td>Private method to switch 'paste' mode off.</td> -</tr> -<tr> -<td><a href="#MicroPythonDeviceInterface.__pasteOn">__pasteOn</a></td> -<td>Private method to switch the connected device to 'paste' mode.</td> -</tr> -<tr> -<td><a href="#MicroPythonDeviceInterface.__rawOff">__rawOff</a></td> -<td>Private method to switch 'raw' mode off.</td> -</tr> -<tr> -<td><a href="#MicroPythonDeviceInterface.__rawOn">__rawOn</a></td> -<td>Private method to switch the connected device to 'raw' mode.</td> -</tr> -<tr> -<td><a href="#MicroPythonDeviceInterface.__readSerial">__readSerial</a></td> -<td>Private slot to read all available serial data and emit it with the "dataReceived" signal for further processing.</td> -</tr> -<tr> <td><a href="#MicroPythonDeviceInterface.connectToDevice">connectToDevice</a></td> -<td>Public slot to start the manager.</td> +<td>Public slot to connect to the device.</td> </tr> <tr> <td><a href="#MicroPythonDeviceInterface.disconnectFromDevice">disconnectFromDevice</a></td> -<td>Public slot to stop the thread.</td> +<td>Public slot to disconnect from the device.</td> </tr> <tr> <td><a href="#MicroPythonDeviceInterface.execute">execute</a></td> @@ -117,10 +93,6 @@ <td>Public method to execute a series of commands over a period of time without returning any result (asynchronous execution).</td> </tr> <tr> -<td><a href="#MicroPythonDeviceInterface.executeAsyncPaste">executeAsyncPaste</a></td> -<td>Public method to execute a series of commands over a period of time without returning any result (asynchronous execution).</td> -</tr> -<tr> <td><a href="#MicroPythonDeviceInterface.handlePreferencesChanged">handlePreferencesChanged</a></td> <td>Public slot to handle a change of the preferences.</td> </tr> @@ -157,154 +129,18 @@ reference to the parent object </dd> </dl> -<a NAME="MicroPythonDeviceInterface.__execute_paste" ID="MicroPythonDeviceInterface.__execute_paste"></a> -<h4>MicroPythonDeviceInterface.__execute_paste</h4> -<b>__execute_paste</b>(<i>commands, timeout=0</i>) +<a NAME="MicroPythonDeviceInterface.connectToDevice" ID="MicroPythonDeviceInterface.connectToDevice"></a> +<h4>MicroPythonDeviceInterface.connectToDevice</h4> +<b>connectToDevice</b>(<i>connection</i>) <p> - Private method to send commands to the connected device using 'paste' mode - and return the result. -</p> -<p> - If no serial connection is available, empty results will be returned. -</p> -<dl> - -<dt><i>commands</i> (str or list of str)</dt> -<dd> -list of commands to be executed -</dd> -<dt><i>timeout</i> (int (optional))</dt> -<dd> -per command timeout in milliseconds (0 for configured default) - (defaults to 0) -</dd> -</dl> -<dl> -<dt>Return:</dt> -<dd> -tuple containing stdout and stderr output of the device -</dd> -</dl> -<dl> -<dt>Return Type:</dt> -<dd> -tuple of (bytes, bytes) -</dd> -</dl> -<a NAME="MicroPythonDeviceInterface.__execute_raw" ID="MicroPythonDeviceInterface.__execute_raw"></a> -<h4>MicroPythonDeviceInterface.__execute_raw</h4> -<b>__execute_raw</b>(<i>commands, timeout=0</i>) - -<p> - Private method to send commands to the connected device using 'raw REPL' mode - and return the result. -</p> -<p> - If no serial connection is available, empty results will be returned. + Public slot to connect to the device. </p> <dl> -<dt><i>commands</i> (str or list of str)</dt> -<dd> -list of commands to be executed -</dd> -<dt><i>timeout</i> (int (optional))</dt> -<dd> -per command timeout in milliseconds (0 for configured default) - (defaults to 0) -</dd> -</dl> -<dl> -<dt>Return:</dt> -<dd> -tuple containing stdout and stderr output of the device -</dd> -</dl> -<dl> -<dt>Return Type:</dt> -<dd> -tuple of (bytes, bytes) -</dd> -</dl> -<a NAME="MicroPythonDeviceInterface.__pasteOff" ID="MicroPythonDeviceInterface.__pasteOff"></a> -<h4>MicroPythonDeviceInterface.__pasteOff</h4> -<b>__pasteOff</b>(<i></i>) - -<p> - Private method to switch 'paste' mode off. -</p> -<a NAME="MicroPythonDeviceInterface.__pasteOn" ID="MicroPythonDeviceInterface.__pasteOn"></a> -<h4>MicroPythonDeviceInterface.__pasteOn</h4> -<b>__pasteOn</b>(<i></i>) - -<p> - Private method to switch the connected device to 'paste' mode. -</p> -<p> - Note: switching to paste mode is done with synchronous writes. -</p> -<dl> -<dt>Return:</dt> -<dd> -flag indicating success -</dd> -</dl> -<dl> -<dt>Return Type:</dt> +<dt><i>connection</i> (str)</dt> <dd> -bool -</dd> -</dl> -<a NAME="MicroPythonDeviceInterface.__rawOff" ID="MicroPythonDeviceInterface.__rawOff"></a> -<h4>MicroPythonDeviceInterface.__rawOff</h4> -<b>__rawOff</b>(<i></i>) - -<p> - Private method to switch 'raw' mode off. -</p> -<a NAME="MicroPythonDeviceInterface.__rawOn" ID="MicroPythonDeviceInterface.__rawOn"></a> -<h4>MicroPythonDeviceInterface.__rawOn</h4> -<b>__rawOn</b>(<i></i>) - -<p> - Private method to switch the connected device to 'raw' mode. -</p> -<p> - Note: switching to raw mode is done with synchronous writes. -</p> -<dl> -<dt>Return:</dt> -<dd> -flag indicating success -</dd> -</dl> -<dl> -<dt>Return Type:</dt> -<dd> -bool -</dd> -</dl> -<a NAME="MicroPythonDeviceInterface.__readSerial" ID="MicroPythonDeviceInterface.__readSerial"></a> -<h4>MicroPythonDeviceInterface.__readSerial</h4> -<b>__readSerial</b>(<i></i>) - -<p> - Private slot to read all available serial data and emit it with the - "dataReceived" signal for further processing. -</p> -<a NAME="MicroPythonDeviceInterface.connectToDevice" ID="MicroPythonDeviceInterface.connectToDevice"></a> -<h4>MicroPythonDeviceInterface.connectToDevice</h4> -<b>connectToDevice</b>(<i>port</i>) - -<p> - Public slot to start the manager. -</p> -<dl> - -<dt><i>port</i> (str)</dt> -<dd> -name of the port to be used +name of the connection to be used </dd> </dl> <dl> @@ -319,13 +155,29 @@ bool </dd> </dl> +<dl> + +<dt>Raises <b>NotImplementedError</b>:</dt> +<dd> +raised to indicate that this method needs to + be implemented in a derived class +</dd> +</dl> <a NAME="MicroPythonDeviceInterface.disconnectFromDevice" ID="MicroPythonDeviceInterface.disconnectFromDevice"></a> <h4>MicroPythonDeviceInterface.disconnectFromDevice</h4> <b>disconnectFromDevice</b>(<i></i>) <p> - Public slot to stop the thread. + Public slot to disconnect from the device. </p> +<dl> + +<dt>Raises <b>NotImplementedError</b>:</dt> +<dd> +raised to indicate that this method needs to + be implemented in a derived class +</dd> +</dl> <a NAME="MicroPythonDeviceInterface.execute" ID="MicroPythonDeviceInterface.execute"></a> <h4>MicroPythonDeviceInterface.execute</h4> <b>execute</b>(<i>commands, *, mode="raw", timeout=0</i>) @@ -335,7 +187,7 @@ result. </p> <p> - If no serial connection is available, empty results will be returned. + If no connection is available, empty results will be returned. </p> <dl> @@ -368,6 +220,11 @@ </dl> <dl> +<dt>Raises <b>NotImplementedError</b>:</dt> +<dd> +raised to indicate that this method needs to + be implemented in a derived class +</dd> <dt>Raises <b>ValueError</b>:</dt> <dd> raised in case of an unsupported submit mode @@ -375,7 +232,7 @@ </dl> <a NAME="MicroPythonDeviceInterface.executeAsync" ID="MicroPythonDeviceInterface.executeAsync"></a> <h4>MicroPythonDeviceInterface.executeAsync</h4> -<b>executeAsync</b>(<i>commandsList</i>) +<b>executeAsync</b>(<i>commandsList, submitMode</i>) <p> Public method to execute a series of commands over a period of time @@ -383,24 +240,26 @@ </p> <dl> -<dt><i>commandsList</i> (list of bytes)</dt> +<dt><i>commandsList</i> (list of str)</dt> <dd> list of commands to be execute on the device </dd> +<dt><i>submitMode</i> (str)</dt> +<dd> +mode to be used to submit the commands (one of 'raw' + or 'paste') +</dd> </dl> -<a NAME="MicroPythonDeviceInterface.executeAsyncPaste" ID="MicroPythonDeviceInterface.executeAsyncPaste"></a> -<h4>MicroPythonDeviceInterface.executeAsyncPaste</h4> -<b>executeAsyncPaste</b>(<i>commandsList</i>) - -<p> - Public method to execute a series of commands over a period of time - without returning any result (asynchronous execution). -</p> <dl> -<dt><i>commandsList</i> (list of bytes)</dt> +<dt>Raises <b>NotImplementedError</b>:</dt> <dd> -list of commands to be execute on the device +raised to indicate that this method needs to + be implemented in a derived class +</dd> +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate an unknown submit mode </dd> </dl> <a NAME="MicroPythonDeviceInterface.handlePreferencesChanged" ID="MicroPythonDeviceInterface.handlePreferencesChanged"></a> @@ -429,6 +288,14 @@ bool </dd> </dl> +<dl> + +<dt>Raises <b>NotImplementedError</b>:</dt> +<dd> +raised to indicate that this method needs to + be implemented in a derived class +</dd> +</dl> <a NAME="MicroPythonDeviceInterface.probeDevice" ID="MicroPythonDeviceInterface.probeDevice"></a> <h4>MicroPythonDeviceInterface.probeDevice</h4> <b>probeDevice</b>(<i></i>) @@ -437,7 +304,7 @@ Public method to check the device is responding. </p> <p> - If the device has not been flashed with a MicroPython formware, the + If the device has not been flashed with a MicroPython firmware, the probe will fail. </p> <dl> @@ -452,6 +319,14 @@ bool </dd> </dl> +<dl> + +<dt>Raises <b>NotImplementedError</b>:</dt> +<dd> +raised to indicate that this method needs to + be implemented in a derived class +</dd> +</dl> <a NAME="MicroPythonDeviceInterface.write" ID="MicroPythonDeviceInterface.write"></a> <h4>MicroPythonDeviceInterface.write</h4> <b>write</b>(<i>data</i>) @@ -466,6 +341,14 @@ data to be written </dd> </dl> +<dl> + +<dt>Raises <b>NotImplementedError</b>:</dt> +<dd> +raised to indicate that this method needs to + be implemented in a derived class +</dd> +</dl> <div align="right"><a href="#top">Up</a></div> <hr /> </body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonReplWidget.html Thu May 04 17:58:52 2023 +0200 @@ -0,0 +1,421 @@ +<!DOCTYPE html> +<html><head> +<title>eric7.MicroPython.MicroPythonReplWidget</title> +<meta charset="UTF-8"> +<link rel="stylesheet" href="styles.css"> +</head> +<body> +<a NAME="top" ID="top"></a> +<h1>eric7.MicroPython.MicroPythonReplWidget</h1> + +<p> +Module implementing the MicroPython REPL widget. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>AnsiColorSchemes</td></tr> +</table> +<h3>Classes</h3> + +<table> + +<tr> +<td><a href="#MicroPythonReplEdit">MicroPythonReplEdit</a></td> +<td>Class implementing the REPL edit pane.</td> +</tr> +<tr> +<td><a href="#MicroPythonReplWidget">MicroPythonReplWidget</a></td> +<td>Class implementing the MicroPython REPL widget.</td> +</tr> +</table> +<h3>Functions</h3> + +<table> +<tr><td>None</td></tr> +</table> +<hr /> +<hr /> +<a NAME="MicroPythonReplEdit" ID="MicroPythonReplEdit"></a> +<h2>MicroPythonReplEdit</h2> + +<p> + Class implementing the REPL edit pane. +</p> +<h3>Signals</h3> +<dl> + +<dt>osdInfo(str)</dt> +<dd> +emitted when some OSD data was received from the device +</dd> +</dl> +<h3>Derived from</h3> +QTextEdit +<h3>Class Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> + +<table> + +<tr> +<td><a href="#MicroPythonReplEdit.__init__">MicroPythonReplEdit</a></td> +<td>Constructor</td> +</tr> +<tr> +<td><a href="#MicroPythonReplEdit.__clear">__clear</a></td> +<td>Private slot to clear the REPL pane.</td> +</tr> +<tr> +<td><a href="#MicroPythonReplEdit.__paste">__paste</a></td> +<td>Private slot to perform a paste operation.</td> +</tr> +<tr> +<td><a href="#MicroPythonReplEdit.__setCharFormat">__setCharFormat</a></td> +<td>Private method setting the current text format of the REPL pane based on the passed ANSI codes.</td> +</tr> +<tr> +<td><a href="#MicroPythonReplEdit.__showContextMenu">__showContextMenu</a></td> +<td>Private slot to show the REPL context menu.</td> +</tr> +<tr> +<td><a href="#MicroPythonReplEdit.doZoom">doZoom</a></td> +<td>Public slot to zoom in or out.</td> +</tr> +<tr> +<td><a href="#MicroPythonReplEdit.handlePreferencesChanged">handlePreferencesChanged</a></td> +<td>Public slot to handle a change in preferences.</td> +</tr> +<tr> +<td><a href="#MicroPythonReplEdit.keyPressEvent">keyPressEvent</a></td> +<td>Protected method to handle key press events.</td> +</tr> +<tr> +<td><a href="#MicroPythonReplEdit.mouseReleaseEvent">mouseReleaseEvent</a></td> +<td>Protected method to handle mouse release events.</td> +</tr> +<tr> +<td><a href="#MicroPythonReplEdit.processData">processData</a></td> +<td>Public slot to process the data received from the device.</td> +</tr> +<tr> +<td><a href="#MicroPythonReplEdit.setInterface">setInterface</a></td> +<td>Public method to set the reference to the device interface object.</td> +</tr> +</table> +<h3>Static Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> + +<a NAME="MicroPythonReplEdit.__init__" ID="MicroPythonReplEdit.__init__"></a> +<h4>MicroPythonReplEdit (Constructor)</h4> +<b>MicroPythonReplEdit</b>(<i>parent=None</i>) + +<p> + Constructor +</p> +<dl> + +<dt><i>parent</i> (QWidget (optional))</dt> +<dd> +reference to the parent widget (defaults to None) +</dd> +</dl> +<a NAME="MicroPythonReplEdit.__clear" ID="MicroPythonReplEdit.__clear"></a> +<h4>MicroPythonReplEdit.__clear</h4> +<b>__clear</b>(<i></i>) + +<p> + Private slot to clear the REPL pane. +</p> +<a NAME="MicroPythonReplEdit.__paste" ID="MicroPythonReplEdit.__paste"></a> +<h4>MicroPythonReplEdit.__paste</h4> +<b>__paste</b>(<i>mode=QClipboard.Mode.Clipboard</i>) + +<p> + Private slot to perform a paste operation. +</p> +<dl> + +<dt><i>mode</i> (QClipboard.Mode (optional))</dt> +<dd> +paste mode (defaults to QClipboard.Mode.Clipboard) +</dd> +</dl> +<a NAME="MicroPythonReplEdit.__setCharFormat" ID="MicroPythonReplEdit.__setCharFormat"></a> +<h4>MicroPythonReplEdit.__setCharFormat</h4> +<b>__setCharFormat</b>(<i>formatCodes, textCursor</i>) + +<p> + Private method setting the current text format of the REPL pane based + on the passed ANSI codes. +</p> +<p> + Following codes are used: + <ul> + <li>0: Reset</li> + <li>1: Bold font (weight 75)</li> + <li>2: Light font (weight 25)</li> + <li>3: Italic font</li> + <li>4: Underlined font</li> + <li>9: Strikeout font</li> + <li>21: Bold off (weight 50)</li> + <li>22: Light off (weight 50)</li> + <li>23: Italic off</li> + <li>24: Underline off</li> + <li>29: Strikeout off</li> + <li>30: foreground Black</li> + <li>31: foreground Dark Red</li> + <li>32: foreground Dark Green</li> + <li>33: foreground Dark Yellow</li> + <li>34: foreground Dark Blue</li> + <li>35: foreground Dark Magenta</li> + <li>36: foreground Dark Cyan</li> + <li>37: foreground Light Gray</li> + <li>39: reset foreground to default</li> + <li>40: background Black</li> + <li>41: background Dark Red</li> + <li>42: background Dark Green</li> + <li>43: background Dark Yellow</li> + <li>44: background Dark Blue</li> + <li>45: background Dark Magenta</li> + <li>46: background Dark Cyan</li> + <li>47: background Light Gray</li> + <li>49: reset background to default</li> + <li>53: Overlined font</li> + <li>55: Overline off</li> + <li>90: bright foreground Dark Gray</li> + <li>91: bright foreground Red</li> + <li>92: bright foreground Green</li> + <li>93: bright foreground Yellow</li> + <li>94: bright foreground Blue</li> + <li>95: bright foreground Magenta</li> + <li>96: bright foreground Cyan</li> + <li>97: bright foreground White</li> + <li>100: bright background Dark Gray</li> + <li>101: bright background Red</li> + <li>102: bright background Green</li> + <li>103: bright background Yellow</li> + <li>104: bright background Blue</li> + <li>105: bright background Magenta</li> + <li>106: bright background Cyan</li> + <li>107: bright background White</li> + </ul> +</p> +<dl> + +<dt><i>formatCodes</i> (list of str)</dt> +<dd> +list of format codes +</dd> +<dt><i>textCursor</i> (QTextCursor)</dt> +<dd> +reference to the text cursor +</dd> +</dl> +<a NAME="MicroPythonReplEdit.__showContextMenu" ID="MicroPythonReplEdit.__showContextMenu"></a> +<h4>MicroPythonReplEdit.__showContextMenu</h4> +<b>__showContextMenu</b>(<i>pos</i>) + +<p> + Private slot to show the REPL context menu. +</p> +<dl> + +<dt><i>pos</i> (QPoint)</dt> +<dd> +position to show the menu at +</dd> +</dl> +<a NAME="MicroPythonReplEdit.doZoom" ID="MicroPythonReplEdit.doZoom"></a> +<h4>MicroPythonReplEdit.doZoom</h4> +<b>doZoom</b>(<i>value</i>) + +<p> + Public slot to zoom in or out. +</p> +<dl> + +<dt><i>value</i> (int)</dt> +<dd> +zoom value +</dd> +</dl> +<a NAME="MicroPythonReplEdit.handlePreferencesChanged" ID="MicroPythonReplEdit.handlePreferencesChanged"></a> +<h4>MicroPythonReplEdit.handlePreferencesChanged</h4> +<b>handlePreferencesChanged</b>(<i></i>) + +<p> + Public slot to handle a change in preferences. +</p> +<a NAME="MicroPythonReplEdit.keyPressEvent" ID="MicroPythonReplEdit.keyPressEvent"></a> +<h4>MicroPythonReplEdit.keyPressEvent</h4> +<b>keyPressEvent</b>(<i>evt</i>) + +<p> + Protected method to handle key press events. +</p> +<dl> + +<dt><i>evt</i> (QKeyEvent)</dt> +<dd> +reference to the key press event +</dd> +</dl> +<a NAME="MicroPythonReplEdit.mouseReleaseEvent" ID="MicroPythonReplEdit.mouseReleaseEvent"></a> +<h4>MicroPythonReplEdit.mouseReleaseEvent</h4> +<b>mouseReleaseEvent</b>(<i>evt</i>) + +<p> + Protected method to handle mouse release events. +</p> +<dl> + +<dt><i>evt</i> (QMouseEvent)</dt> +<dd> +reference to the event object +</dd> +</dl> +<a NAME="MicroPythonReplEdit.processData" ID="MicroPythonReplEdit.processData"></a> +<h4>MicroPythonReplEdit.processData</h4> +<b>processData</b>(<i>data</i>) + +<p> + Public slot to process the data received from the device. +</p> +<dl> + +<dt><i>data</i> (bytes)</dt> +<dd> +data received from the device +</dd> +</dl> +<a NAME="MicroPythonReplEdit.setInterface" ID="MicroPythonReplEdit.setInterface"></a> +<h4>MicroPythonReplEdit.setInterface</h4> +<b>setInterface</b>(<i>deviceInterface</i>) + +<p> + Public method to set the reference to the device interface object. +</p> +<dl> + +<dt><i>deviceInterface</i> (MicroPythonDeviceInterface)</dt> +<dd> +reference to the device interface object +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="MicroPythonReplWidget" ID="MicroPythonReplWidget"></a> +<h2>MicroPythonReplWidget</h2> + +<p> + Class implementing the MicroPython REPL widget. +</p> +<h3>Derived from</h3> +QWidget +<h3>Class Attributes</h3> + +<table> +<tr><td>ZoomMax</td></tr><tr><td>ZoomMin</td></tr> +</table> +<h3>Class Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> + +<table> + +<tr> +<td><a href="#MicroPythonReplWidget.__init__">MicroPythonReplWidget</a></td> +<td>Constructor</td> +</tr> +<tr> +<td><a href="#MicroPythonReplWidget.clearOSD">clearOSD</a></td> +<td>Public slot to clear the OSD info.</td> +</tr> +<tr> +<td><a href="#MicroPythonReplWidget.replEdit">replEdit</a></td> +<td>Public method to get a reference to the REPL edit.</td> +</tr> +<tr> +<td><a href="#MicroPythonReplWidget.setOSDInfo">setOSDInfo</a></td> +<td>Public slot to set the OSD information.</td> +</tr> +</table> +<h3>Static Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> + +<a NAME="MicroPythonReplWidget.__init__" ID="MicroPythonReplWidget.__init__"></a> +<h4>MicroPythonReplWidget (Constructor)</h4> +<b>MicroPythonReplWidget</b>(<i>parent=None</i>) + +<p> + Constructor +</p> +<dl> + +<dt><i>parent</i> (QWidget (optional))</dt> +<dd> +reference to the parent widget (defaults to None) +</dd> +</dl> +<a NAME="MicroPythonReplWidget.clearOSD" ID="MicroPythonReplWidget.clearOSD"></a> +<h4>MicroPythonReplWidget.clearOSD</h4> +<b>clearOSD</b>(<i></i>) + +<p> + Public slot to clear the OSD info. +</p> +<a NAME="MicroPythonReplWidget.replEdit" ID="MicroPythonReplWidget.replEdit"></a> +<h4>MicroPythonReplWidget.replEdit</h4> +<b>replEdit</b>(<i></i>) + +<p> + Public method to get a reference to the REPL edit. +</p> +<dl> +<dt>Return:</dt> +<dd> +reference to the REPL edit +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +MicroPythonReplEdit +</dd> +</dl> +<a NAME="MicroPythonReplWidget.setOSDInfo" ID="MicroPythonReplWidget.setOSDInfo"></a> +<h4>MicroPythonReplWidget.setOSDInfo</h4> +<b>setOSDInfo</b>(<i>infoStr</i>) + +<p> + Public slot to set the OSD information. +</p> +<dl> + +<dt><i>infoStr</i> (str)</dt> +<dd> +string to be shown +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonSerialDeviceInterface.html Thu May 04 17:58:52 2023 +0200 @@ -0,0 +1,489 @@ +<!DOCTYPE html> +<html><head> +<title>eric7.MicroPython.MicroPythonSerialDeviceInterface</title> +<meta charset="UTF-8"> +<link rel="stylesheet" href="styles.css"> +</head> +<body> +<a NAME="top" ID="top"></a> +<h1>eric7.MicroPython.MicroPythonSerialDeviceInterface</h1> + +<p> +Module implementing an interface to talk to a connected MicroPython device via +a serial link. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> + +<tr> +<td><a href="#MicroPythonSerialDeviceInterface">MicroPythonSerialDeviceInterface</a></td> +<td>Class implementing an interface to talk to a connected MicroPython device via a serial link.</td> +</tr> +</table> +<h3>Functions</h3> + +<table> +<tr><td>None</td></tr> +</table> +<hr /> +<hr /> +<a NAME="MicroPythonSerialDeviceInterface" ID="MicroPythonSerialDeviceInterface"></a> +<h2>MicroPythonSerialDeviceInterface</h2> + +<p> + Class implementing an interface to talk to a connected MicroPython device via + a serial link. +</p> +<h3>Derived from</h3> +MicroPythonDeviceInterface +<h3>Class Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> + +<table> + +<tr> +<td><a href="#MicroPythonSerialDeviceInterface.__init__">MicroPythonSerialDeviceInterface</a></td> +<td>Constructor</td> +</tr> +<tr> +<td><a href="#MicroPythonSerialDeviceInterface.__executeAsyncPaste">__executeAsyncPaste</a></td> +<td>Private method to execute a series of commands over a period of time without returning any result (asynchronous execution).</td> +</tr> +<tr> +<td><a href="#MicroPythonSerialDeviceInterface.__executeAsyncRaw">__executeAsyncRaw</a></td> +<td>Private method to execute a series of commands over a period of time without returning any result (asynchronous execution).</td> +</tr> +<tr> +<td><a href="#MicroPythonSerialDeviceInterface.__execute_paste">__execute_paste</a></td> +<td>Private method to send commands to the connected device using 'paste' mode and return the result.</td> +</tr> +<tr> +<td><a href="#MicroPythonSerialDeviceInterface.__execute_raw">__execute_raw</a></td> +<td>Private method to send commands to the connected device using 'raw REPL' mode and return the result.</td> +</tr> +<tr> +<td><a href="#MicroPythonSerialDeviceInterface.__pasteOff">__pasteOff</a></td> +<td>Private method to switch 'paste' mode off.</td> +</tr> +<tr> +<td><a href="#MicroPythonSerialDeviceInterface.__pasteOn">__pasteOn</a></td> +<td>Private method to switch the connected device to 'paste' mode.</td> +</tr> +<tr> +<td><a href="#MicroPythonSerialDeviceInterface.__rawOff">__rawOff</a></td> +<td>Private method to switch 'raw' mode off.</td> +</tr> +<tr> +<td><a href="#MicroPythonSerialDeviceInterface.__rawOn">__rawOn</a></td> +<td>Private method to switch the connected device to 'raw' mode.</td> +</tr> +<tr> +<td><a href="#MicroPythonSerialDeviceInterface.__readSerial">__readSerial</a></td> +<td>Private slot to read all available serial data and emit it with the "dataReceived" signal for further processing.</td> +</tr> +<tr> +<td><a href="#MicroPythonSerialDeviceInterface.connectToDevice">connectToDevice</a></td> +<td>Public slot to connect to the device.</td> +</tr> +<tr> +<td><a href="#MicroPythonSerialDeviceInterface.disconnectFromDevice">disconnectFromDevice</a></td> +<td>Public slot to disconnect from the device.</td> +</tr> +<tr> +<td><a href="#MicroPythonSerialDeviceInterface.execute">execute</a></td> +<td>Public method to send commands to the connected device and return the result.</td> +</tr> +<tr> +<td><a href="#MicroPythonSerialDeviceInterface.executeAsync">executeAsync</a></td> +<td>Public method to execute a series of commands over a period of time without returning any result (asynchronous execution).</td> +</tr> +<tr> +<td><a href="#MicroPythonSerialDeviceInterface.handlePreferencesChanged">handlePreferencesChanged</a></td> +<td>Public slot to handle a change of the preferences.</td> +</tr> +<tr> +<td><a href="#MicroPythonSerialDeviceInterface.isConnected">isConnected</a></td> +<td>Public method to get the connection status.</td> +</tr> +<tr> +<td><a href="#MicroPythonSerialDeviceInterface.probeDevice">probeDevice</a></td> +<td>Public method to check the device is responding.</td> +</tr> +<tr> +<td><a href="#MicroPythonSerialDeviceInterface.write">write</a></td> +<td>Public method to write data to the connected device.</td> +</tr> +</table> +<h3>Static Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> + +<a NAME="MicroPythonSerialDeviceInterface.__init__" ID="MicroPythonSerialDeviceInterface.__init__"></a> +<h4>MicroPythonSerialDeviceInterface (Constructor)</h4> +<b>MicroPythonSerialDeviceInterface</b>(<i>parent=None</i>) + +<p> + Constructor +</p> +<dl> + +<dt><i>parent</i> (QObject)</dt> +<dd> +reference to the parent object +</dd> +</dl> +<a NAME="MicroPythonSerialDeviceInterface.__executeAsyncPaste" ID="MicroPythonSerialDeviceInterface.__executeAsyncPaste"></a> +<h4>MicroPythonSerialDeviceInterface.__executeAsyncPaste</h4> +<b>__executeAsyncPaste</b>(<i>commandsList</i>) + +<p> + Private method to execute a series of commands over a period of time + without returning any result (asynchronous execution). +</p> +<dl> + +<dt><i>commandsList</i> (list of str)</dt> +<dd> +list of commands to be execute on the device +</dd> +</dl> +<a NAME="MicroPythonSerialDeviceInterface.__executeAsyncRaw" ID="MicroPythonSerialDeviceInterface.__executeAsyncRaw"></a> +<h4>MicroPythonSerialDeviceInterface.__executeAsyncRaw</h4> +<b>__executeAsyncRaw</b>(<i>commandsList</i>) + +<p> + Private method to execute a series of commands over a period of time + without returning any result (asynchronous execution). +</p> +<dl> + +<dt><i>commandsList</i> (list of bytes)</dt> +<dd> +list of commands to be execute on the device +</dd> +</dl> +<a NAME="MicroPythonSerialDeviceInterface.__execute_paste" ID="MicroPythonSerialDeviceInterface.__execute_paste"></a> +<h4>MicroPythonSerialDeviceInterface.__execute_paste</h4> +<b>__execute_paste</b>(<i>commands, timeout=0</i>) + +<p> + Private method to send commands to the connected device using 'paste' mode + and return the result. +</p> +<p> + If no serial connection is available, empty results will be returned. +</p> +<dl> + +<dt><i>commands</i> (str or list of str)</dt> +<dd> +list of commands to be executed +</dd> +<dt><i>timeout</i> (int (optional))</dt> +<dd> +per command timeout in milliseconds (0 for configured default) + (defaults to 0) +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containing stdout and stderr output of the device +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bytes, bytes) +</dd> +</dl> +<a NAME="MicroPythonSerialDeviceInterface.__execute_raw" ID="MicroPythonSerialDeviceInterface.__execute_raw"></a> +<h4>MicroPythonSerialDeviceInterface.__execute_raw</h4> +<b>__execute_raw</b>(<i>commands, timeout=0</i>) + +<p> + Private method to send commands to the connected device using 'raw REPL' mode + and return the result. +</p> +<p> + If no serial connection is available, empty results will be returned. +</p> +<dl> + +<dt><i>commands</i> (str or list of str)</dt> +<dd> +list of commands to be executed +</dd> +<dt><i>timeout</i> (int (optional))</dt> +<dd> +per command timeout in milliseconds (0 for configured default) + (defaults to 0) +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containing stdout and stderr output of the device +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bytes, bytes) +</dd> +</dl> +<a NAME="MicroPythonSerialDeviceInterface.__pasteOff" ID="MicroPythonSerialDeviceInterface.__pasteOff"></a> +<h4>MicroPythonSerialDeviceInterface.__pasteOff</h4> +<b>__pasteOff</b>(<i></i>) + +<p> + Private method to switch 'paste' mode off. +</p> +<a NAME="MicroPythonSerialDeviceInterface.__pasteOn" ID="MicroPythonSerialDeviceInterface.__pasteOn"></a> +<h4>MicroPythonSerialDeviceInterface.__pasteOn</h4> +<b>__pasteOn</b>(<i></i>) + +<p> + Private method to switch the connected device to 'paste' mode. +</p> +<p> + Note: switching to paste mode is done with synchronous writes. +</p> +<dl> +<dt>Return:</dt> +<dd> +flag indicating success +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="MicroPythonSerialDeviceInterface.__rawOff" ID="MicroPythonSerialDeviceInterface.__rawOff"></a> +<h4>MicroPythonSerialDeviceInterface.__rawOff</h4> +<b>__rawOff</b>(<i></i>) + +<p> + Private method to switch 'raw' mode off. +</p> +<a NAME="MicroPythonSerialDeviceInterface.__rawOn" ID="MicroPythonSerialDeviceInterface.__rawOn"></a> +<h4>MicroPythonSerialDeviceInterface.__rawOn</h4> +<b>__rawOn</b>(<i></i>) + +<p> + Private method to switch the connected device to 'raw' mode. +</p> +<p> + Note: switching to raw mode is done with synchronous writes. +</p> +<dl> +<dt>Return:</dt> +<dd> +flag indicating success +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="MicroPythonSerialDeviceInterface.__readSerial" ID="MicroPythonSerialDeviceInterface.__readSerial"></a> +<h4>MicroPythonSerialDeviceInterface.__readSerial</h4> +<b>__readSerial</b>(<i></i>) + +<p> + Private slot to read all available serial data and emit it with the + "dataReceived" signal for further processing. +</p> +<a NAME="MicroPythonSerialDeviceInterface.connectToDevice" ID="MicroPythonSerialDeviceInterface.connectToDevice"></a> +<h4>MicroPythonSerialDeviceInterface.connectToDevice</h4> +<b>connectToDevice</b>(<i>connection</i>) + +<p> + Public slot to connect to the device. +</p> +<dl> + +<dt><i>connection</i> (str)</dt> +<dd> +name of the connection to be used +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +flag indicating success +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="MicroPythonSerialDeviceInterface.disconnectFromDevice" ID="MicroPythonSerialDeviceInterface.disconnectFromDevice"></a> +<h4>MicroPythonSerialDeviceInterface.disconnectFromDevice</h4> +<b>disconnectFromDevice</b>(<i></i>) + +<p> + Public slot to disconnect from the device. +</p> +<a NAME="MicroPythonSerialDeviceInterface.execute" ID="MicroPythonSerialDeviceInterface.execute"></a> +<h4>MicroPythonSerialDeviceInterface.execute</h4> +<b>execute</b>(<i>commands, *, mode="raw", timeout=0</i>) + +<p> + Public method to send commands to the connected device and return the + result. +</p> +<p> + If no serial connection is available, empty results will be returned. +</p> +<dl> + +<dt><i>commands</i> (str or list of str)</dt> +<dd> +list of commands to be executed +</dd> +<dt><i>mode=</i> (str)</dt> +<dd> +submit mode to be used (one of 'raw' or 'paste') (defaults to + 'raw') +</dd> +<dt><i>timeout=</i> (int (optional))</dt> +<dd> +per command timeout in milliseconds (0 for configured default) + (defaults to 0) +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containing stdout and stderr output of the device +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bytes, bytes) +</dd> +</dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised in case of an unsupported submit mode +</dd> +</dl> +<a NAME="MicroPythonSerialDeviceInterface.executeAsync" ID="MicroPythonSerialDeviceInterface.executeAsync"></a> +<h4>MicroPythonSerialDeviceInterface.executeAsync</h4> +<b>executeAsync</b>(<i>commandsList, submitMode</i>) + +<p> + Public method to execute a series of commands over a period of time + without returning any result (asynchronous execution). +</p> +<dl> + +<dt><i>commandsList</i> (list of str)</dt> +<dd> +list of commands to be execute on the device +</dd> +<dt><i>submitMode</i> (str (one of 'raw' or 'paste'))</dt> +<dd> +mode to be used to submit the commands +</dd> +</dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate an unknown submit mode +</dd> +</dl> +<a NAME="MicroPythonSerialDeviceInterface.handlePreferencesChanged" ID="MicroPythonSerialDeviceInterface.handlePreferencesChanged"></a> +<h4>MicroPythonSerialDeviceInterface.handlePreferencesChanged</h4> +<b>handlePreferencesChanged</b>(<i></i>) + +<p> + Public slot to handle a change of the preferences. +</p> +<a NAME="MicroPythonSerialDeviceInterface.isConnected" ID="MicroPythonSerialDeviceInterface.isConnected"></a> +<h4>MicroPythonSerialDeviceInterface.isConnected</h4> +<b>isConnected</b>(<i></i>) + +<p> + Public method to get the connection status. +</p> +<dl> +<dt>Return:</dt> +<dd> +flag indicating the connection status +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="MicroPythonSerialDeviceInterface.probeDevice" ID="MicroPythonSerialDeviceInterface.probeDevice"></a> +<h4>MicroPythonSerialDeviceInterface.probeDevice</h4> +<b>probeDevice</b>(<i></i>) + +<p> + Public method to check the device is responding. +</p> +<p> + If the device has not been flashed with a MicroPython firmware, the + probe will fail. +</p> +<dl> +<dt>Return:</dt> +<dd> +flag indicating a communicating MicroPython device +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="MicroPythonSerialDeviceInterface.write" ID="MicroPythonSerialDeviceInterface.write"></a> +<h4>MicroPythonSerialDeviceInterface.write</h4> +<b>write</b>(<i>data</i>) + +<p> + Public method to write data to the connected device. +</p> +<dl> + +<dt><i>data</i> (bytes or bytearray)</dt> +<dd> +data to be written +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonWebreplConnectionDialog.html Thu May 04 17:58:52 2023 +0200 @@ -0,0 +1,144 @@ +<!DOCTYPE html> +<html><head> +<title>eric7.MicroPython.MicroPythonWebreplConnectionDialog</title> +<meta charset="UTF-8"> +<link rel="stylesheet" href="styles.css"> +</head> +<body> +<a NAME="top" ID="top"></a> +<h1>eric7.MicroPython.MicroPythonWebreplConnectionDialog</h1> + +<p> +Module implementing a dialog to enter the WebREPL connection parameters. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> + +<tr> +<td><a href="#MicroPythonWebreplConnectionDialog">MicroPythonWebreplConnectionDialog</a></td> +<td>Class implementing a dialog to enter the WebREPL connection parameters.</td> +</tr> +</table> +<h3>Functions</h3> + +<table> +<tr><td>None</td></tr> +</table> +<hr /> +<hr /> +<a NAME="MicroPythonWebreplConnectionDialog" ID="MicroPythonWebreplConnectionDialog"></a> +<h2>MicroPythonWebreplConnectionDialog</h2> + +<p> + Class implementing a dialog to enter the WebREPL connection parameters. +</p> +<h3>Derived from</h3> +QDialog, Ui_MicroPythonWebreplConnectionDialog +<h3>Class Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> + +<table> + +<tr> +<td><a href="#MicroPythonWebreplConnectionDialog.__init__">MicroPythonWebreplConnectionDialog</a></td> +<td>Constructor</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplConnectionDialog.__updateOkButton">__updateOkButton</a></td> +<td>Private slot to update the enabled state of the OK button.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplConnectionDialog.getWebreplConnectionParameters">getWebreplConnectionParameters</a></td> +<td>Public method to retrieve the entered WebREPL connection data.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplConnectionDialog.on_showPasswordButton_clicked">on_showPasswordButton_clicked</a></td> +<td>Private slot to show or hide the password.</td> +</tr> +</table> +<h3>Static Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> + +<a NAME="MicroPythonWebreplConnectionDialog.__init__" ID="MicroPythonWebreplConnectionDialog.__init__"></a> +<h4>MicroPythonWebreplConnectionDialog (Constructor)</h4> +<b>MicroPythonWebreplConnectionDialog</b>(<i>currentWebreplUrl, currentType, parent=None</i>) + +<p> + Constructor +</p> +<dl> + +<dt><i>currentWebreplUrl</i> (str)</dt> +<dd> +WebREPL URL most recently configured +</dd> +<dt><i>currentType</i> (str)</dt> +<dd> +device type most recently selected +</dd> +<dt><i>parent</i> (QWidget (optional))</dt> +<dd> +reference to the parent widget (defaults to None) +</dd> +</dl> +<a NAME="MicroPythonWebreplConnectionDialog.__updateOkButton" ID="MicroPythonWebreplConnectionDialog.__updateOkButton"></a> +<h4>MicroPythonWebreplConnectionDialog.__updateOkButton</h4> +<b>__updateOkButton</b>(<i></i>) + +<p> + Private slot to update the enabled state of the OK button. +</p> +<a NAME="MicroPythonWebreplConnectionDialog.getWebreplConnectionParameters" ID="MicroPythonWebreplConnectionDialog.getWebreplConnectionParameters"></a> +<h4>MicroPythonWebreplConnectionDialog.getWebreplConnectionParameters</h4> +<b>getWebreplConnectionParameters</b>(<i></i>) + +<p> + Public method to retrieve the entered WebREPL connection data. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containing the URL and device type for the WebREPL connection +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (str, str) +</dd> +</dl> +<a NAME="MicroPythonWebreplConnectionDialog.on_showPasswordButton_clicked" ID="MicroPythonWebreplConnectionDialog.on_showPasswordButton_clicked"></a> +<h4>MicroPythonWebreplConnectionDialog.on_showPasswordButton_clicked</h4> +<b>on_showPasswordButton_clicked</b>(<i>checked</i>) + +<p> + Private slot to show or hide the password. +</p> +<dl> + +<dt><i>checked</i> (bool)</dt> +<dd> +state of the button +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonWebreplDeviceInterface.html Thu May 04 17:58:52 2023 +0200 @@ -0,0 +1,331 @@ +<!DOCTYPE html> +<html><head> +<title>eric7.MicroPython.MicroPythonWebreplDeviceInterface</title> +<meta charset="UTF-8"> +<link rel="stylesheet" href="styles.css"> +</head> +<body> +<a NAME="top" ID="top"></a> +<h1>eric7.MicroPython.MicroPythonWebreplDeviceInterface</h1> + +<p> +Module implementing an interface to talk to a connected MicroPython device via +a webrepl connection. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> + +<tr> +<td><a href="#MicroPythonWebreplDeviceInterface">MicroPythonWebreplDeviceInterface</a></td> +<td>Class implementing an interface to talk to a connected MicroPython device via a webrepl connection.</td> +</tr> +</table> +<h3>Functions</h3> + +<table> +<tr><td>None</td></tr> +</table> +<hr /> +<hr /> +<a NAME="MicroPythonWebreplDeviceInterface" ID="MicroPythonWebreplDeviceInterface"></a> +<h2>MicroPythonWebreplDeviceInterface</h2> + +<p> + Class implementing an interface to talk to a connected MicroPython device via + a webrepl connection. +</p> +<h3>Derived from</h3> +MicroPythonDeviceInterface +<h3>Class Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> + +<table> + +<tr> +<td><a href="#MicroPythonWebreplDeviceInterface.__init__">MicroPythonWebreplDeviceInterface</a></td> +<td>Constructor</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplDeviceInterface.__pasteOff">__pasteOff</a></td> +<td>Private method to switch 'paste' mode off.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplDeviceInterface.__pasteOn">__pasteOn</a></td> +<td>Private method to switch the connected device to 'paste' mode.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplDeviceInterface.__readAll">__readAll</a></td> +<td>Private method to read all data and emit it for further processing.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplDeviceInterface.__readSocket">__readSocket</a></td> +<td>Private slot to read all available data and emit it with the "dataReceived" signal for further processing.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplDeviceInterface.connectToDevice">connectToDevice</a></td> +<td>Public slot to connect to the device.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplDeviceInterface.disconnectFromDevice">disconnectFromDevice</a></td> +<td>Public slot to disconnect from the device.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplDeviceInterface.execute">execute</a></td> +<td>Public method to send commands to the connected device and return the result.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplDeviceInterface.executeAsync">executeAsync</a></td> +<td>Public method to execute a series of commands over a period of time without returning any result (asynchronous execution).</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplDeviceInterface.handlePreferencesChanged">handlePreferencesChanged</a></td> +<td>Public slot to handle a change of the preferences.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplDeviceInterface.isConnected">isConnected</a></td> +<td>Public method to get the connection status.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplDeviceInterface.probeDevice">probeDevice</a></td> +<td>Public method to check the device is responding.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplDeviceInterface.write">write</a></td> +<td>Public method to write data to the connected device.</td> +</tr> +</table> +<h3>Static Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> + +<a NAME="MicroPythonWebreplDeviceInterface.__init__" ID="MicroPythonWebreplDeviceInterface.__init__"></a> +<h4>MicroPythonWebreplDeviceInterface (Constructor)</h4> +<b>MicroPythonWebreplDeviceInterface</b>(<i>parent=None</i>) + +<p> + Constructor +</p> +<dl> + +<dt><i>parent</i> (QObject)</dt> +<dd> +reference to the parent object +</dd> +</dl> +<a NAME="MicroPythonWebreplDeviceInterface.__pasteOff" ID="MicroPythonWebreplDeviceInterface.__pasteOff"></a> +<h4>MicroPythonWebreplDeviceInterface.__pasteOff</h4> +<b>__pasteOff</b>(<i></i>) + +<p> + Private method to switch 'paste' mode off. +</p> +<a NAME="MicroPythonWebreplDeviceInterface.__pasteOn" ID="MicroPythonWebreplDeviceInterface.__pasteOn"></a> +<h4>MicroPythonWebreplDeviceInterface.__pasteOn</h4> +<b>__pasteOn</b>(<i></i>) + +<p> + Private method to switch the connected device to 'paste' mode. +</p> +<p> + Note: switching to paste mode is done with synchronous writes. +</p> +<dl> +<dt>Return:</dt> +<dd> +flag indicating success +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="MicroPythonWebreplDeviceInterface.__readAll" ID="MicroPythonWebreplDeviceInterface.__readAll"></a> +<h4>MicroPythonWebreplDeviceInterface.__readAll</h4> +<b>__readAll</b>(<i></i>) + +<p> + Private method to read all data and emit it for further processing. +</p> +<a NAME="MicroPythonWebreplDeviceInterface.__readSocket" ID="MicroPythonWebreplDeviceInterface.__readSocket"></a> +<h4>MicroPythonWebreplDeviceInterface.__readSocket</h4> +<b>__readSocket</b>(<i></i>) + +<p> + Private slot to read all available data and emit it with the + "dataReceived" signal for further processing. +</p> +<a NAME="MicroPythonWebreplDeviceInterface.connectToDevice" ID="MicroPythonWebreplDeviceInterface.connectToDevice"></a> +<h4>MicroPythonWebreplDeviceInterface.connectToDevice</h4> +<b>connectToDevice</b>(<i>connection</i>) + +<p> + Public slot to connect to the device. +</p> +<dl> + +<dt><i>connection</i> (str)</dt> +<dd> +name of the connection to be used in the form of an URL string + (ws://password@host:port) +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +flag indicating success +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="MicroPythonWebreplDeviceInterface.disconnectFromDevice" ID="MicroPythonWebreplDeviceInterface.disconnectFromDevice"></a> +<h4>MicroPythonWebreplDeviceInterface.disconnectFromDevice</h4> +<b>disconnectFromDevice</b>(<i></i>) + +<p> + Public slot to disconnect from the device. +</p> +<a NAME="MicroPythonWebreplDeviceInterface.execute" ID="MicroPythonWebreplDeviceInterface.execute"></a> +<h4>MicroPythonWebreplDeviceInterface.execute</h4> +<b>execute</b>(<i>commands, *, mode="raw", timeout=0</i>) + +<p> + Public method to send commands to the connected device and return the + result. +</p> +<dl> + +<dt><i>commands</i> (str or list of str)</dt> +<dd> +list of commands to be executed +</dd> +<dt><i>mode=</i> (str)</dt> +<dd> +submit mode to be used (one of 'raw' or 'paste') (defaults to + 'raw'). This is ignored because webrepl always uses 'paste' mode. +</dd> +<dt><i>timeout=</i> (int (optional))</dt> +<dd> +per command timeout in milliseconds (0 for configured default) + (defaults to 0) +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +tuple containing stdout and stderr output of the device +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (bytes, bytes) +</dd> +</dl> +<a NAME="MicroPythonWebreplDeviceInterface.executeAsync" ID="MicroPythonWebreplDeviceInterface.executeAsync"></a> +<h4>MicroPythonWebreplDeviceInterface.executeAsync</h4> +<b>executeAsync</b>(<i>commandsList, submitMode</i>) + +<p> + Public method to execute a series of commands over a period of time + without returning any result (asynchronous execution). +</p> +<dl> + +<dt><i>commandsList</i> (list of str)</dt> +<dd> +list of commands to be execute on the device +</dd> +<dt><i>submitMode</i> (str (one of 'raw' or 'paste'))</dt> +<dd> +mode to be used to submit the commands +</dd> +</dl> +<a NAME="MicroPythonWebreplDeviceInterface.handlePreferencesChanged" ID="MicroPythonWebreplDeviceInterface.handlePreferencesChanged"></a> +<h4>MicroPythonWebreplDeviceInterface.handlePreferencesChanged</h4> +<b>handlePreferencesChanged</b>(<i></i>) + +<p> + Public slot to handle a change of the preferences. +</p> +<a NAME="MicroPythonWebreplDeviceInterface.isConnected" ID="MicroPythonWebreplDeviceInterface.isConnected"></a> +<h4>MicroPythonWebreplDeviceInterface.isConnected</h4> +<b>isConnected</b>(<i></i>) + +<p> + Public method to get the connection status. +</p> +<dl> +<dt>Return:</dt> +<dd> +flag indicating the connection status +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="MicroPythonWebreplDeviceInterface.probeDevice" ID="MicroPythonWebreplDeviceInterface.probeDevice"></a> +<h4>MicroPythonWebreplDeviceInterface.probeDevice</h4> +<b>probeDevice</b>(<i></i>) + +<p> + Public method to check the device is responding. +</p> +<p> + If the device has not been flashed with a MicroPython firmware, the + probe will fail. +</p> +<dl> +<dt>Return:</dt> +<dd> +flag indicating a communicating MicroPython device +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="MicroPythonWebreplDeviceInterface.write" ID="MicroPythonWebreplDeviceInterface.write"></a> +<h4>MicroPythonWebreplDeviceInterface.write</h4> +<b>write</b>(<i>data</i>) + +<p> + Public method to write data to the connected device. +</p> +<dl> + +<dt><i>data</i> (bytes or bytearray)</dt> +<dd> +data to be written +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonWebreplSocket.html Thu May 04 17:58:52 2023 +0200 @@ -0,0 +1,371 @@ +<!DOCTYPE html> +<html><head> +<title>eric7.MicroPython.MicroPythonWebreplSocket</title> +<meta charset="UTF-8"> +<link rel="stylesheet" href="styles.css"> +</head> +<body> +<a NAME="top" ID="top"></a> +<h1>eric7.MicroPython.MicroPythonWebreplSocket</h1> + +<p> +Module implementing a websocket class to be connect to the MicroPython webrepl +interface. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> + +<tr> +<td><a href="#MicroPythonWebreplSocket">MicroPythonWebreplSocket</a></td> +<td>Class implementing a websocket client to be connected to the MicroPython webrepl interface.</td> +</tr> +</table> +<h3>Functions</h3> + +<table> +<tr><td>None</td></tr> +</table> +<hr /> +<hr /> +<a NAME="MicroPythonWebreplSocket" ID="MicroPythonWebreplSocket"></a> +<h2>MicroPythonWebreplSocket</h2> + +<p> + Class implementing a websocket client to be connected to the MicroPython webrepl + interface. +</p> +<h3>Signals</h3> +<dl> + +<dt>readyRead()</dt> +<dd> +emitted to signal the availability of data +</dd> +</dl> +<h3>Derived from</h3> +QWebSocket +<h3>Class Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> + +<table> + +<tr> +<td><a href="#MicroPythonWebreplSocket.__init__">MicroPythonWebreplSocket</a></td> +<td>Constructor</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplSocket.__textDataReceived">__textDataReceived</a></td> +<td>Private slot handling a received text message.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplSocket.connectToDevice">connectToDevice</a></td> +<td>Public method to connect to the given host and port.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplSocket.disconnect">disconnect</a></td> +<td>Public method to disconnect the websocket.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplSocket.hasTimedOut">hasTimedOut</a></td> +<td>Public method to check, if the last 'readUntil()' has timed out.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplSocket.isConnected">isConnected</a></td> +<td>Public method to check the connected state of the websocket.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplSocket.login">login</a></td> +<td>Public method to login to the webrepl console of the device.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplSocket.readAll">readAll</a></td> +<td>Public method to read all available data.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplSocket.readUntil">readUntil</a></td> +<td>Public method to read data until an expected sequence is found (default: \n) or a specific size is exceeded.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplSocket.setTimeout">setTimeout</a></td> +<td>Public method to set the socket timeout value.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplSocket.timeout">timeout</a></td> +<td></td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplSocket.waitForConnected">waitForConnected</a></td> +<td>Public method to wait for the websocket being connected.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplSocket.writeTextMessage">writeTextMessage</a></td> +<td>Public method write some text data to the webrepl server of the connected device.</td> +</tr> +</table> +<h3>Static Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> + +<a NAME="MicroPythonWebreplSocket.__init__" ID="MicroPythonWebreplSocket.__init__"></a> +<h4>MicroPythonWebreplSocket (Constructor)</h4> +<b>MicroPythonWebreplSocket</b>(<i>timeout=10000, parent=None</i>) + +<p> + Constructor +</p> +<dl> + +<dt><i>timeout</i> (int)</dt> +<dd> +timout in milliseconds to be set +</dd> +<dt><i>parent</i> (QObject)</dt> +<dd> +reference to the parent object +</dd> +</dl> +<a NAME="MicroPythonWebreplSocket.__textDataReceived" ID="MicroPythonWebreplSocket.__textDataReceived"></a> +<h4>MicroPythonWebreplSocket.__textDataReceived</h4> +<b>__textDataReceived</b>(<i>strMessage</i>) + +<p> + Private slot handling a received text message. +</p> +<dl> + +<dt><i>strMessage</i> (str)</dt> +<dd> +received text message +</dd> +</dl> +<a NAME="MicroPythonWebreplSocket.connectToDevice" ID="MicroPythonWebreplSocket.connectToDevice"></a> +<h4>MicroPythonWebreplSocket.connectToDevice</h4> +<b>connectToDevice</b>(<i>host, port</i>) + +<p> + Public method to connect to the given host and port. +</p> +<dl> + +<dt><i>host</i> (str)</dt> +<dd> +host name or IP address +</dd> +<dt><i>port</i> (int)</dt> +<dd> +port number +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +flag indicating success +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="MicroPythonWebreplSocket.disconnect" ID="MicroPythonWebreplSocket.disconnect"></a> +<h4>MicroPythonWebreplSocket.disconnect</h4> +<b>disconnect</b>(<i></i>) + +<p> + Public method to disconnect the websocket. +</p> +<a NAME="MicroPythonWebreplSocket.hasTimedOut" ID="MicroPythonWebreplSocket.hasTimedOut"></a> +<h4>MicroPythonWebreplSocket.hasTimedOut</h4> +<b>hasTimedOut</b>(<i></i>) + +<p> + Public method to check, if the last 'readUntil()' has timed out. +</p> +<dl> +<dt>Return:</dt> +<dd> +flag indicating a timeout +@rtype bool +</dd> +</dl> +<a NAME="MicroPythonWebreplSocket.isConnected" ID="MicroPythonWebreplSocket.isConnected"></a> +<h4>MicroPythonWebreplSocket.isConnected</h4> +<b>isConnected</b>(<i></i>) + +<p> + Public method to check the connected state of the websocket. +</p> +<dl> +<dt>Return:</dt> +<dd> +flag indicating the connected state +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="MicroPythonWebreplSocket.login" ID="MicroPythonWebreplSocket.login"></a> +<h4>MicroPythonWebreplSocket.login</h4> +<b>login</b>(<i>password</i>) + +<p> + Public method to login to the webrepl console of the device. +</p> +<dl> + +<dt><i>password</i> (str)</dt> +<dd> +password +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +flag indicating a successful login +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="MicroPythonWebreplSocket.readAll" ID="MicroPythonWebreplSocket.readAll"></a> +<h4>MicroPythonWebreplSocket.readAll</h4> +<b>readAll</b>(<i>timeout=0</i>) + +<p> + Public method to read all available data. +</p> +<dl> + +<dt><i>timeout</i> (int (optional))</dt> +<dd> +timeout in milliseconds (0 for no timeout) + (defaults to 0) +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +received data +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bytes +</dd> +</dl> +<a NAME="MicroPythonWebreplSocket.readUntil" ID="MicroPythonWebreplSocket.readUntil"></a> +<h4>MicroPythonWebreplSocket.readUntil</h4> +<b>readUntil</b>(<i>expected=b"\n", size=None, timeout=0</i>) + +<p> + Public method to read data until an expected sequence is found + (default: \n) or a specific size is exceeded. +</p> +<dl> + +<dt><i>expected</i> (bytes)</dt> +<dd> +expected bytes sequence +</dd> +<dt><i>size</i> (int (optional))</dt> +<dd> +maximum data to be read (defaults to None) +</dd> +<dt><i>timeout</i> (int (optional))</dt> +<dd> +timeout in milliseconds (0 for configured default) + (defaults to 0) +</dd> +</dl> +<dl> +<dt>Return:</dt> +<dd> +bytes read from the device including the expected sequence +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bytes +</dd> +</dl> +<a NAME="MicroPythonWebreplSocket.setTimeout" ID="MicroPythonWebreplSocket.setTimeout"></a> +<h4>MicroPythonWebreplSocket.setTimeout</h4> +<b>setTimeout</b>(<i>timeout</i>) + +<p> + Public method to set the socket timeout value. +</p> +<dl> + +<dt><i>timeout</i> (int)</dt> +<dd> +timout in milliseconds to be set +</dd> +</dl> +<a NAME="MicroPythonWebreplSocket.timeout" ID="MicroPythonWebreplSocket.timeout"></a> +<h4>MicroPythonWebreplSocket.timeout</h4> +<b>timeout</b>(<i></i>) + +<a NAME="MicroPythonWebreplSocket.waitForConnected" ID="MicroPythonWebreplSocket.waitForConnected"></a> +<h4>MicroPythonWebreplSocket.waitForConnected</h4> +<b>waitForConnected</b>(<i></i>) + +<p> + Public method to wait for the websocket being connected. +</p> +<dl> +<dt>Return:</dt> +<dd> +flag indicating the connect result +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +bool +</dd> +</dl> +<a NAME="MicroPythonWebreplSocket.writeTextMessage" ID="MicroPythonWebreplSocket.writeTextMessage"></a> +<h4>MicroPythonWebreplSocket.writeTextMessage</h4> +<b>writeTextMessage</b>(<i>data</i>) + +<p> + Public method write some text data to the webrepl server of the connected + device. +</p> +<dl> + +<dt><i>data</i> (bytes)</dt> +<dd> +text data to be sent +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonWebreplUrlAddEditDialog.html Thu May 04 17:58:52 2023 +0200 @@ -0,0 +1,146 @@ +<!DOCTYPE html> +<html><head> +<title>eric7.MicroPython.MicroPythonWebreplUrlAddEditDialog</title> +<meta charset="UTF-8"> +<link rel="stylesheet" href="styles.css"> +</head> +<body> +<a NAME="top" ID="top"></a> +<h1>eric7.MicroPython.MicroPythonWebreplUrlAddEditDialog</h1> + +<p> +Module implementing a dialog to edit the parameters for a WebREPL connection. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> + +<tr> +<td><a href="#MicroPythonWebreplUrlAddEditDialog">MicroPythonWebreplUrlAddEditDialog</a></td> +<td>Class implementing a dialog to edit the parameters for a WebREPL connection.</td> +</tr> +</table> +<h3>Functions</h3> + +<table> +<tr><td>None</td></tr> +</table> +<hr /> +<hr /> +<a NAME="MicroPythonWebreplUrlAddEditDialog" ID="MicroPythonWebreplUrlAddEditDialog"></a> +<h2>MicroPythonWebreplUrlAddEditDialog</h2> + +<p> + Class implementing a dialog to edit the parameters for a WebREPL connection. +</p> +<h3>Derived from</h3> +QDialog, Ui_MicroPythonWebreplUrlAddEditDialog +<h3>Class Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> + +<table> + +<tr> +<td><a href="#MicroPythonWebreplUrlAddEditDialog.__init__">MicroPythonWebreplUrlAddEditDialog</a></td> +<td>Constructor</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplUrlAddEditDialog.__populateFields">__populateFields</a></td> +<td>Private method to populate the various dialog fields with the given parameters.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplUrlAddEditDialog.__updateOkButton">__updateOkButton</a></td> +<td>Private slot to update the enabled state of the OK button.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplUrlAddEditDialog.getWebreplUrl">getWebreplUrl</a></td> +<td>Public method to retrieve the entered WebREPL connection data.</td> +</tr> +</table> +<h3>Static Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> + +<a NAME="MicroPythonWebreplUrlAddEditDialog.__init__" ID="MicroPythonWebreplUrlAddEditDialog.__init__"></a> +<h4>MicroPythonWebreplUrlAddEditDialog (Constructor)</h4> +<b>MicroPythonWebreplUrlAddEditDialog</b>(<i>definedNames, connectionParams=None, parent=None</i>) + +<p> + Constructor +</p> +<dl> + +<dt><i>definedNames</i> (list of str)</dt> +<dd> +list of already define WebREPL connection names +</dd> +<dt><i>connectionParams</i> (tuple of (str, str, str) (optional))</dt> +<dd> +parameters for the WebREPL connection to be edited + (default to None) +</dd> +<dt><i>parent</i> (QWidget (optional))</dt> +<dd> +reference to the parent widget (defaults to None) +</dd> +</dl> +<a NAME="MicroPythonWebreplUrlAddEditDialog.__populateFields" ID="MicroPythonWebreplUrlAddEditDialog.__populateFields"></a> +<h4>MicroPythonWebreplUrlAddEditDialog.__populateFields</h4> +<b>__populateFields</b>(<i>params</i>) + +<p> + Private method to populate the various dialog fields with the given parameters. +</p> +<dl> + +<dt><i>params</i> (tuple of (str, str, str))</dt> +<dd> +arameters for the WebREPL connection to be edited +</dd> +</dl> +<a NAME="MicroPythonWebreplUrlAddEditDialog.__updateOkButton" ID="MicroPythonWebreplUrlAddEditDialog.__updateOkButton"></a> +<h4>MicroPythonWebreplUrlAddEditDialog.__updateOkButton</h4> +<b>__updateOkButton</b>(<i></i>) + +<p> + Private slot to update the enabled state of the OK button. +</p> +<a NAME="MicroPythonWebreplUrlAddEditDialog.getWebreplUrl" ID="MicroPythonWebreplUrlAddEditDialog.getWebreplUrl"></a> +<h4>MicroPythonWebreplUrlAddEditDialog.getWebreplUrl</h4> +<b>getWebreplUrl</b>(<i></i>) + +<p> + Public method to retrieve the entered WebREPL connection data. +</p> +<dl> +<dt>Return:</dt> +<dd> +tuple containing the name, description, URL and device type for + the WebREPL connection +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +tuple of (str, str, str, str) +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.html Thu May 04 17:58:52 2023 +0200 @@ -0,0 +1,211 @@ +<!DOCTYPE html> +<html><head> +<title>eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog</title> +<meta charset="UTF-8"> +<link rel="stylesheet" href="styles.css"> +</head> +<body> +<a NAME="top" ID="top"></a> +<h1>eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog</h1> + +<p> +Module implementing a dialog to edit the list of configured WebREPL URLs. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> + +<tr> +<td><a href="#MicroPythonWebreplUrlsConfigDialog">MicroPythonWebreplUrlsConfigDialog</a></td> +<td>Class implementing a dialog to edit the list of configured WebREPL URLs.</td> +</tr> +</table> +<h3>Functions</h3> + +<table> +<tr><td>None</td></tr> +</table> +<hr /> +<hr /> +<a NAME="MicroPythonWebreplUrlsConfigDialog" ID="MicroPythonWebreplUrlsConfigDialog"></a> +<h2>MicroPythonWebreplUrlsConfigDialog</h2> + +<p> + Class implementing a dialog to edit the list of configured WebREPL URLs. +</p> +<h3>Derived from</h3> +QDialog, Ui_MicroPythonWebreplUrlsConfigDialog +<h3>Class Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> + +<table> + +<tr> +<td><a href="#MicroPythonWebreplUrlsConfigDialog.__init__">MicroPythonWebreplUrlsConfigDialog</a></td> +<td>Constructor</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplUrlsConfigDialog.__definedNames">__definedNames</a></td> +<td>Private method to get a list of defined connection names.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplUrlsConfigDialog.__resizeColumns">__resizeColumns</a></td> +<td>Private slot to resize the columns to their contents.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplUrlsConfigDialog.__sortItems">__sortItems</a></td> +<td>Private slot to sort the list by name column (i.e.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplUrlsConfigDialog.__updateActionButtons">__updateActionButtons</a></td> +<td>Private slot to change the enabled state of the action buttons.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplUrlsConfigDialog.getWebreplDict">getWebreplDict</a></td> +<td>Public method to retrieve a dictionary containing the configured WebREPL URLs.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplUrlsConfigDialog.on_addButton_clicked">on_addButton_clicked</a></td> +<td>Private slot to add a new WebREPL connection.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplUrlsConfigDialog.on_editButton_clicked">on_editButton_clicked</a></td> +<td>Private slot to edit the selected WebREPL connection.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplUrlsConfigDialog.on_removeAllButton_clicked">on_removeAllButton_clicked</a></td> +<td>Private slot to remove all entries.</td> +</tr> +<tr> +<td><a href="#MicroPythonWebreplUrlsConfigDialog.on_removeButton_clicked">on_removeButton_clicked</a></td> +<td>Private slot to remove the selected entries.</td> +</tr> +</table> +<h3>Static Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> + +<a NAME="MicroPythonWebreplUrlsConfigDialog.__init__" ID="MicroPythonWebreplUrlsConfigDialog.__init__"></a> +<h4>MicroPythonWebreplUrlsConfigDialog (Constructor)</h4> +<b>MicroPythonWebreplUrlsConfigDialog</b>(<i>webreplDict, parent=None</i>) + +<p> + Constructor +</p> +<dl> + +<dt><i>webreplDict</i> (dict)</dt> +<dd> +dictionary containing the configured WebREPL URLs +</dd> +<dt><i>parent</i> (QWidget (optional))</dt> +<dd> +reference to the parent widget (defaults to None) +</dd> +</dl> +<a NAME="MicroPythonWebreplUrlsConfigDialog.__definedNames" ID="MicroPythonWebreplUrlsConfigDialog.__definedNames"></a> +<h4>MicroPythonWebreplUrlsConfigDialog.__definedNames</h4> +<b>__definedNames</b>(<i></i>) + +<p> + Private method to get a list of defined connection names. +</p> +<dl> +<dt>Return:</dt> +<dd> +list of defined connection names +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +list of str +</dd> +</dl> +<a NAME="MicroPythonWebreplUrlsConfigDialog.__resizeColumns" ID="MicroPythonWebreplUrlsConfigDialog.__resizeColumns"></a> +<h4>MicroPythonWebreplUrlsConfigDialog.__resizeColumns</h4> +<b>__resizeColumns</b>(<i></i>) + +<p> + Private slot to resize the columns to their contents. +</p> +<a NAME="MicroPythonWebreplUrlsConfigDialog.__sortItems" ID="MicroPythonWebreplUrlsConfigDialog.__sortItems"></a> +<h4>MicroPythonWebreplUrlsConfigDialog.__sortItems</h4> +<b>__sortItems</b>(<i></i>) + +<p> + Private slot to sort the list by name column (i.e. column 0). +</p> +<a NAME="MicroPythonWebreplUrlsConfigDialog.__updateActionButtons" ID="MicroPythonWebreplUrlsConfigDialog.__updateActionButtons"></a> +<h4>MicroPythonWebreplUrlsConfigDialog.__updateActionButtons</h4> +<b>__updateActionButtons</b>(<i></i>) + +<p> + Private slot to change the enabled state of the action buttons. +</p> +<a NAME="MicroPythonWebreplUrlsConfigDialog.getWebreplDict" ID="MicroPythonWebreplUrlsConfigDialog.getWebreplDict"></a> +<h4>MicroPythonWebreplUrlsConfigDialog.getWebreplDict</h4> +<b>getWebreplDict</b>(<i></i>) + +<p> + Public method to retrieve a dictionary containing the configured WebREPL URLs. +</p> +<dl> +<dt>Return:</dt> +<dd> +dictionary containing the configured WebREPL URLs +</dd> +</dl> +<dl> +<dt>Return Type:</dt> +<dd> +dict +</dd> +</dl> +<a NAME="MicroPythonWebreplUrlsConfigDialog.on_addButton_clicked" ID="MicroPythonWebreplUrlsConfigDialog.on_addButton_clicked"></a> +<h4>MicroPythonWebreplUrlsConfigDialog.on_addButton_clicked</h4> +<b>on_addButton_clicked</b>(<i></i>) + +<p> + Private slot to add a new WebREPL connection. +</p> +<a NAME="MicroPythonWebreplUrlsConfigDialog.on_editButton_clicked" ID="MicroPythonWebreplUrlsConfigDialog.on_editButton_clicked"></a> +<h4>MicroPythonWebreplUrlsConfigDialog.on_editButton_clicked</h4> +<b>on_editButton_clicked</b>(<i></i>) + +<p> + Private slot to edit the selected WebREPL connection. +</p> +<a NAME="MicroPythonWebreplUrlsConfigDialog.on_removeAllButton_clicked" ID="MicroPythonWebreplUrlsConfigDialog.on_removeAllButton_clicked"></a> +<h4>MicroPythonWebreplUrlsConfigDialog.on_removeAllButton_clicked</h4> +<b>on_removeAllButton_clicked</b>(<i></i>) + +<p> + Private slot to remove all entries. +</p> +<a NAME="MicroPythonWebreplUrlsConfigDialog.on_removeButton_clicked" ID="MicroPythonWebreplUrlsConfigDialog.on_removeButton_clicked"></a> +<h4>MicroPythonWebreplUrlsConfigDialog.on_removeButton_clicked</h4> +<b>on_removeButton_clicked</b>(<i></i>) + +<p> + Private slot to remove the selected entries. +</p> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- a/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonWidget.html Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonWidget.html Thu May 04 17:58:52 2023 +0200 @@ -14,7 +14,7 @@ <h3>Global Attributes</h3> <table> -<tr><td>AnsiColorSchemes</td></tr> +<tr><td>None</td></tr> </table> <h3>Classes</h3> @@ -52,7 +52,7 @@ <h3>Class Attributes</h3> <table> -<tr><td>DeviceBoardRole</td></tr><tr><td>DevicePidRole</td></tr><tr><td>DevicePortRole</td></tr><tr><td>DeviceSerNoRole</td></tr><tr><td>DeviceTypeRole</td></tr><tr><td>DeviceVidRole</td></tr><tr><td>ManualMarker</td></tr><tr><td>ZoomMax</td></tr><tr><td>ZoomMin</td></tr> +<tr><td>DeviceBoardRole</td></tr><tr><td>DeviceInterfaceTypeRole</td></tr><tr><td>DevicePidRole</td></tr><tr><td>DevicePortRole</td></tr><tr><td>DeviceSerNoRole</td></tr><tr><td>DeviceTypeRole</td></tr><tr><td>DeviceVidRole</td></tr><tr><td>DeviceWebreplUrlRole</td></tr><tr><td>ManualMarker</td></tr> </table> <h3>Class Methods</h3> @@ -76,10 +76,6 @@ <td>Private method to add devices to the list of manually added boards.</td> </tr> <tr> -<td><a href="#MicroPythonWidget.__clear">__clear</a></td> -<td>Private slot to clear the REPL pane.</td> -</tr> -<tr> <td><a href="#MicroPythonWidget.__compileEditor2Mpy">__compileEditor2Mpy</a></td> <td>Private slot to cross compile the current editor to a .mpy file.</td> </tr> @@ -92,6 +88,10 @@ <td>Private slot to open the MicroPython configuration page.</td> </tr> <tr> +<td><a href="#MicroPythonWidget.__configureWebreplUrls">__configureWebreplUrls</a></td> +<td>Private slot to configure the list of selectable WebREPL URLs.</td> +</tr> +<tr> <td><a href="#MicroPythonWidget.__connectToDevice">__connectToDevice</a></td> <td>Private method to connect to the selected device.</td> </tr> @@ -108,10 +108,6 @@ <td>Private method to disconnect from the device.</td> </tr> <tr> -<td><a href="#MicroPythonWidget.__doZoom">__doZoom</a></td> -<td>Private slot to zoom the REPL pane.</td> -</tr> -<tr> <td><a href="#MicroPythonWidget.__downloadFirmware">__downloadFirmware</a></td> <td>Private slot to open the firmware download page.</td> </tr> @@ -148,26 +144,10 @@ <td>Private method to check the availability of mpy-cross.</td> </tr> <tr> -<td><a href="#MicroPythonWidget.__paste">__paste</a></td> -<td>Private slot to perform a paste operation.</td> -</tr> -<tr> <td><a href="#MicroPythonWidget.__populateDeviceTypeComboBox">__populateDeviceTypeComboBox</a></td> <td>Private method to populate the device type selector.</td> </tr> <tr> -<td><a href="#MicroPythonWidget.__processData">__processData</a></td> -<td>Private slot to process bytes received from the device.</td> -</tr> -<tr> -<td><a href="#MicroPythonWidget.__replEditMouseReleaseEvent">__replEditMouseReleaseEvent</a></td> -<td>Private method handling mouse release events for the replEdit widget.</td> -</tr> -<tr> -<td><a href="#MicroPythonWidget.__setCharFormat">__setCharFormat</a></td> -<td>Private method setting the current text format of the REPL pane based on the passed ANSI codes.</td> -</tr> -<tr> <td><a href="#MicroPythonWidget.__setConnected">__setConnected</a></td> <td>Private method to set the connection status LED.</td> </tr> @@ -180,10 +160,6 @@ <td>Private slot to show a list of builtin modules.</td> </tr> <tr> -<td><a href="#MicroPythonWidget.__showContextMenu">__showContextMenu</a></td> -<td>Private slot to show the REPL context menu.</td> -</tr> -<tr> <td><a href="#MicroPythonWidget.__showDeviceTime">__showDeviceTime</a></td> <td>Private slot to show the date and time of the connected device.</td> </tr> @@ -224,14 +200,6 @@ <td>Public method to indicate that the device access the device file system via a local directory.</td> </tr> <tr> -<td><a href="#MicroPythonWidget.eventFilter">eventFilter</a></td> -<td>Public method to process events for the REPL pane.</td> -</tr> -<tr> -<td><a href="#MicroPythonWidget.getCurrentBoard">getCurrentBoard</a></td> -<td>Public method to get the board name of the selected device.</td> -</tr> -<tr> <td><a href="#MicroPythonWidget.getCurrentPort">getCurrentPort</a></td> <td>Public method to determine the port path of the selected device.</td> </tr> @@ -268,10 +236,6 @@ <td>Private slot to open a chart view to plot data received from the connected device.</td> </tr> <tr> -<td><a href="#MicroPythonWidget.on_checkButton_clicked">on_checkButton_clicked</a></td> -<td>Private slot to check for connected devices.</td> -</tr> -<tr> <td><a href="#MicroPythonWidget.on_connectButton_clicked">on_connectButton_clicked</a></td> <td>Private slot to connect to the selected device or disconnect from the currently connected device.</td> </tr> @@ -345,13 +309,6 @@ list of not ignored but unknown devices </dd> </dl> -<a NAME="MicroPythonWidget.__clear" ID="MicroPythonWidget.__clear"></a> -<h4>MicroPythonWidget.__clear</h4> -<b>__clear</b>(<i></i>) - -<p> - Private slot to clear the REPL pane. -</p> <a NAME="MicroPythonWidget.__compileEditor2Mpy" ID="MicroPythonWidget.__compileEditor2Mpy"></a> <h4>MicroPythonWidget.__compileEditor2Mpy</h4> <b>__compileEditor2Mpy</b>(<i></i>) @@ -373,6 +330,13 @@ <p> Private slot to open the MicroPython configuration page. </p> +<a NAME="MicroPythonWidget.__configureWebreplUrls" ID="MicroPythonWidget.__configureWebreplUrls"></a> +<h4>MicroPythonWidget.__configureWebreplUrls</h4> +<b>__configureWebreplUrls</b>(<i></i>) + +<p> + Private slot to configure the list of selectable WebREPL URLs. +</p> <a NAME="MicroPythonWidget.__connectToDevice" ID="MicroPythonWidget.__connectToDevice"></a> <h4>MicroPythonWidget.__connectToDevice</h4> <b>__connectToDevice</b>(<i>withAutostart=False</i>) @@ -388,6 +352,13 @@ automatically </dd> </dl> +<dl> + +<dt>Raises <b>ValueError</b>:</dt> +<dd> +raised to indicate an unsupported interface type +</dd> +</dl> <a NAME="MicroPythonWidget.__convertToUF2" ID="MicroPythonWidget.__convertToUF2"></a> <h4>MicroPythonWidget.__convertToUF2</h4> <b>__convertToUF2</b>(<i></i>) @@ -420,20 +391,6 @@ <p> Private method to disconnect from the device. </p> -<a NAME="MicroPythonWidget.__doZoom" ID="MicroPythonWidget.__doZoom"></a> -<h4>MicroPythonWidget.__doZoom</h4> -<b>__doZoom</b>(<i>value</i>) - -<p> - Private slot to zoom the REPL pane. -</p> -<dl> - -<dt><i>value</i> (int)</dt> -<dd> -zoom value -</dd> -</dl> <a NAME="MicroPythonWidget.__downloadFirmware" ID="MicroPythonWidget.__downloadFirmware"></a> <h4>MicroPythonWidget.__downloadFirmware</h4> <b>__downloadFirmware</b>(<i></i>) @@ -546,20 +503,6 @@ bool </dd> </dl> -<a NAME="MicroPythonWidget.__paste" ID="MicroPythonWidget.__paste"></a> -<h4>MicroPythonWidget.__paste</h4> -<b>__paste</b>(<i>mode=QClipboard.Mode.Clipboard</i>) - -<p> - Private slot to perform a paste operation. -</p> -<dl> - -<dt><i>mode</i> (QClipboard.Mode (optional))</dt> -<dd> -paste mode (defaults to QClipboard.Mode.Clipboard) -</dd> -</dl> <a NAME="MicroPythonWidget.__populateDeviceTypeComboBox" ID="MicroPythonWidget.__populateDeviceTypeComboBox"></a> <h4>MicroPythonWidget.__populateDeviceTypeComboBox</h4> <b>__populateDeviceTypeComboBox</b>(<i></i>) @@ -567,111 +510,6 @@ <p> Private method to populate the device type selector. </p> -<a NAME="MicroPythonWidget.__processData" ID="MicroPythonWidget.__processData"></a> -<h4>MicroPythonWidget.__processData</h4> -<b>__processData</b>(<i>data</i>) - -<p> - Private slot to process bytes received from the device. -</p> -<dl> - -<dt><i>data</i> (bytes)</dt> -<dd> -bytes received from the device -</dd> -</dl> -<a NAME="MicroPythonWidget.__replEditMouseReleaseEvent" ID="MicroPythonWidget.__replEditMouseReleaseEvent"></a> -<h4>MicroPythonWidget.__replEditMouseReleaseEvent</h4> -<b>__replEditMouseReleaseEvent</b>(<i>evt</i>) - -<p> - Private method handling mouse release events for the replEdit widget. -</p> -<p> - Note: this is a hack because QTextEdit does not allow filtering of - QEvent.Type.MouseButtonRelease. To make middle button paste work, we - had to intercept the protected event method (some kind of - reimplementing it). -</p> -<dl> - -<dt><i>evt</i> (QMouseEvent)</dt> -<dd> -reference to the event object -</dd> -</dl> -<a NAME="MicroPythonWidget.__setCharFormat" ID="MicroPythonWidget.__setCharFormat"></a> -<h4>MicroPythonWidget.__setCharFormat</h4> -<b>__setCharFormat</b>(<i>formatCodes, textCursor</i>) - -<p> - Private method setting the current text format of the REPL pane based - on the passed ANSI codes. -</p> -<p> - Following codes are used: - <ul> - <li>0: Reset</li> - <li>1: Bold font (weight 75)</li> - <li>2: Light font (weight 25)</li> - <li>3: Italic font</li> - <li>4: Underlined font</li> - <li>9: Strikeout font</li> - <li>21: Bold off (weight 50)</li> - <li>22: Light off (weight 50)</li> - <li>23: Italic off</li> - <li>24: Underline off</li> - <li>29: Strikeout off</li> - <li>30: foreground Black</li> - <li>31: foreground Dark Red</li> - <li>32: foreground Dark Green</li> - <li>33: foreground Dark Yellow</li> - <li>34: foreground Dark Blue</li> - <li>35: foreground Dark Magenta</li> - <li>36: foreground Dark Cyan</li> - <li>37: foreground Light Gray</li> - <li>39: reset foreground to default</li> - <li>40: background Black</li> - <li>41: background Dark Red</li> - <li>42: background Dark Green</li> - <li>43: background Dark Yellow</li> - <li>44: background Dark Blue</li> - <li>45: background Dark Magenta</li> - <li>46: background Dark Cyan</li> - <li>47: background Light Gray</li> - <li>49: reset background to default</li> - <li>53: Overlined font</li> - <li>55: Overline off</li> - <li>90: bright foreground Dark Gray</li> - <li>91: bright foreground Red</li> - <li>92: bright foreground Green</li> - <li>93: bright foreground Yellow</li> - <li>94: bright foreground Blue</li> - <li>95: bright foreground Magenta</li> - <li>96: bright foreground Cyan</li> - <li>97: bright foreground White</li> - <li>100: bright background Dark Gray</li> - <li>101: bright background Red</li> - <li>102: bright background Green</li> - <li>103: bright background Yellow</li> - <li>104: bright background Blue</li> - <li>105: bright background Magenta</li> - <li>106: bright background Cyan</li> - <li>107: bright background White</li> - </ul> -</p> -<dl> - -<dt><i>formatCodes</i> (list of str)</dt> -<dd> -list of format codes -</dd> -<dt><i>textCursor</i> (QTextCursor)</dt> -<dd> -reference to the text cursor -</dd> -</dl> <a NAME="MicroPythonWidget.__setConnected" ID="MicroPythonWidget.__setConnected"></a> <h4>MicroPythonWidget.__setConnected</h4> <b>__setConnected</b>(<i>connected</i>) @@ -700,20 +538,6 @@ <p> Private slot to show a list of builtin modules. </p> -<a NAME="MicroPythonWidget.__showContextMenu" ID="MicroPythonWidget.__showContextMenu"></a> -<h4>MicroPythonWidget.__showContextMenu</h4> -<b>__showContextMenu</b>(<i>pos</i>) - -<p> - Private slot to show the REPL context menu. -</p> -<dl> - -<dt><i>pos</i> (QPoint)</dt> -<dd> -position to show the menu at -</dd> -</dl> <a NAME="MicroPythonWidget.__showDeviceTime" ID="MicroPythonWidget.__showDeviceTime"></a> <h4>MicroPythonWidget.__showDeviceTime</h4> <b>__showDeviceTime</b>(<i></i>) @@ -817,55 +641,6 @@ bool </dd> </dl> -<a NAME="MicroPythonWidget.eventFilter" ID="MicroPythonWidget.eventFilter"></a> -<h4>MicroPythonWidget.eventFilter</h4> -<b>eventFilter</b>(<i>obj, evt</i>) - -<p> - Public method to process events for the REPL pane. -</p> -<dl> - -<dt><i>obj</i> (QObject)</dt> -<dd> -reference to the object the event was meant for -</dd> -<dt><i>evt</i> (QEvent)</dt> -<dd> -reference to the event object -</dd> -</dl> -<dl> -<dt>Return:</dt> -<dd> -flag to indicate that the event was handled -</dd> -</dl> -<dl> -<dt>Return Type:</dt> -<dd> -bool -</dd> -</dl> -<a NAME="MicroPythonWidget.getCurrentBoard" ID="MicroPythonWidget.getCurrentBoard"></a> -<h4>MicroPythonWidget.getCurrentBoard</h4> -<b>getCurrentBoard</b>(<i></i>) - -<p> - Public method to get the board name of the selected device. -</p> -<dl> -<dt>Return:</dt> -<dd> -board name of the selected device -</dd> -</dl> -<dl> -<dt>Return Type:</dt> -<dd> -str -</dd> -</dl> <a NAME="MicroPythonWidget.getCurrentPort" ID="MicroPythonWidget.getCurrentPort"></a> <h4>MicroPythonWidget.getCurrentPort</h4> <b>getCurrentPort</b>(<i></i>) @@ -1020,13 +795,6 @@ state of the button </dd> </dl> -<a NAME="MicroPythonWidget.on_checkButton_clicked" ID="MicroPythonWidget.on_checkButton_clicked"></a> -<h4>MicroPythonWidget.on_checkButton_clicked</h4> -<b>on_checkButton_clicked</b>(<i></i>) - -<p> - Private slot to check for connected devices. -</p> <a NAME="MicroPythonWidget.on_connectButton_clicked" ID="MicroPythonWidget.on_connectButton_clicked"></a> <h4>MicroPythonWidget.on_connectButton_clicked</h4> <b>on_connectButton_clicked</b>(<i></i>)
--- a/src/eric7/Documentation/Source/eric7.Project.CreateDialogCodeDialog.html Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/Documentation/Source/eric7.Project.CreateDialogCodeDialog.html Thu May 04 17:58:52 2023 +0200 @@ -14,7 +14,7 @@ <h3>Global Attributes</h3> <table> -<tr><td>parameterNamesListRole</td></tr><tr><td>parameterTypesListRole</td></tr><tr><td>pyqtSignatureRole</td></tr><tr><td>pythonSignatureRole</td></tr><tr><td>returnTypeRole</td></tr><tr><td>rubySignatureRole</td></tr> +<tr><td>parameterNamesListRole</td></tr><tr><td>parameterTypesListRole</td></tr><tr><td>pyqtSignatureRole</td></tr><tr><td>pythonSignatureRole</td></tr><tr><td>returnTypeRole</td></tr> </table> <h3>Classes</h3> @@ -43,7 +43,7 @@ <h3>Class Attributes</h3> <table> -<tr><td>DialogClasses</td></tr><tr><td>Separator</td></tr> +<tr><td>DialogClasses</td></tr> </table> <h3>Class Methods</h3> @@ -64,10 +64,6 @@ </tr> <tr> <td><a href="#CreateDialogCodeDialog.__generateCode">__generateCode</a></td> -<td>Private slot to generate the code as requested by the user.</td> -</tr> -<tr> -<td><a href="#CreateDialogCodeDialog.__generatePythonCode">__generatePythonCode</a></td> <td>Private slot to generate Python code as requested by the user.</td> </tr> <tr> @@ -163,13 +159,6 @@ <b>__generateCode</b>(<i></i>) <p> - Private slot to generate the code as requested by the user. -</p> -<a NAME="CreateDialogCodeDialog.__generatePythonCode" ID="CreateDialogCodeDialog.__generatePythonCode"></a> -<h4>CreateDialogCodeDialog.__generatePythonCode</h4> -<b>__generatePythonCode</b>(<i></i>) - -<p> Private slot to generate Python code as requested by the user. </p> <a NAME="CreateDialogCodeDialog.__mapType" ID="CreateDialogCodeDialog.__mapType"></a>
--- a/src/eric7/Documentation/Source/eric7.Project.ProjectResourcesBrowser.html Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/Documentation/Source/eric7.Project.ProjectResourcesBrowser.html Thu May 04 17:58:52 2023 +0200 @@ -57,7 +57,7 @@ <h3>Class Attributes</h3> <table> -<tr><td>RCFilenameFormatPython</td></tr><tr><td>RCFilenameFormatRuby</td></tr> +<tr><td>RCFilenameFormatPython</td></tr> </table> <h3>Class Methods</h3>
--- a/src/eric7/Documentation/Source/eric7.Project.UicLoadUi5.html Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/Documentation/Source/eric7.Project.UicLoadUi5.html Thu May 04 17:58:52 2023 +0200 @@ -30,8 +30,12 @@ <td>Private function to map a type as reported by Qt's meta object to the correct Python type.</td> </tr> <tr> +<td><a href="#_printerr">_printerr</a></td> +<td>Function to print the given string as error to sys.stdoerr with a guard string.</td> +</tr> +<tr> <td><a href="#_printout">_printout</a></td> -<td>Function to print the given string to sys.stdout with a guard string.</td> +<td>Function to print the given string as output to sys.stderr with a guard string.</td> </tr> <tr> <td><a href="#className">className</a></td> @@ -78,12 +82,29 @@ <div align="right"><a href="#top">Up</a></div> <hr /> <hr /> +<a NAME="_printerr" ID="_printerr"></a> +<h2>_printerr</h2> +<b>_printerr</b>(<i>dataString</i>) + +<p> + Function to print the given string as error to sys.stdoerr with a guard string. +</p> +<dl> + +<dt><i>dataString</i> (str)</dt> +<dd> +string to be printed +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> <a NAME="_printout" ID="_printout"></a> <h2>_printout</h2> <b>_printout</b>(<i>dataString</i>) <p> - Function to print the given string to sys.stdout with a guard string. + Function to print the given string as output to sys.stderr with a guard string. </p> <dl>
--- a/src/eric7/Documentation/Source/eric7.Project.UicLoadUi6.html Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/Documentation/Source/eric7.Project.UicLoadUi6.html Thu May 04 17:58:52 2023 +0200 @@ -30,8 +30,12 @@ <td>Private function to map a type as reported by Qt's meta object to the correct Python type.</td> </tr> <tr> +<td><a href="#_printerr">_printerr</a></td> +<td>Function to print the given string as error to sys.stdoerr with a guard string.</td> +</tr> +<tr> <td><a href="#_printout">_printout</a></td> -<td>Function to print the given string to sys.stdout with a guard string.</td> +<td>Function to print the given string as output to sys.stderr with a guard string.</td> </tr> <tr> <td><a href="#className">className</a></td> @@ -78,12 +82,29 @@ <div align="right"><a href="#top">Up</a></div> <hr /> <hr /> +<a NAME="_printerr" ID="_printerr"></a> +<h2>_printerr</h2> +<b>_printerr</b>(<i>dataString</i>) + +<p> + Function to print the given string as error to sys.stdoerr with a guard string. +</p> +<dl> + +<dt><i>dataString</i> (str)</dt> +<dd> +string to be printed +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> <a NAME="_printout" ID="_printout"></a> <h2>_printout</h2> <b>_printout</b>(<i>dataString</i>) <p> - Function to print the given string to sys.stdout with a guard string. + Function to print the given string as output to sys.stderr with a guard string. </p> <dl>
--- a/src/eric7/Documentation/Source/index-eric7.MicroPython.html Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/Documentation/Source/index-eric7.MicroPython.html Thu May 04 17:58:52 2023 +0200 @@ -61,7 +61,7 @@ </tr> <tr> <td><a href="eric7.MicroPython.MicroPythonDeviceInterface.html">MicroPythonDeviceInterface</a></td> -<td>Module implementing some file system commands for MicroPython.</td> +<td>Module implementing an interface base class to talk to a connected MicroPython device.</td> </tr> <tr> <td><a href="eric7.MicroPython.MicroPythonFileManager.html">MicroPythonFileManager</a></td> @@ -84,10 +84,38 @@ <td>Module implementing a dialog to show progress messages.</td> </tr> <tr> +<td><a href="eric7.MicroPython.MicroPythonReplWidget.html">MicroPythonReplWidget</a></td> +<td>Module implementing the MicroPython REPL widget.</td> +</tr> +<tr> +<td><a href="eric7.MicroPython.MicroPythonSerialDeviceInterface.html">MicroPythonSerialDeviceInterface</a></td> +<td>Module implementing an interface to talk to a connected MicroPython device via a serial link.</td> +</tr> +<tr> <td><a href="eric7.MicroPython.MicroPythonSerialPort.html">MicroPythonSerialPort</a></td> <td>Module implementing a QSerialPort with additional functionality for MicroPython devices.</td> </tr> <tr> +<td><a href="eric7.MicroPython.MicroPythonWebreplConnectionDialog.html">MicroPythonWebreplConnectionDialog</a></td> +<td>Module implementing a dialog to enter the WebREPL connection parameters.</td> +</tr> +<tr> +<td><a href="eric7.MicroPython.MicroPythonWebreplDeviceInterface.html">MicroPythonWebreplDeviceInterface</a></td> +<td>Module implementing an interface to talk to a connected MicroPython device via a webrepl connection.</td> +</tr> +<tr> +<td><a href="eric7.MicroPython.MicroPythonWebreplSocket.html">MicroPythonWebreplSocket</a></td> +<td>Module implementing a websocket class to be connect to the MicroPython webrepl interface.</td> +</tr> +<tr> +<td><a href="eric7.MicroPython.MicroPythonWebreplUrlAddEditDialog.html">MicroPythonWebreplUrlAddEditDialog</a></td> +<td>Module implementing a dialog to edit the parameters for a WebREPL connection.</td> +</tr> +<tr> +<td><a href="eric7.MicroPython.MicroPythonWebreplUrlsConfigDialog.html">MicroPythonWebreplUrlsConfigDialog</a></td> +<td>Module implementing a dialog to edit the list of configured WebREPL URLs.</td> +</tr> +<tr> <td><a href="eric7.MicroPython.MicroPythonWidget.html">MicroPythonWidget</a></td> <td>Module implementing the MicroPython REPL widget.</td> </tr>
--- a/src/eric7/MicroPython/Devices/CircuitPythonDevices.py Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/MicroPython/Devices/CircuitPythonDevices.py Thu May 04 17:58:52 2023 +0200 @@ -469,7 +469,7 @@ Private slot to reset the connected device. """ if self.microPython.isConnected(): - self.microPython.deviceInterface().execute( + self.executeCommands( "import microcontroller as mc\n" "mc.on_next_reset(mc.RunMode.NORMAL)" "mc.reset()\n", @@ -501,7 +501,7 @@ Private slot to switch the board into 'bootloader' mode. """ if self.microPython.isConnected(): - self.microPython.deviceInterface().execute( + self.executeCommands( "import microcontroller as mc\n" "mc.on_next_reset(mc.RunMode.BOOTLOADER)\n" "mc.reset()\n", @@ -514,7 +514,7 @@ Private slot to switch the board into 'UF2 Boot' mode. """ if self.microPython.isConnected(): - self.microPython.deviceInterface().execute( + self.executeCommands( "import microcontroller as mc\n" "mc.on_next_reset(mc.RunMode.UF2)\n" "mc.reset()\n", @@ -764,7 +764,7 @@ print(has_wifi()) del has_wifi """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) return ast.literal_eval(out.decode("utf-8")) @@ -848,7 +848,7 @@ del wifi_status """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -902,7 +902,7 @@ ) with EricOverrideCursor(): - out, err = self._interface.execute( + out, err = self.executeCommands( command, mode=self._submitMode, timeout=15000 ) if err: @@ -938,7 +938,7 @@ del disconnect_wifi """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: return False, err @@ -1070,7 +1070,7 @@ del check_internet """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: return False, err @@ -1107,9 +1107,7 @@ del scan_networks """ - out, err = self._interface.execute( - command, mode=self._submitMode, timeout=15000 - ) + out, err = self.executeCommands(command, mode=self._submitMode, timeout=15000) if err: return [], err @@ -1162,7 +1160,7 @@ del deactivate """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: return False, err else: @@ -1214,9 +1212,7 @@ repr(ssid), repr(password), authmode ) - out, err = self._interface.execute( - command, mode=self._submitMode, timeout=15000 - ) + out, err = self.executeCommands(command, mode=self._submitMode, timeout=15000) if err: return False, err elif out and out.startswith(b"Error:"): @@ -1245,7 +1241,7 @@ del stop_ap """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: return False, err elif out and out.startswith(b"Error:"): @@ -1294,9 +1290,7 @@ del has_eth """ - out, err = self._interface.execute( - command, mode=self._submitMode, timeout=10000 - ) + out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000) if err: raise OSError(self._shortError(err)) @@ -1339,9 +1333,7 @@ WiznetUtilities.cpyWiznetInit() ) - out, err = self._interface.execute( - command, mode=self._submitMode, timeout=10000 - ) + out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000) if err: raise OSError(self._shortError(err)) @@ -1396,7 +1388,7 @@ ) with EricOverrideCursor(): - out, err = self._interface.execute( + out, err = self.executeCommands( command, mode=self._submitMode, timeout=15000 ) if err: @@ -1428,7 +1420,7 @@ ) with EricOverrideCursor(): - out, err = self._interface.execute( + out, err = self.executeCommands( command, mode=self._submitMode, timeout=15000 ) if err: @@ -1465,9 +1457,7 @@ WiznetUtilities.cpyWiznetInit(), ) - out, err = self._interface.execute( - command, mode=self._submitMode, timeout=15000 - ) + out, err = self.executeCommands(command, mode=self._submitMode, timeout=15000) if err: return False, err @@ -1621,9 +1611,7 @@ print(has_bt()) del has_bt """ - out, err = self._interface.execute( - command, mode=self._submitMode, timeout=10000 - ) + out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000) if err: raise OSError(self._shortError(err)) return out.strip() == b"True" @@ -1666,7 +1654,7 @@ ble_status() del ble_status """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -1703,7 +1691,7 @@ activate_ble() del activate_ble """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -1729,7 +1717,7 @@ deactivate_ble() del deactivate_ble """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -1790,7 +1778,7 @@ """.format( timeout ) - out, err = self._interface.execute( + out, err = self.executeCommands( command, mode=self._submitMode, timeout=(timeout + 5) * 1000 ) if err: @@ -1845,7 +1833,7 @@ print(has_ntp()) del has_ntp """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) return out.strip() == b"True" @@ -1937,7 +1925,7 @@ repr(server), tzOffset, timeout ) - out, err = self._interface.execute( + out, err = self.executeCommands( command, mode=self._submitMode, timeout=(timeout + 2) * 1000 ) if err:
--- a/src/eric7/MicroPython/Devices/DeviceBase.py Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/MicroPython/Devices/DeviceBase.py Thu May 04 17:58:52 2023 +0200 @@ -118,7 +118,7 @@ super().__init__(parent) self._deviceType = deviceType - self._interface = microPythonWidget.deviceInterface() + self._interface = None self.microPython = microPythonWidget self._deviceData = {} # dictionary with essential device data @@ -137,6 +137,7 @@ self._deviceData = {} if connected: + self._interface = self.microPython.deviceInterface() with contextlib.suppress(OSError): self._deviceData = self.__getDeviceData() self._deviceData["local_mip"] = ( @@ -149,6 +150,8 @@ self._deviceData["ethernet_type"], ) = self.hasEthernet() self._deviceData["ntp"] = self.hasNetworkTime() + else: + self._interface = None def getDeviceType(self): """ @@ -381,6 +384,29 @@ # user cancelled return "" + def executeCommands(self, commands, *, mode="raw", timeout=0): + """ + Public method to send commands to the connected device and return the + result. + + If no connected interface is available, empty results will be returned. + + @param commands list of commands to be executed + @type str or list of str + @keyparam mode submit mode to be used (one of 'raw' or 'paste') (defaults to + 'raw') + @type str + @keyparam timeout per command timeout in milliseconds (0 for configured default) + (defaults to 0) + @type int (optional) + @return tuple containing stdout and stderr output of the device + @rtype tuple of (bytes, bytes) + """ + if self._interface is None: + return b"", b"" + + return self._interface.execute(commands, mode=mode, timeout=timeout) + def sendCommands(self, commandsList): """ Public method to send a list of commands to the device. @@ -388,25 +414,8 @@ @param commandsList list of commands to be sent to the device @type list of str """ - if self._submitMode == "raw": - rawOn = [ # sequence of commands to enter raw mode - b"\x02", # Ctrl-B: exit raw repl (just in case) - b"\r\x03\x03\x03", # Ctrl-C three times: interrupt any running program - b"\r\x01", # Ctrl-A: enter raw REPL - ] - newLine = [ - b'print("\\n")\r', - ] - commands = [c.encode("utf-8)") + b"\r" for c in commandsList] - commands.append(b"\r") - commands.append(b"\x04") - rawOff = [b"\x02", b"\x02"] - commandSequence = rawOn + newLine + commands + rawOff - self._interface.executeAsync(commandSequence) - elif self._submitMode == "paste": - commands = b"\n".join([c.encode("utf-8)") for c in commandsList]) - commandSequence = ["@PasteOn@", commands] - self._interface.executeAsyncPaste(commandSequence) + if self._interface is not None: + self._interface.executeAsync(commandsList, self._submitMode) @pyqtSlot() def handleDataFlood(self): @@ -543,7 +552,7 @@ """.format( repr(pathname) ) - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) return out.strip() == b"True" @@ -565,7 +574,7 @@ """.format( dirname ) - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) return ast.literal_eval(out.decode("utf-8")) @@ -617,7 +626,7 @@ """.format( dirname, showHidden ) - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) fileslist = ast.literal_eval(out.decode("utf-8")) @@ -645,7 +654,7 @@ """.format( dirname ) - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -662,7 +671,7 @@ print(__os_.getcwd()) del __os_ """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) return out.decode("utf-8").strip() @@ -687,7 +696,7 @@ """.format( filename ) - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -734,7 +743,7 @@ """.format( name, recursive, force ) - out, err = self._interface.execute( + out, err = self.executeCommands( command, mode=self._submitMode, timeout=20000 ) if err: @@ -759,7 +768,7 @@ """.format( dirname ) - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -786,7 +795,7 @@ """.format( dirname ) - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -848,7 +857,7 @@ ) command = "\n".join(commands) - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) return True @@ -917,7 +926,7 @@ """.format( deviceFileName ) - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -962,7 +971,7 @@ print(fsinfo()) del __os_, fsinfo """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) infodict = ast.literal_eval(out.decode("utf-8")) @@ -1084,7 +1093,7 @@ print(get_device_data()) del get_device_data """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) return ast.literal_eval(out.decode("utf-8")) @@ -1198,7 +1207,7 @@ print(get_board_info()) del get_board_info """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) return ast.literal_eval(out.decode("utf-8")) @@ -1212,7 +1221,7 @@ @exception OSError raised to indicate an issue with the device """ commands = ["help('modules')"] - out, err = self._interface.execute(commands, mode=self._submitMode) + out, err = self.executeCommands(commands, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -1255,7 +1264,7 @@ get_time() del get_time """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: if b"NotImplementedError" in err: return "<unsupported> <unsupported>" @@ -1327,7 +1336,7 @@ now.tm_isdst, ), ) - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -1354,7 +1363,7 @@ """.format( repr(packages) ) - return self._interface.execute(command, mode=self._submitMode, timeout=60000) + return self.executeCommands(command, mode=self._submitMode, timeout=60000) def mipInstall(self, package, index=None, target=None, version=None, mpy=True): """ @@ -1393,7 +1402,7 @@ """.format( parameterStr ) - return self._interface.execute(command, mode=self._submitMode, timeout=60000) + return self.executeCommands(command, mode=self._submitMode, timeout=60000) def getLibPaths(self): """ @@ -1411,7 +1420,7 @@ lib_paths() del lib_paths """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err))
--- a/src/eric7/MicroPython/Devices/EspDevices.py Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/MicroPython/Devices/EspDevices.py Thu May 04 17:58:52 2023 +0200 @@ -508,7 +508,7 @@ Private slot to reset the connected device. """ if self.microPython.isConnected() and not self.hasCircuitPython(): - self.microPython.deviceInterface().execute( + self.executeCommands( "import machine\nmachine.reset()\n", mode=self._submitMode ) else: @@ -688,7 +688,7 @@ del wifi_status """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -745,7 +745,7 @@ ) with EricOverrideCursor(): - out, err = self._interface.execute( + out, err = self.executeCommands( command, mode=self._submitMode, timeout=15000 ) if err: @@ -787,7 +787,7 @@ del disconnect_wifi """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: return False, err @@ -842,7 +842,7 @@ del modify_boot """ - out, err = self._interface.execute(nvsCommand, mode=self._submitMode) + out, err = self.executeCommands(nvsCommand, mode=self._submitMode) if err: return False, self.tr("Error saving credentials: {0}").format(err) @@ -857,7 +857,7 @@ except OSError as err: return False, self.tr("Error saving auto-connect script: {0}").format(err) - out, err = self._interface.execute(bootCommand, mode=self._submitMode) + out, err = self.executeCommands(bootCommand, mode=self._submitMode) if err: return False, self.tr("Error modifying 'boot.py': {0}").format(err) @@ -889,7 +889,7 @@ del delete_wifi_creds """ - out, err = self._interface.execute(nvsCommand, mode=self._submitMode) + out, err = self.executeCommands(nvsCommand, mode=self._submitMode) if err: return False, self.tr("Error deleting credentials: {0}").format(err) @@ -926,7 +926,7 @@ del check_internet """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: return False, err @@ -960,9 +960,7 @@ del scan_networks """ - out, err = self._interface.execute( - command, mode=self._submitMode, timeout=15000 - ) + out, err = self.executeCommands(command, mode=self._submitMode, timeout=15000) if err: return [], err @@ -1017,7 +1015,7 @@ interface ) - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: return False, err else: @@ -1070,9 +1068,7 @@ repr(ssid), security, repr(password), ifconfig ) - out, err = self._interface.execute( - command, mode=self._submitMode, timeout=15000 - ) + out, err = self.executeCommands(command, mode=self._submitMode, timeout=15000) if err: return False, err else: @@ -1113,9 +1109,7 @@ del get_stations """ - out, err = self._interface.execute( - command, mode=self._submitMode, timeout=10000 - ) + out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000) if err: return [], err @@ -1152,9 +1146,7 @@ print(has_bt()) del has_bt """ - out, err = self._interface.execute( - command, mode=self._submitMode, timeout=10000 - ) + out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000) if err: raise OSError(self._shortError(err)) return out.strip() == b"True" @@ -1200,7 +1192,7 @@ ble_status() del ble_status """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -1245,7 +1237,7 @@ activate_ble() del activate_ble """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -1274,7 +1266,7 @@ deactivate_ble() del deactivate_ble """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -1334,7 +1326,7 @@ """.format( timeout ) - out, err = self._interface.execute( + out, err = self.executeCommands( command, mode=self._submitMode, timeout=(timeout + 5) * 1000 ) if err: @@ -1379,7 +1371,7 @@ print(has_ntp()) del has_ntp """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) return out.strip() == b"True" @@ -1439,7 +1431,7 @@ """.format( repr(server), tzOffset, timeout ) - out, err = self._interface.execute( + out, err = self.executeCommands( command, mode=self._submitMode, timeout=(timeout + 2) * 1000 ) if err:
--- a/src/eric7/MicroPython/Devices/GenericMicroPythonDevices.py Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/MicroPython/Devices/GenericMicroPythonDevices.py Thu May 04 17:58:52 2023 +0200 @@ -249,7 +249,7 @@ Private slot to switch the board into 'bootloader' mode. """ if self.microPython.isConnected(): - self.microPython.deviceInterface().execute( + self.executeCommands( "import machine\nmachine.bootloader()\n", mode=self._submitMode ) # simulate pressing the disconnect button @@ -334,11 +334,12 @@ """ Private slot to reset the connected device. """ - self.microPython.deviceInterface().execute( - "import machine\nmachine.reset()\n", mode=self._submitMode - ) - # simulate pressing the disconnect button - self.microPython.on_connectButton_clicked() + if self.microPython.isConnected(): + self.executeCommands( + "import machine\nmachine.reset()\n", mode=self._submitMode + ) + # simulate pressing the disconnect button + self.microPython.on_connectButton_clicked() def getDocumentationUrl(self): """
--- a/src/eric7/MicroPython/Devices/MicrobitDevices.py Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/MicroPython/Devices/MicrobitDevices.py Thu May 04 17:58:52 2023 +0200 @@ -526,16 +526,18 @@ """ Private slot to reset the connected device. """ - if self.getDeviceType() == "bbc_microbit": - # BBC micro:bit - self.microPython.deviceInterface().execute( - "import microbit\nmicrobit.reset()\n", mode=self._submitMode - ) - else: - # Calliope mini - self.microPython.deviceInterface().execute( - "import calliope_mini\ncalliope_mini.reset()\n", mode=self._submitMode - ) + if self.microPython.isConnected(): + if self.getDeviceType() == "bbc_microbit": + # BBC micro:bit + self.executeCommands( + "import microbit\nmicrobit.reset()\n", mode=self._submitMode + ) + else: + # Calliope mini + self.executeCommands( + "import calliope_mini\ncalliope_mini.reset()\n", + mode=self._submitMode, + ) def getDocumentationUrl(self): """ @@ -626,7 +628,7 @@ print(__os_.listdir()) del __os_ """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) return ast.literal_eval(out.decode("utf-8")) @@ -674,7 +676,7 @@ """.format( showHidden ) - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) fileslist = ast.literal_eval(out.decode("utf-8")) @@ -765,9 +767,7 @@ print(has_bt()) del has_bt """ - out, err = self._interface.execute( - command, mode=self._submitMode, timeout=10000 - ) + out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000) if err: raise OSError(self._shortError(err)) return out.strip() == b"True" @@ -811,7 +811,7 @@ ble_status() del ble_status """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -848,7 +848,7 @@ activate_ble() del activate_ble """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -874,7 +874,7 @@ deactivate_ble() del deactivate_ble """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -935,7 +935,7 @@ """.format( timeout ) - out, err = self._interface.execute( + out, err = self.executeCommands( command, mode=self._submitMode, timeout=(timeout + 5) * 1000 ) if err:
--- a/src/eric7/MicroPython/Devices/PyBoardDevices.py Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/MicroPython/Devices/PyBoardDevices.py Thu May 04 17:58:52 2023 +0200 @@ -500,7 +500,7 @@ Private slot to activate the bootloader and disconnect. """ if self.microPython.isConnected(): - self.microPython.deviceInterface().execute( + self.executeCommands( [ "import pyb", "pyb.bootloader()", @@ -515,9 +515,10 @@ """ Private slot to reset the connected device. """ - self.microPython.deviceInterface().execute( - "import machine\nmachine.reset()\n", mode=self._submitMode - ) + if self.microPython.isConnected(): + self.executeCommands( + "import machine\nmachine.reset()\n", mode=self._submitMode + ) ################################################################## ## time related methods below
--- a/src/eric7/MicroPython/Devices/RP2040Devices.py Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/MicroPython/Devices/RP2040Devices.py Thu May 04 17:58:52 2023 +0200 @@ -239,7 +239,7 @@ Private slot to switch the board into 'bootloader' mode. """ if self.microPython.isConnected(): - self.microPython.deviceInterface().execute( + self.executeCommands( [ "import machine", "machine.bootloader()", @@ -338,9 +338,10 @@ """ Private slot to reset the connected device. """ - self.microPython.deviceInterface().execute( - "import machine\nmachine.reset()\n", mode=self._submitMode - ) + if self.microPython.isConnected(): + self.executeCommands( + "import machine\nmachine.reset()\n", mode=self._submitMode + ) def getDocumentationUrl(self): """ @@ -463,9 +464,7 @@ print(has_wifi()) del has_wifi """ - out, err = self._interface.execute( - command, mode=self._submitMode, timeout=10000 - ) + out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000) if err: if not err.startswith(b"Timeout "): raise OSError(self._shortError(err)) @@ -584,7 +583,7 @@ else: return super().getWifiData() - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -698,7 +697,7 @@ return super().connectWifi(ssid, password) with EricOverrideCursor(): - out, err = self._interface.execute( + out, err = self.executeCommands( command, mode=self._submitMode, timeout=15000 ) if err: @@ -756,7 +755,7 @@ else: return super().disconnectWifi() - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: return False, err @@ -823,7 +822,7 @@ return False, str(err) # modify boot.py - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: return False, err @@ -888,9 +887,7 @@ else: return super().checkInternet() - out, err = self._interface.execute( - command, mode=self._submitMode, timeout=10000 - ) + out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000) if err: return False, err @@ -953,9 +950,7 @@ else: return super().scanNetworks() - out, err = self._interface.execute( - command, mode=self._submitMode, timeout=15000 - ) + out, err = self.executeCommands(command, mode=self._submitMode, timeout=15000) if err: return [], err @@ -1031,7 +1026,7 @@ else: return super().deactivateInterface(interface) - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: return False, err else: @@ -1122,9 +1117,7 @@ else: return super().startAccessPoint(ssid, security=security, password=password) - out, err = self._interface.execute( - command, mode=self._submitMode, timeout=15000 - ) + out, err = self.executeCommands(command, mode=self._submitMode, timeout=15000) if err: return False, err else: @@ -1172,9 +1165,7 @@ else: return super().checkInternet() - out, err = self._interface.execute( - command, mode=self._submitMode, timeout=10000 - ) + out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000) if err: return [], err @@ -1209,9 +1200,7 @@ del has_eth """ - out, err = self._interface.execute( - command, mode=self._submitMode, timeout=10000 - ) + out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000) if err: raise OSError(self._shortError(err)) @@ -1250,7 +1239,7 @@ WiznetUtilities.mpyWiznetInit() ) - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) @@ -1307,7 +1296,7 @@ ) with EricOverrideCursor(): - out, err = self._interface.execute( + out, err = self.executeCommands( command, mode=self._submitMode, timeout=15000 ) if err: @@ -1339,7 +1328,7 @@ ) with EricOverrideCursor(): - out, err = self._interface.execute( + out, err = self.executeCommands( command, mode=self._submitMode, timeout=15000 ) if err: @@ -1378,9 +1367,7 @@ WiznetUtilities.mpyWiznetInit(), ) - out, err = self._interface.execute( - command, mode=self._submitMode, timeout=10000 - ) + out, err = self.executeCommands(command, mode=self._submitMode, timeout=10000) if err: return False, err @@ -1445,7 +1432,7 @@ return False, str(err) # modify boot.py - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: return False, err @@ -1490,7 +1477,7 @@ print(has_ntp()) del has_ntp """ - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: raise OSError(self._shortError(err)) return out.strip() == b"True" @@ -1551,7 +1538,7 @@ """.format( repr(server), tzOffset, timeout ) - out, err = self._interface.execute( + out, err = self.executeCommands( command, mode=self._submitMode, timeout=(timeout + 2) * 1000 ) if err: @@ -1586,7 +1573,7 @@ repr(country) ) - out, err = self._interface.execute(command, mode=self._submitMode) + out, err = self.executeCommands(command, mode=self._submitMode) if err: self.microPython.showError("rp2.country()", err)
--- a/src/eric7/MicroPython/Devices/STLinkDevices.py Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/MicroPython/Devices/STLinkDevices.py Thu May 04 17:58:52 2023 +0200 @@ -468,9 +468,10 @@ """ Private slot to reset the connected device. """ - self.microPython.deviceInterface().execute( - "import machine\nmachine.reset()\n", mode=self._submitMode - ) + if self.microPython.isConnected(): + self.executeCommands( + "import machine\nmachine.reset()\n", mode=self._submitMode + ) def createDevice(microPythonWidget, deviceType, vid, pid, boardName, serialNumber):
--- a/src/eric7/MicroPython/Devices/TeensyDevices.py Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/MicroPython/Devices/TeensyDevices.py Thu May 04 17:58:52 2023 +0200 @@ -243,9 +243,10 @@ """ Private slot to reset the connected device. """ - self.microPython.deviceInterface().execute( - "import machine\nmachine.reset()\n", mode=self._submitMode - ) + if self.microPython.isConnected(): + self.executeCommands( + "import machine\nmachine.reset()\n", mode=self._submitMode + ) ################################################################## ## time related methods below
--- a/src/eric7/MicroPython/MicroPythonDeviceInterface.py Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/MicroPython/MicroPythonDeviceInterface.py Thu May 04 17:58:52 2023 +0200 @@ -1,25 +1,13 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2019 - 2023 Detlev Offenbach <detlev@die-offenbachs.de> +# Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de> # """ -Module implementing some file system commands for MicroPython. +Module implementing an interface base class to talk to a connected MicroPython device. """ -from PyQt6.QtCore import ( - QCoreApplication, - QEventLoop, - QObject, - QThread, - QTimer, - pyqtSignal, - pyqtSlot, -) - -from eric7 import Preferences - -from .MicroPythonSerialPort import MicroPythonSerialPort +from PyQt6.QtCore import QObject, pyqtSignal, pyqtSlot class MicroPythonDeviceInterface(QObject): @@ -28,12 +16,14 @@ @signal executeAsyncFinished() emitted to indicate the end of an asynchronously executed list of commands (e.g. a script) - @signal dataReceived(data) emitted to send data received via the serial - connection for further processing + @signal dataReceived(data) emitted to send data received via the connection + for further processing + @signal osdInfo(str) emitted when some OSD data was received from the device """ executeAsyncFinished = pyqtSignal() dataReceived = pyqtSignal(bytes) + osdInfo = pyqtSignal(str) PasteModePrompt = b"=== " TracebackMarker = b"Traceback (most recent call last):" @@ -47,43 +37,35 @@ """ super().__init__(parent) - self.__repl = parent - - self.__blockReadyRead = False - - self.__serial = MicroPythonSerialPort( - timeout=Preferences.getMicroPython("SerialTimeout"), parent=self - ) - self.__serial.readyRead.connect(self.__readSerial) - @pyqtSlot() - def __readSerial(self): + def connectToDevice(self, connection): """ - Private slot to read all available serial data and emit it with the - "dataReceived" signal for further processing. - """ - if not self.__blockReadyRead: - data = bytes(self.__serial.readAll()) - self.dataReceived.emit(data) + Public slot to connect to the device. - @pyqtSlot() - def connectToDevice(self, port): - """ - Public slot to start the manager. - - @param port name of the port to be used + @param connection name of the connection to be used @type str @return flag indicating success @rtype bool + @exception NotImplementedError raised to indicate that this method needs to + be implemented in a derived class """ - return self.__serial.openSerialLink(port) + raise NotImplementedError( + "This method needs to be implemented in a derived class." + ) + + return False @pyqtSlot() def disconnectFromDevice(self): """ - Public slot to stop the thread. + Public slot to disconnect from the device. + + @exception NotImplementedError raised to indicate that this method needs to + be implemented in a derived class """ - self.__serial.closeSerialLink() + raise NotImplementedError( + "This method needs to be implemented in a derived class." + ) def isConnected(self): """ @@ -91,15 +73,21 @@ @return flag indicating the connection status @rtype bool + @exception NotImplementedError raised to indicate that this method needs to + be implemented in a derived class """ - return self.__serial.isConnected() + raise NotImplementedError( + "This method needs to be implemented in a derived class." + ) + + return False @pyqtSlot() def handlePreferencesChanged(self): """ Public slot to handle a change of the preferences. """ - self.__serial.setTimeout(Preferences.getMicroPython("SerialTimeout")) + pass def write(self, data): """ @@ -107,149 +95,37 @@ @param data data to be written @type bytes or bytearray - """ - self.__serial.isConnected() and self.__serial.write(data) - - def __pasteOn(self): - """ - Private method to switch the connected device to 'paste' mode. - - Note: switching to paste mode is done with synchronous writes. - - @return flag indicating success - @rtype bool - """ - if not self.__serial: - return False - - pasteMessage = b"paste mode; Ctrl-C to cancel, Ctrl-D to finish\r\n=== " - - self.__serial.clear() # clear any buffered output before entering paste mode - self.__serial.write(b"\x02") # end raw mode if required - written = self.__serial.waitForBytesWritten(500) - # time out after 500ms if device is not responding - if not written: - return False - for _i in range(3): - # CTRL-C three times to break out of loops - self.__serial.write(b"\r\x03") - written = self.__serial.waitForBytesWritten(500) - # time out after 500ms if device is not responding - if not written: - return False - QThread.msleep(10) - self.__serial.readAll() # read all data and discard it - self.__serial.write(b"\r\x05") # send CTRL-E to enter paste mode - self.__serial.readUntil(pasteMessage) - - if self.__serial.hasTimedOut(): - # it timed out; try it again and than fail - self.__serial.write(b"\r\x05") # send CTRL-E again - self.__serial.readUntil(pasteMessage) - if self.__serial.hasTimedOut(): - return False - - QCoreApplication.processEvents( - QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents - ) - self.__serial.readAll() # read all data and discard it - return True - - def __pasteOff(self): - """ - Private method to switch 'paste' mode off. + @exception NotImplementedError raised to indicate that this method needs to + be implemented in a derived class """ - if self.__serial: - self.__serial.write(b"\x04") # send CTRL-D to cancel paste mode - - def __rawOn(self): - """ - Private method to switch the connected device to 'raw' mode. - - Note: switching to raw mode is done with synchronous writes. - - @return flag indicating success - @rtype bool - """ - if not self.__serial: - return False - - rawReplMessage = b"raw REPL; CTRL-B to exit\r\n>" - - self.__serial.write(b"\x02") # end raw mode if required - written = self.__serial.waitForBytesWritten(500) - # time out after 500ms if device is not responding - if not written: - return False - for _i in range(3): - # CTRL-C three times to break out of loops - self.__serial.write(b"\r\x03") - written = self.__serial.waitForBytesWritten(500) - # time out after 500ms if device is not responding - if not written: - return False - QThread.msleep(10) - self.__serial.readAll() # read all data and discard it - self.__serial.write(b"\r\x01") # send CTRL-A to enter raw mode - self.__serial.readUntil(rawReplMessage) - if self.__serial.hasTimedOut(): - # it timed out; try it again and than fail - self.__serial.write(b"\r\x01") # send CTRL-A again - self.__serial.readUntil(rawReplMessage) - if self.__serial.hasTimedOut(): - return False - - QCoreApplication.processEvents( - QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents + raise NotImplementedError( + "This method needs to be implemented in a derived class." ) - self.__serial.readAll() # read all data and discard it - return True - - def __rawOff(self): - """ - Private method to switch 'raw' mode off. - """ - if self.__serial: - self.__serial.write(b"\x02") # send CTRL-B to cancel raw mode - self.__serial.readUntil(b">>> ") # read until Python prompt - self.__serial.readAll() # read all data and discard it def probeDevice(self): """ Public method to check the device is responding. - If the device has not been flashed with a MicroPython formware, the + If the device has not been flashed with a MicroPython firmware, the probe will fail. @return flag indicating a communicating MicroPython device @rtype bool + @exception NotImplementedError raised to indicate that this method needs to + be implemented in a derived class """ - if not self.__serial: - return False - - if not self.__serial.isConnected(): - return False + raise NotImplementedError( + "This method needs to be implemented in a derived class." + ) - # switch on raw mode - self.__blockReadyRead = True - ok = self.__pasteOn() - if not ok: - self.__blockReadyRead = False - return False - - # switch off raw mode - QThread.msleep(10) - self.__pasteOff() - self.__blockReadyRead = False - - return True + return False def execute(self, commands, *, mode="raw", timeout=0): """ Public method to send commands to the connected device and return the result. - If no serial connection is available, empty results will be returned. + If no connection is available, empty results will be returned. @param commands list of commands to be executed @type str or list of str @@ -261,205 +137,38 @@ @type int (optional) @return tuple containing stdout and stderr output of the device @rtype tuple of (bytes, bytes) + @exception NotImplementedError raised to indicate that this method needs to + be implemented in a derived class @exception ValueError raised in case of an unsupported submit mode """ + raise NotImplementedError( + "This method needs to be implemented in a derived class." + ) + if mode not in ("paste", "raw"): raise ValueError("Unsupported submit mode given ('{0}').".format(mode)) - if mode == "raw": - return self.__execute_raw(commands, timeout=timeout) - elif mode == "paste": - return self.__execute_paste(commands, timeout=timeout) - else: - # just in case - return b"", b"" - - def __execute_raw(self, commands, timeout=0): - """ - Private method to send commands to the connected device using 'raw REPL' mode - and return the result. - - If no serial connection is available, empty results will be returned. - - @param commands list of commands to be executed - @type str or list of str - @param timeout per command timeout in milliseconds (0 for configured default) - (defaults to 0) - @type int (optional) - @return tuple containing stdout and stderr output of the device - @rtype tuple of (bytes, bytes) - """ - if not self.__serial: - return b"", b"" - - if not self.__serial.isConnected(): - return b"", b"Device not connected or not switched on." - - result = bytearray() - err = b"" - - if isinstance(commands, str): - commands = [commands] - - # switch on raw mode - self.__blockReadyRead = True - ok = self.__rawOn() - if not ok: - self.__blockReadyRead = False - return (b"", b"Could not switch to raw mode. Is the device switched on?") - - # send commands - QThread.msleep(10) - for command in commands: - if command: - commandBytes = command.encode("utf-8") - self.__serial.write(commandBytes + b"\x04") - QCoreApplication.processEvents( - QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents - ) - ok = self.__serial.readUntil(b"OK") - if ok != b"OK": - self.__blockReadyRead = False - return ( - b"", - "Expected 'OK', got '{0}', followed by '{1}'".format( - ok, self.__serial.readAll() - ).encode("utf-8"), - ) - - # read until prompt - response = self.__serial.readUntil(b"\x04>", timeout=timeout) - if self.__serial.hasTimedOut(): - self.__blockReadyRead = False - return b"", b"Timeout while processing commands." - if b"\x04" in response[:-2]: - # split stdout, stderr - out, err = response[:-2].split(b"\x04") - result += out - else: - err = b"invalid response received: " + response - if err: - result = b"" - break - - # switch off raw mode - QThread.msleep(10) - self.__rawOff() - self.__blockReadyRead = False + return b"", b"" - return bytes(result), err - - def __execute_paste(self, commands, timeout=0): - """ - Private method to send commands to the connected device using 'paste' mode - and return the result. - - If no serial connection is available, empty results will be returned. - - @param commands list of commands to be executed - @type str or list of str - @param timeout per command timeout in milliseconds (0 for configured default) - (defaults to 0) - @type int (optional) - @return tuple containing stdout and stderr output of the device - @rtype tuple of (bytes, bytes) - """ - if not self.__serial: - return b"", b"" - - if not self.__serial.isConnected(): - return b"", b"Device not connected or not switched on." - - if isinstance(commands, list): - commands = "\n".join(commands) - - # switch on paste mode - self.__blockReadyRead = True - ok = self.__pasteOn() - if not ok: - self.__blockReadyRead = False - return (b"", b"Could not switch to paste mode. Is the device switched on?") - - # send commands - QThread.msleep(10) - for command in commands.splitlines(keepends=True): - # send the data as single lines - commandBytes = command.encode("utf-8") - self.__serial.write(commandBytes) - QCoreApplication.processEvents( - QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents - ) - QThread.msleep(10) - ok = self.__serial.readUntil(commandBytes) - if ok != commandBytes: - self.__blockReadyRead = False - return ( - b"", - "Expected '{0}', got '{1}', followed by '{2}'".format( - commandBytes, ok, self.__serial.readAll() - ).encode("utf-8"), - ) - - # switch off paste mode causing the commands to be executed - self.__pasteOff() - QThread.msleep(10) - # read until Python prompt - result = ( - self.__serial.readUntil(b">>> ", timeout=timeout) - .replace(b">>> ", b"") - .strip() - ) - if self.__serial.hasTimedOut(): - self.__blockReadyRead = False - return b"", b"Timeout while processing commands." - - # get rid of any OSD string - if result.startswith(b"\x1b]0;"): - result = result.split(b"\x1b\\")[-1] - - if self.TracebackMarker in result: - errorIndex = result.find(self.TracebackMarker) - out, err = result[:errorIndex], result[errorIndex:] - else: - out = result - err = b"" - - self.__blockReadyRead = False - return out, err - - def executeAsync(self, commandsList): + def executeAsync(self, commandsList, submitMode): """ Public method to execute a series of commands over a period of time without returning any result (asynchronous execution). @param commandsList list of commands to be execute on the device - @type list of bytes + @type list of str + @param submitMode mode to be used to submit the commands (one of 'raw' + or 'paste') + @type str + @exception NotImplementedError raised to indicate that this method needs to + be implemented in a derived class + @exception ValueError raised to indicate an unknown submit mode """ - if commandsList: - command = commandsList.pop(0) - self.__serial.write(command) - QTimer.singleShot(2, lambda: self.executeAsync(commandsList)) - else: - self.executeAsyncFinished.emit() - - def executeAsyncPaste(self, commandsList): - """ - Public method to execute a series of commands over a period of time - without returning any result (asynchronous execution). + raise NotImplementedError( + "This method needs to be implemented in a derived class." + ) - @param commandsList list of commands to be execute on the device - @type list of bytes - """ - if commandsList: - self.__blockReadyRead = True - command = commandsList.pop(0) - if command == "@PasteOn@": - self.__pasteOn() - else: - self.__serial.write(command) - self.__serial.readUntil(command) - QTimer.singleShot(2, lambda: self.executeAsyncPaste(commandsList)) - else: - self.__blockReadyRead = False - self.__pasteOff() - self.executeAsyncFinished.emit() + if submitMode not in ("raw", "paste"): + raise ValueError( + "Unsupported submit mode given ('{0}').".format(submitMode) + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/MicroPython/MicroPythonReplWidget.py Thu May 04 17:58:52 2023 +0200 @@ -0,0 +1,703 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing the MicroPython REPL widget. +""" + +import re + +from PyQt6.QtCore import QPoint, Qt, pyqtSignal, pyqtSlot +from PyQt6.QtGui import ( + QBrush, + QClipboard, + QColor, + QGuiApplication, + QKeySequence, + QTextCursor, +) +from PyQt6.QtWidgets import ( + QHBoxLayout, + QLabel, + QMenu, + QSizePolicy, + QTextEdit, + QVBoxLayout, + QWidget, +) + +from eric7 import Preferences +from eric7.EricGui import EricPixmapCache +from eric7.EricWidgets.EricZoomWidget import EricZoomWidget +from eric7.SystemUtilities import OSUtilities + +AnsiColorSchemes = { + "Windows 7": { + 0: QBrush(QColor(0, 0, 0)), + 1: QBrush(QColor(128, 0, 0)), + 2: QBrush(QColor(0, 128, 0)), + 3: QBrush(QColor(128, 128, 0)), + 4: QBrush(QColor(0, 0, 128)), + 5: QBrush(QColor(128, 0, 128)), + 6: QBrush(QColor(0, 128, 128)), + 7: QBrush(QColor(192, 192, 192)), + 10: QBrush(QColor(128, 128, 128)), + 11: QBrush(QColor(255, 0, 0)), + 12: QBrush(QColor(0, 255, 0)), + 13: QBrush(QColor(255, 255, 0)), + 14: QBrush(QColor(0, 0, 255)), + 15: QBrush(QColor(255, 0, 255)), + 16: QBrush(QColor(0, 255, 255)), + 17: QBrush(QColor(255, 255, 255)), + }, + "Windows 10": { + 0: QBrush(QColor(12, 12, 12)), + 1: QBrush(QColor(197, 15, 31)), + 2: QBrush(QColor(19, 161, 14)), + 3: QBrush(QColor(193, 156, 0)), + 4: QBrush(QColor(0, 55, 218)), + 5: QBrush(QColor(136, 23, 152)), + 6: QBrush(QColor(58, 150, 221)), + 7: QBrush(QColor(204, 204, 204)), + 10: QBrush(QColor(118, 118, 118)), + 11: QBrush(QColor(231, 72, 86)), + 12: QBrush(QColor(22, 198, 12)), + 13: QBrush(QColor(249, 241, 165)), + 14: QBrush(QColor(59, 12, 255)), + 15: QBrush(QColor(180, 0, 158)), + 16: QBrush(QColor(97, 214, 214)), + 17: QBrush(QColor(242, 242, 242)), + }, + "PuTTY": { + 0: QBrush(QColor(0, 0, 0)), + 1: QBrush(QColor(187, 0, 0)), + 2: QBrush(QColor(0, 187, 0)), + 3: QBrush(QColor(187, 187, 0)), + 4: QBrush(QColor(0, 0, 187)), + 5: QBrush(QColor(187, 0, 187)), + 6: QBrush(QColor(0, 187, 187)), + 7: QBrush(QColor(187, 187, 187)), + 10: QBrush(QColor(85, 85, 85)), + 11: QBrush(QColor(255, 85, 85)), + 12: QBrush(QColor(85, 255, 85)), + 13: QBrush(QColor(255, 255, 85)), + 14: QBrush(QColor(85, 85, 255)), + 15: QBrush(QColor(255, 85, 255)), + 16: QBrush(QColor(85, 255, 255)), + 17: QBrush(QColor(255, 255, 255)), + }, + "xterm": { + 0: QBrush(QColor(0, 0, 0)), + 1: QBrush(QColor(205, 0, 0)), + 2: QBrush(QColor(0, 205, 0)), + 3: QBrush(QColor(205, 205, 0)), + 4: QBrush(QColor(0, 0, 238)), + 5: QBrush(QColor(205, 0, 205)), + 6: QBrush(QColor(0, 205, 205)), + 7: QBrush(QColor(229, 229, 229)), + 10: QBrush(QColor(127, 127, 127)), + 11: QBrush(QColor(255, 0, 0)), + 12: QBrush(QColor(0, 255, 0)), + 13: QBrush(QColor(255, 255, 0)), + 14: QBrush(QColor(0, 0, 255)), + 15: QBrush(QColor(255, 0, 255)), + 16: QBrush(QColor(0, 255, 255)), + 17: QBrush(QColor(255, 255, 255)), + }, + "Ubuntu": { + 0: QBrush(QColor(1, 1, 1)), + 1: QBrush(QColor(222, 56, 43)), + 2: QBrush(QColor(57, 181, 74)), + 3: QBrush(QColor(255, 199, 6)), + 4: QBrush(QColor(0, 11, 184)), + 5: QBrush(QColor(118, 38, 113)), + 6: QBrush(QColor(44, 181, 233)), + 7: QBrush(QColor(204, 204, 204)), + 10: QBrush(QColor(128, 128, 128)), + 11: QBrush(QColor(255, 0, 0)), + 12: QBrush(QColor(0, 255, 0)), + 13: QBrush(QColor(255, 255, 0)), + 14: QBrush(QColor(0, 0, 255)), + 15: QBrush(QColor(255, 0, 255)), + 16: QBrush(QColor(0, 255, 255)), + 17: QBrush(QColor(255, 255, 255)), + }, + "Ubuntu (dark)": { + 0: QBrush(QColor(96, 96, 96)), + 1: QBrush(QColor(235, 58, 45)), + 2: QBrush(QColor(57, 181, 74)), + 3: QBrush(QColor(255, 199, 29)), + 4: QBrush(QColor(25, 56, 230)), + 5: QBrush(QColor(200, 64, 193)), + 6: QBrush(QColor(48, 200, 255)), + 7: QBrush(QColor(204, 204, 204)), + 10: QBrush(QColor(128, 128, 128)), + 11: QBrush(QColor(255, 0, 0)), + 12: QBrush(QColor(0, 255, 0)), + 13: QBrush(QColor(255, 255, 0)), + 14: QBrush(QColor(0, 0, 255)), + 15: QBrush(QColor(255, 0, 255)), + 16: QBrush(QColor(0, 255, 255)), + 17: QBrush(QColor(255, 255, 255)), + }, + "Breeze (dark)": { + 0: QBrush(QColor(35, 38, 39)), + 1: QBrush(QColor(237, 21, 21)), + 2: QBrush(QColor(17, 209, 22)), + 3: QBrush(QColor(246, 116, 0)), + 4: QBrush(QColor(29, 153, 243)), + 5: QBrush(QColor(155, 89, 182)), + 6: QBrush(QColor(26, 188, 156)), + 7: QBrush(QColor(252, 252, 252)), + 10: QBrush(QColor(127, 140, 141)), + 11: QBrush(QColor(192, 57, 43)), + 12: QBrush(QColor(28, 220, 154)), + 13: QBrush(QColor(253, 188, 75)), + 14: QBrush(QColor(61, 174, 233)), + 15: QBrush(QColor(142, 68, 173)), + 16: QBrush(QColor(22, 160, 133)), + 17: QBrush(QColor(255, 255, 255)), + }, +} + + +class MicroPythonReplWidget(QWidget): + """ + Class implementing the MicroPython REPL widget. + """ + + ZoomMin = -10 + ZoomMax = 20 + + def __init__(self, parent=None): + """ + Constructor + + @param parent reference to the parent widget (defaults to None) + @type QWidget (optional) + """ + super().__init__(parent=parent) + + self.__layout = QVBoxLayout(self) + self.__layout.setContentsMargins(0, 0, 0, 0) + + self.__zoomLayout = QHBoxLayout() + self.__osdLabel = QLabel() + self.__osdLabel.setSizePolicy( + QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred + ) + self.__zoomLayout.addWidget(self.__osdLabel) + + self.__zoomWidget = EricZoomWidget( + EricPixmapCache.getPixmap("zoomOut"), + EricPixmapCache.getPixmap("zoomIn"), + EricPixmapCache.getPixmap("zoomReset"), + self, + ) + self.__zoomWidget.setMinimum(self.ZoomMin) + self.__zoomWidget.setMaximum(self.ZoomMax) + self.__zoomLayout.addWidget(self.__zoomWidget) + self.__layout.addLayout(self.__zoomLayout) + + self.__replEdit = MicroPythonReplEdit(self) + self.__layout.addWidget(self.__replEdit) + + self.setLayout(self.__layout) + + self.__zoomWidget.valueChanged.connect(self.__replEdit.doZoom) + self.__replEdit.osdInfo.connect(self.setOSDInfo) + + @pyqtSlot(str) + def setOSDInfo(self, infoStr): + """ + Public slot to set the OSD information. + + @param infoStr string to be shown + @type str + """ + self.__osdLabel.setText(infoStr) + + @pyqtSlot() + def clearOSD(self): + """ + Public slot to clear the OSD info. + """ + self.__osdLabel.clear() + + def replEdit(self): + """ + Public method to get a reference to the REPL edit. + + @return reference to the REPL edit + @rtype MicroPythonReplEdit + """ + return self.__replEdit + + +class MicroPythonReplEdit(QTextEdit): + """ + Class implementing the REPL edit pane. + + @signal osdInfo(str) emitted when some OSD data was received from the device + """ + + osdInfo = pyqtSignal(str) + + def __init__(self, parent=None): + """ + Constructor + + @param parent reference to the parent widget (defaults to None) + @type QWidget (optional) + """ + super().__init__(parent=parent) + + self.setAcceptRichText(False) + self.setUndoRedoEnabled(False) + self.setLineWrapMode(QTextEdit.LineWrapMode.NoWrap) + self.setContextMenuPolicy(Qt.ContextMenuPolicy.CustomContextMenu) + + self.__currentZoom = 0 + + self.__replBuffer = b"" + + self.__vt100Re = re.compile( + r"(?P<count>\d*)(?P<color>(?:;?\d*)*)(?P<action>[ABCDKm])" + ) + + self.customContextMenuRequested.connect(self.__showContextMenu) + + charFormat = self.currentCharFormat() + self.DefaultForeground = charFormat.foreground() + self.DefaultBackground = charFormat.background() + + self.__interface = None + + def setInterface(self, deviceInterface): + """ + Public method to set the reference to the device interface object. + + @param deviceInterface reference to the device interface object + @type MicroPythonDeviceInterface + """ + self.__interface = deviceInterface + + @pyqtSlot(int) + def doZoom(self, value): + """ + Public slot to zoom in or out. + + @param value zoom value + @type int + """ + if value < self.__currentZoom: + self.zoomOut(self.__currentZoom - value) + elif value > self.__currentZoom: + self.zoomIn(value - self.__currentZoom) + self.__currentZoom = value + + @pyqtSlot(QPoint) + def __showContextMenu(self, pos): + """ + Private slot to show the REPL context menu. + + @param pos position to show the menu at + @type QPoint + """ + connected = bool(self.__interface) and self.__interface.isConnected() + + if OSUtilities.isMacPlatform(): + copyKeys = QKeySequence("Ctrl+C") + pasteKeys = QKeySequence("Ctrl+V") + selectAllKeys = QKeySequence("Ctrl+A") + else: + copyKeys = QKeySequence("Ctrl+Shift+C") + pasteKeys = QKeySequence("Ctrl+Shift+V") + selectAllKeys = QKeySequence("Ctrl+Shift+A") + + menu = QMenu(self) + menu.addAction( + EricPixmapCache.getIcon("editDelete"), self.tr("Clear"), self.__clear + ).setEnabled(bool(self.toPlainText())) + menu.addSeparator() + menu.addAction( + EricPixmapCache.getIcon("editCopy"), + self.tr("Copy"), + copyKeys, + self.copy, + ).setEnabled(self.textCursor().hasSelection()) + menu.addAction( + EricPixmapCache.getIcon("editPaste"), + self.tr("Paste"), + pasteKeys, + self.__paste, + ).setEnabled(self.canPaste() and connected) + menu.addSeparator() + menu.addAction( + EricPixmapCache.getIcon("editSelectAll"), + self.tr("Select All"), + selectAllKeys, + self.selectAll, + ).setEnabled(bool(self.toPlainText())) + + menu.exec(self.mapToGlobal(pos)) + + @pyqtSlot() + def handlePreferencesChanged(self): + """ + Public slot to handle a change in preferences. + """ + self.__colorScheme = Preferences.getMicroPython("ColorScheme") + + self.__font = Preferences.getEditorOtherFonts("MonospacedFont") + self.setFontFamily(self.__font.family()) + self.setFontPointSize(self.__font.pointSize()) + + if Preferences.getMicroPython("ReplLineWrap"): + self.setLineWrapMode(QTextEdit.LineWrapMode.WidgetWidth) + else: + self.setLineWrapMode(QTextEdit.LineWrapMode.NoWrap) + + @pyqtSlot() + def __clear(self): + """ + Private slot to clear the REPL pane. + """ + self.clear() + if bool(self.__interface) and self.__interface.isConnected(): + self.__interface.write(b"\r") + + @pyqtSlot() + def __paste(self, mode=QClipboard.Mode.Clipboard): + """ + Private slot to perform a paste operation. + + @param mode paste mode (defaults to QClipboard.Mode.Clipboard) + @type QClipboard.Mode (optional) + """ + # add support for paste by mouse middle button + clipboard = QGuiApplication.clipboard() + if clipboard: + pasteText = clipboard.text(mode=mode) + if pasteText: + pasteText = pasteText.replace("\n\r", "\r") + pasteText = pasteText.replace("\n", "\r") + if bool(self.__interface) and self.__interface.isConnected(): + self.__interface.write(b"\x05") + self.__interface.write(pasteText.encode("utf-8")) + self.__interface.write(b"\x04") + + def keyPressEvent(self, evt): + """ + Protected method to handle key press events. + + @param evt reference to the key press event + @type QKeyEvent + """ + key = evt.key() + msg = bytes(evt.text(), "utf8") + if key == Qt.Key.Key_Backspace: + msg = b"\b" + elif key == Qt.Key.Key_Delete: + msg = b"\x1B[\x33\x7E" + elif key == Qt.Key.Key_Up: + msg = b"\x1B[A" + elif key == Qt.Key.Key_Down: + msg = b"\x1B[B" + elif key == Qt.Key.Key_Right: + msg = b"\x1B[C" + elif key == Qt.Key.Key_Left: + msg = b"\x1B[D" + elif key == Qt.Key.Key_Home: + msg = b"\x1B[H" + elif key == Qt.Key.Key_End: + msg = b"\x1B[F" + elif ( + OSUtilities.isMacPlatform() + and evt.modifiers() == Qt.KeyboardModifier.MetaModifier + ) or ( + not OSUtilities.isMacPlatform() + and evt.modifiers() == Qt.KeyboardModifier.ControlModifier + ): + if Qt.Key.Key_A <= key <= Qt.Key.Key_Z: + # devices treat an input of \x01 as Ctrl+A, etc. + msg = bytes([1 + key - Qt.Key.Key_A]) + elif evt.modifiers() == ( + Qt.KeyboardModifier.ControlModifier | Qt.KeyboardModifier.ShiftModifier + ) or ( + OSUtilities.isMacPlatform() + and evt.modifiers() == Qt.KeyboardModifier.ControlModifier + ): + if key == Qt.Key.Key_C: + self.copy() + msg = b"" + elif key == Qt.Key.Key_V: + self.__paste() + msg = b"" + elif key == Qt.Key.Key_A: + self.selectAll() + msg = b"" + elif key in (Qt.Key.Key_Return, Qt.Key.Key_Enter): + tc = self.textCursor() + tc.movePosition(QTextCursor.MoveOperation.EndOfLine) + self.setTextCursor(tc) + if bool(self.__interface) and self.__interface.isConnected(): + self.__interface.write(msg) + + evt.accept() + + def mouseReleaseEvent(self, evt): + """ + Protected method to handle mouse release events. + + @param evt reference to the event object + @type QMouseEvent + """ + if evt.button() == Qt.MouseButton.MiddleButton: + self.__paste(mode=QClipboard.Mode.Selection) + msg = b"" + if bool(self.__interface) and self.__interface.isConnected(): + self.__interface.write(msg) + evt.accept() + else: + super().mouseReleaseEvent(evt) + + @pyqtSlot(bytes) + def processData(self, data): + """ + Public slot to process the data received from the device. + + @param data data received from the device + @type bytes + """ + tc = self.textCursor() + # the text cursor must be on the last line + while tc.movePosition(QTextCursor.MoveOperation.Down): + pass + + # reset the font + charFormat = tc.charFormat() + self.__setCharFormat(None, tc) + tc.setCharFormat(charFormat) + + # add received data to the buffered one + data = self.__replBuffer + data + + index = 0 + while index < len(data): + if data[index] == 8: # \b + tc.movePosition(QTextCursor.MoveOperation.Left) + self.setTextCursor(tc) + elif data[index] in (4, 13): # EOT, \r + pass + elif len(data) > index + 1 and data[index] == 27 and data[index + 1] == 91: + # VT100 cursor command detected: <Esc>[ + index += 2 # move index to after the [ + match = self.__vt100Re.search( + data[index:].decode("utf-8", errors="replace") + ) + if match: + # move to last position in control sequence + # ++ will be done at end of loop + index += match.end() - 1 + + action = match.group("action") + if action in "ABCD": + if match.group("count") == "": + count = 1 + else: + count = int(match.group("count")) + + if action == "A": # up + tc.movePosition(QTextCursor.MoveOperation.Up, n=count) + self.setTextCursor(tc) + elif action == "B": # down + tc.movePosition(QTextCursor.MoveOperation.Down, n=count) + self.setTextCursor(tc) + elif action == "C": # right + tc.movePosition(QTextCursor.MoveOperation.Right, n=count) + self.setTextCursor(tc) + elif action == "D": # left + tc.movePosition(QTextCursor.MoveOperation.Left, n=count) + self.setTextCursor(tc) + elif action == "K": # delete things + if match.group("count") in ("", "0"): + # delete to end of line + tc.movePosition( + QTextCursor.MoveOperation.EndOfLine, + mode=QTextCursor.MoveMode.KeepAnchor, + ) + tc.removeSelectedText() + self.setTextCursor(tc) + elif match.group("count") == "1": + # delete to beginning of line + tc.movePosition( + QTextCursor.MoveOperation.StartOfLine, + mode=QTextCursor.MoveMode.KeepAnchor, + ) + tc.removeSelectedText() + self.setTextCursor(tc) + elif match.group("count") == "2": + # delete whole line + tc.movePosition(QTextCursor.MoveOperation.EndOfLine) + tc.movePosition( + QTextCursor.MoveOperation.StartOfLine, + mode=QTextCursor.MoveMode.KeepAnchor, + ) + tc.removeSelectedText() + self.setTextCursor(tc) + elif action == "m": + self.__setCharFormat(match.group(0)[:-1].split(";"), tc) + elif ( + len(data) > index + 1 + and data[index] == 27 + and data[index + 1 : index + 4] == b"]0;" + ): + if b"\x1b\\" in data[index + 4 :]: + # 'set window title' command detected: <Esc>]0;...<Esc>\ + # __IGNORE_WARNING_M891__ + titleData = data[index + 4 :].split(b"\x1b\\")[0] + title = titleData.decode("utf-8") + index += len(titleData) + 5 # one more is done at the end + self.osdInfo.emit(title) + else: + # data is incomplete; buffer and stop processing + self.__replBuffer = data[index:] + return + else: + tc.deleteChar() + self.setTextCursor(tc) + self.insertPlainText(chr(data[index])) + + index += 1 + + self.ensureCursorVisible() + self.__replBuffer = b"" + + def __setCharFormat(self, formatCodes, textCursor): + """ + Private method setting the current text format of the REPL pane based + on the passed ANSI codes. + + Following codes are used: + <ul> + <li>0: Reset</li> + <li>1: Bold font (weight 75)</li> + <li>2: Light font (weight 25)</li> + <li>3: Italic font</li> + <li>4: Underlined font</li> + <li>9: Strikeout font</li> + <li>21: Bold off (weight 50)</li> + <li>22: Light off (weight 50)</li> + <li>23: Italic off</li> + <li>24: Underline off</li> + <li>29: Strikeout off</li> + <li>30: foreground Black</li> + <li>31: foreground Dark Red</li> + <li>32: foreground Dark Green</li> + <li>33: foreground Dark Yellow</li> + <li>34: foreground Dark Blue</li> + <li>35: foreground Dark Magenta</li> + <li>36: foreground Dark Cyan</li> + <li>37: foreground Light Gray</li> + <li>39: reset foreground to default</li> + <li>40: background Black</li> + <li>41: background Dark Red</li> + <li>42: background Dark Green</li> + <li>43: background Dark Yellow</li> + <li>44: background Dark Blue</li> + <li>45: background Dark Magenta</li> + <li>46: background Dark Cyan</li> + <li>47: background Light Gray</li> + <li>49: reset background to default</li> + <li>53: Overlined font</li> + <li>55: Overline off</li> + <li>90: bright foreground Dark Gray</li> + <li>91: bright foreground Red</li> + <li>92: bright foreground Green</li> + <li>93: bright foreground Yellow</li> + <li>94: bright foreground Blue</li> + <li>95: bright foreground Magenta</li> + <li>96: bright foreground Cyan</li> + <li>97: bright foreground White</li> + <li>100: bright background Dark Gray</li> + <li>101: bright background Red</li> + <li>102: bright background Green</li> + <li>103: bright background Yellow</li> + <li>104: bright background Blue</li> + <li>105: bright background Magenta</li> + <li>106: bright background Cyan</li> + <li>107: bright background White</li> + </ul> + + @param formatCodes list of format codes + @type list of str + @param textCursor reference to the text cursor + @type QTextCursor + """ + if not formatCodes: + # empty format codes list is treated as a reset + formatCodes = ["0"] + + charFormat = textCursor.charFormat() + for formatCode in formatCodes: + try: + formatCode = int(formatCode) + except ValueError: + # ignore non digit values + continue + + if formatCode == 0: + charFormat.setFontWeight(50) + charFormat.setFontItalic(False) + charFormat.setFontUnderline(False) + charFormat.setFontStrikeOut(False) + charFormat.setFontOverline(False) + charFormat.setForeground(self.DefaultForeground) + charFormat.setBackground(self.DefaultBackground) + elif formatCode == 1: + charFormat.setFontWeight(75) + elif formatCode == 2: + charFormat.setFontWeight(25) + elif formatCode == 3: + charFormat.setFontItalic(True) + elif formatCode == 4: + charFormat.setFontUnderline(True) + elif formatCode == 9: + charFormat.setFontStrikeOut(True) + elif formatCode in (21, 22): + charFormat.setFontWeight(50) + elif formatCode == 23: + charFormat.setFontItalic(False) + elif formatCode == 24: + charFormat.setFontUnderline(False) + elif formatCode == 29: + charFormat.setFontStrikeOut(False) + elif formatCode == 53: + charFormat.setFontOverline(True) + elif formatCode == 55: + charFormat.setFontOverline(False) + elif formatCode in (30, 31, 32, 33, 34, 35, 36, 37): + charFormat.setForeground( + AnsiColorSchemes[self.__colorScheme][formatCode - 30] + ) + elif formatCode in (40, 41, 42, 43, 44, 45, 46, 47): + charFormat.setBackground( + AnsiColorSchemes[self.__colorScheme][formatCode - 40] + ) + elif formatCode in (90, 91, 92, 93, 94, 95, 96, 97): + charFormat.setForeground( + AnsiColorSchemes[self.__colorScheme][formatCode - 80] + ) + elif formatCode in (100, 101, 102, 103, 104, 105, 106, 107): + charFormat.setBackground( + AnsiColorSchemes[self.__colorScheme][formatCode - 90] + ) + elif formatCode == 39: + charFormat.setForeground(self.DefaultForeground) + elif formatCode == 49: + charFormat.setBackground(self.DefaultBackground) + + textCursor.setCharFormat(charFormat)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/MicroPython/MicroPythonSerialDeviceInterface.py Thu May 04 17:58:52 2023 +0200 @@ -0,0 +1,477 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2019 - 2023 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing an interface to talk to a connected MicroPython device via +a serial link. +""" + +from PyQt6.QtCore import QCoreApplication, QEventLoop, QThread, QTimer, pyqtSlot + +from eric7 import Preferences + +from .MicroPythonDeviceInterface import MicroPythonDeviceInterface +from .MicroPythonSerialPort import MicroPythonSerialPort + + +class MicroPythonSerialDeviceInterface(MicroPythonDeviceInterface): + """ + Class implementing an interface to talk to a connected MicroPython device via + a serial link. + """ + + def __init__(self, parent=None): + """ + Constructor + + @param parent reference to the parent object + @type QObject + """ + super().__init__(parent) + + self.__blockReadyRead = False + + self.__serial = MicroPythonSerialPort( + timeout=Preferences.getMicroPython("SerialTimeout"), parent=self + ) + self.__serial.readyRead.connect(self.__readSerial) + + @pyqtSlot() + def __readSerial(self): + """ + Private slot to read all available serial data and emit it with the + "dataReceived" signal for further processing. + """ + if not self.__blockReadyRead: + data = bytes(self.__serial.readAll()) + self.dataReceived.emit(data) + + @pyqtSlot() + def connectToDevice(self, connection): + """ + Public slot to connect to the device. + + @param connection name of the connection to be used + @type str + @return flag indicating success + @rtype bool + """ + return self.__serial.openSerialLink(connection) + + @pyqtSlot() + def disconnectFromDevice(self): + """ + Public slot to disconnect from the device. + """ + self.__serial.closeSerialLink() + + def isConnected(self): + """ + Public method to get the connection status. + + @return flag indicating the connection status + @rtype bool + """ + return self.__serial.isConnected() + + @pyqtSlot() + def handlePreferencesChanged(self): + """ + Public slot to handle a change of the preferences. + """ + self.__serial.setTimeout(Preferences.getMicroPython("SerialTimeout")) + + def write(self, data): + """ + Public method to write data to the connected device. + + @param data data to be written + @type bytes or bytearray + """ + self.__serial.isConnected() and self.__serial.write(data) + + def __pasteOn(self): + """ + Private method to switch the connected device to 'paste' mode. + + Note: switching to paste mode is done with synchronous writes. + + @return flag indicating success + @rtype bool + """ + if not self.__serial: + return False + + pasteMessage = b"paste mode; Ctrl-C to cancel, Ctrl-D to finish\r\n=== " + + self.__serial.clear() # clear any buffered output before entering paste mode + self.__serial.write(b"\x02") # end raw mode if required + written = self.__serial.waitForBytesWritten(500) + # time out after 500ms if device is not responding + if not written: + return False + for _i in range(3): + # CTRL-C three times to break out of loops + self.__serial.write(b"\r\x03") + written = self.__serial.waitForBytesWritten(500) + # time out after 500ms if device is not responding + if not written: + return False + QThread.msleep(10) + self.__serial.readAll() # read all data and discard it + self.__serial.write(b"\r\x05") # send CTRL-E to enter paste mode + self.__serial.readUntil(pasteMessage) + + if self.__serial.hasTimedOut(): + # it timed out; try it again and than fail + self.__serial.write(b"\r\x05") # send CTRL-E again + self.__serial.readUntil(pasteMessage) + if self.__serial.hasTimedOut(): + return False + + QCoreApplication.processEvents( + QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents + ) + self.__serial.readAll() # read all data and discard it + return True + + def __pasteOff(self): + """ + Private method to switch 'paste' mode off. + """ + if self.__serial: + self.__serial.write(b"\x04") # send CTRL-D to cancel paste mode + + def __rawOn(self): + """ + Private method to switch the connected device to 'raw' mode. + + Note: switching to raw mode is done with synchronous writes. + + @return flag indicating success + @rtype bool + """ + if not self.__serial: + return False + + rawReplMessage = b"raw REPL; CTRL-B to exit\r\n>" + + self.__serial.write(b"\x02") # end raw mode if required + written = self.__serial.waitForBytesWritten(500) + # time out after 500ms if device is not responding + if not written: + return False + for _i in range(3): + # CTRL-C three times to break out of loops + self.__serial.write(b"\r\x03") + written = self.__serial.waitForBytesWritten(500) + # time out after 500ms if device is not responding + if not written: + return False + QThread.msleep(10) + self.__serial.readAll() # read all data and discard it + self.__serial.write(b"\r\x01") # send CTRL-A to enter raw mode + self.__serial.readUntil(rawReplMessage) + if self.__serial.hasTimedOut(): + # it timed out; try it again and than fail + self.__serial.write(b"\r\x01") # send CTRL-A again + self.__serial.readUntil(rawReplMessage) + if self.__serial.hasTimedOut(): + return False + + QCoreApplication.processEvents( + QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents + ) + self.__serial.readAll() # read all data and discard it + return True + + def __rawOff(self): + """ + Private method to switch 'raw' mode off. + """ + if self.__serial: + self.__serial.write(b"\x02") # send CTRL-B to cancel raw mode + self.__serial.readUntil(b">>> ") # read until Python prompt + self.__serial.readAll() # read all data and discard it + + def probeDevice(self): + """ + Public method to check the device is responding. + + If the device has not been flashed with a MicroPython firmware, the + probe will fail. + + @return flag indicating a communicating MicroPython device + @rtype bool + """ + if not self.__serial: + return False + + if not self.__serial.isConnected(): + return False + + # switch on paste mode + self.__blockReadyRead = True + ok = self.__pasteOn() + if not ok: + self.__blockReadyRead = False + return False + + # switch off paste mode + QThread.msleep(10) + self.__pasteOff() + self.__blockReadyRead = False + + return True + + def execute(self, commands, *, mode="raw", timeout=0): + """ + Public method to send commands to the connected device and return the + result. + + If no serial connection is available, empty results will be returned. + + @param commands list of commands to be executed + @type str or list of str + @keyparam mode submit mode to be used (one of 'raw' or 'paste') (defaults to + 'raw') + @type str + @keyparam timeout per command timeout in milliseconds (0 for configured default) + (defaults to 0) + @type int (optional) + @return tuple containing stdout and stderr output of the device + @rtype tuple of (bytes, bytes) + @exception ValueError raised in case of an unsupported submit mode + """ + if mode not in ("paste", "raw"): + raise ValueError("Unsupported submit mode given ('{0}').".format(mode)) + + if mode == "raw": + return self.__execute_raw(commands, timeout=timeout) + elif mode == "paste": + return self.__execute_paste(commands, timeout=timeout) + else: + # just in case + return b"", b"" + + def __execute_raw(self, commands, timeout=0): + """ + Private method to send commands to the connected device using 'raw REPL' mode + and return the result. + + If no serial connection is available, empty results will be returned. + + @param commands list of commands to be executed + @type str or list of str + @param timeout per command timeout in milliseconds (0 for configured default) + (defaults to 0) + @type int (optional) + @return tuple containing stdout and stderr output of the device + @rtype tuple of (bytes, bytes) + """ + if not self.__serial: + return b"", b"" + + if not self.__serial.isConnected(): + return b"", b"Device not connected or not switched on." + + result = bytearray() + err = b"" + + if isinstance(commands, str): + commands = [commands] + + # switch on raw mode + self.__blockReadyRead = True + ok = self.__rawOn() + if not ok: + self.__blockReadyRead = False + return (b"", b"Could not switch to raw mode. Is the device switched on?") + + # send commands + QThread.msleep(10) + for command in commands: + if command: + commandBytes = command.encode("utf-8") + self.__serial.write(commandBytes + b"\x04") + QCoreApplication.processEvents( + QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents + ) + ok = self.__serial.readUntil(b"OK") + if ok != b"OK": + self.__blockReadyRead = False + return ( + b"", + "Expected 'OK', got '{0}', followed by '{1}'".format( + ok, self.__serial.readAll() + ).encode("utf-8"), + ) + + # read until prompt + response = self.__serial.readUntil(b"\x04>", timeout=timeout) + if self.__serial.hasTimedOut(): + self.__blockReadyRead = False + return b"", b"Timeout while processing commands." + if b"\x04" in response[:-2]: + # split stdout, stderr + out, err = response[:-2].split(b"\x04") + result += out + else: + err = b"invalid response received: " + response + if err: + result = b"" + break + + # switch off raw mode + QThread.msleep(10) + self.__rawOff() + self.__blockReadyRead = False + + return bytes(result), err + + def __execute_paste(self, commands, timeout=0): + """ + Private method to send commands to the connected device using 'paste' mode + and return the result. + + If no serial connection is available, empty results will be returned. + + @param commands list of commands to be executed + @type str or list of str + @param timeout per command timeout in milliseconds (0 for configured default) + (defaults to 0) + @type int (optional) + @return tuple containing stdout and stderr output of the device + @rtype tuple of (bytes, bytes) + """ + if not self.__serial: + return b"", b"" + + if not self.__serial.isConnected(): + return b"", b"Device is not connected or not switched on." + + if isinstance(commands, list): + commands = "\n".join(commands) + + # switch on paste mode + self.__blockReadyRead = True + ok = self.__pasteOn() + if not ok: + self.__blockReadyRead = False + return (b"", b"Could not switch to paste mode. Is the device switched on?") + + # send commands + QThread.msleep(10) + for command in commands.splitlines(keepends=True): + # send the data as single lines + commandBytes = command.encode("utf-8") + self.__serial.write(commandBytes) + QCoreApplication.processEvents( + QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents + ) + QThread.msleep(10) + ok = self.__serial.readUntil(commandBytes) + if ok != commandBytes: + self.__blockReadyRead = False + return ( + b"", + "Expected '{0}', got '{1}', followed by '{2}'".format( + commandBytes, ok, self.__serial.readAll() + ).encode("utf-8"), + ) + + # switch off paste mode causing the commands to be executed + self.__pasteOff() + QThread.msleep(10) + # read until Python prompt + result = ( + self.__serial.readUntil(b">>> ", timeout=timeout) + .replace(b">>> ", b"") + .strip() + ) + if self.__serial.hasTimedOut(): + self.__blockReadyRead = False + return b"", b"Timeout while processing commands." + + # get rid of any OSD string and send it + if result.startswith(b"\x1b]0;"): + osd, result = result.split(b"\x1b\\", 1) + self.osdInfo.emit(osd[4:].decode("utf-8")) + + if self.TracebackMarker in result: + errorIndex = result.find(self.TracebackMarker) + out, err = result[:errorIndex], result[errorIndex:] + else: + out = result + err = b"" + + self.__blockReadyRead = False + return out, err + + def executeAsync(self, commandsList, submitMode): + """ + Public method to execute a series of commands over a period of time + without returning any result (asynchronous execution). + + @param commandsList list of commands to be execute on the device + @type list of str + @param submitMode mode to be used to submit the commands + @type str (one of 'raw' or 'paste') + @exception ValueError raised to indicate an unknown submit mode + """ + if submitMode not in ("raw", "paste"): + raise ValueError("Illegal submit mode given ({0})".format(submitMode)) + + if submitMode == "raw": + startSequence = [ # sequence of commands to enter raw mode + b"\x02", # Ctrl-B: exit raw repl (just in case) + b"\r\x03\x03\x03", # Ctrl-C three times: interrupt any running program + b"\r\x01", # Ctrl-A: enter raw REPL + b'print("\\n")\r', + ] + endSequence = [ + b"\r", + b"\x04", + ] + self.__executeAsyncRaw( + startSequence + + [c.encode("utf-8") + b"\r" for c in commandsList] + + endSequence + ) + elif submitMode == "paste": + self.__executeAsyncPaste(commandsList) + + def __executeAsyncRaw(self, commandsList): + """ + Private method to execute a series of commands over a period of time + without returning any result (asynchronous execution). + + @param commandsList list of commands to be execute on the device + @type list of bytes + """ + if commandsList: + command = commandsList.pop(0) + self.__serial.write(command) + QTimer.singleShot(2, lambda: self.__executeAsyncRaw(commandsList)) + else: + self.__rawOff() + self.executeAsyncFinished.emit() + + def __executeAsyncPaste(self, commandsList): + """ + Private method to execute a series of commands over a period of time + without returning any result (asynchronous execution). + + @param commandsList list of commands to be execute on the device + @type list of str + """ + self.__blockReadyRead = True + self.__pasteOn() + command = b"\n".join(c.encode("utf-8)") for c in commandsList) + self.__serial.write(command) + self.__serial.readUntil(command) + self.__blockReadyRead = False + self.__pasteOff() + self.executeAsyncFinished.emit()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/MicroPython/MicroPythonWebreplConnectionDialog.py Thu May 04 17:58:52 2023 +0200 @@ -0,0 +1,123 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to enter the WebREPL connection parameters. +""" + +from PyQt6.QtCore import pyqtSlot +from PyQt6.QtWidgets import QDialog, QDialogButtonBox, QLineEdit + +from eric7.EricGui import EricPixmapCache + +from .Devices import getSupportedDevices +from .Ui_MicroPythonWebreplConnectionDialog import Ui_MicroPythonWebreplConnectionDialog + + +class MicroPythonWebreplConnectionDialog( + QDialog, Ui_MicroPythonWebreplConnectionDialog +): + """ + Class implementing a dialog to enter the WebREPL connection parameters. + """ + + def __init__(self, currentWebreplUrl, currentType, parent=None): + """ + Constructor + + @param currentWebreplUrl WebREPL URL most recently configured + @type str + @param currentType device type most recently selected + @type str + @param parent reference to the parent widget (defaults to None) + @type QWidget (optional) + """ + super().__init__(parent) + self.setupUi(self) + + self.deviceTypeComboBox.addItem("", "") + for board, description in sorted(getSupportedDevices(), key=lambda x: x[1]): + self.deviceTypeComboBox.addItem(description, board) + + self.showPasswordButton.setIcon(EricPixmapCache.getIcon("showPassword")) + + self.hostEdit.textChanged.connect(self.__updateOkButton) + self.portEdit.textChanged.connect(self.__updateOkButton) + self.deviceTypeComboBox.currentIndexChanged.connect(self.__updateOkButton) + + if currentWebreplUrl: + url = currentWebreplUrl.replace("ws://", "") + password, hostPort = url.split("@", 1) if "@" in url else ("", url) + host, port = hostPort.split(":", 1) if ":" in hostPort else (hostPort, "") + self.hostEdit.setText(host) + self.portEdit.setText(port) + self.passwordEdit.setText(password) + + typeIndex = self.deviceTypeComboBox.findData(currentType) + self.deviceTypeComboBox.setCurrentIndex(typeIndex) + else: + self.__updateOkButton() + + msh = self.minimumSizeHint() + self.resize(max(self.width(), msh.width()), msh.height()) + + @pyqtSlot() + def __updateOkButton(self): + """ + Private slot to update the enabled state of the OK button. + """ + port = self.portEdit.text() + if port == "": + portOk = True + else: + try: + portNo = int(port) + portOk = 1024 < portNo <= 65535 + except ValueError: + portOk = False + self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled( + bool(self.hostEdit.text()) + and portOk + and bool(self.deviceTypeComboBox.currentData()) + ) + + @pyqtSlot(bool) + def on_showPasswordButton_clicked(self, checked): + """ + Private slot to show or hide the password. + + @param checked state of the button + @type bool + """ + if checked: + self.passwordEdit.setEchoMode(QLineEdit.EchoMode.Normal) + self.showPasswordButton.setIcon(EricPixmapCache.getIcon("hidePassword")) + self.showPasswordButton.setToolTip(self.tr("Press to hide the password.")) + else: + self.passwordEdit.setEchoMode(QLineEdit.EchoMode.Password) + self.showPasswordButton.setIcon(EricPixmapCache.getIcon("showPassword")) + self.showPasswordButton.setToolTip(self.tr("Press to show the password.")) + + def getWebreplConnectionParameters(self): + """ + Public method to retrieve the entered WebREPL connection data. + + @return tuple containing the URL and device type for the WebREPL connection + @rtype tuple of (str, str) + """ + password = self.passwordEdit.text() + host = self.hostEdit.text() + port = self.portEdit.text() + + if password and port: + url = f"ws://{password}@{host}:{port}" + elif password: + url = f"ws://{password}@{host}" + elif port: + url = f"ws://{host}:{port}" + else: + url = f"ws://{host}" + + return (url, self.deviceTypeComboBox.currentData())
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/MicroPython/MicroPythonWebreplConnectionDialog.ui Thu May 04 17:58:52 2023 +0200 @@ -0,0 +1,157 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>MicroPythonWebreplConnectionDialog</class> + <widget class="QDialog" name="MicroPythonWebreplConnectionDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>172</height> + </rect> + </property> + <property name="windowTitle"> + <string>WebREPL Connection</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Host:</string> + </property> + </widget> + </item> + <item row="0" column="1" colspan="2"> + <widget class="QLineEdit" name="hostEdit"> + <property name="toolTip"> + <string>Enter the host name or IPv4 address of the device.</string> + </property> + <property name="clearButtonEnabled"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string>Port:</string> + </property> + </widget> + </item> + <item row="1" column="1" colspan="2"> + <widget class="QLineEdit" name="portEdit"> + <property name="toolTip"> + <string>Enter the port of the WebREPL (empty for default port 8266).</string> + </property> + <property name="clearButtonEnabled"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_5"> + <property name="text"> + <string>Password:</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QLineEdit" name="passwordEdit"> + <property name="toolTip"> + <string>Enter the password for this device connection.</string> + </property> + <property name="echoMode"> + <enum>QLineEdit::Password</enum> + </property> + <property name="clearButtonEnabled"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="2" column="2"> + <widget class="QToolButton" name="showPasswordButton"> + <property name="toolTip"> + <string>Press to show the password.</string> + </property> + <property name="checkable"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="label_6"> + <property name="text"> + <string>Device Type:</string> + </property> + </widget> + </item> + <item row="3" column="1" colspan="2"> + <widget class="QComboBox" name="deviceTypeComboBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip"> + <string>Select the device type</string> + </property> + </widget> + </item> + <item row="4" column="0" colspan="3"> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <tabstops> + <tabstop>hostEdit</tabstop> + <tabstop>portEdit</tabstop> + <tabstop>passwordEdit</tabstop> + <tabstop>deviceTypeComboBox</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>MicroPythonWebreplConnectionDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>MicroPythonWebreplConnectionDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/MicroPython/MicroPythonWebreplDeviceInterface.py Thu May 04 17:58:52 2023 +0200 @@ -0,0 +1,299 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing an interface to talk to a connected MicroPython device via +a webrepl connection. +""" + +from PyQt6.QtCore import QThread, pyqtSlot +from PyQt6.QtWidgets import QInputDialog, QLineEdit + +from eric7 import Preferences +from eric7.EricWidgets import EricMessageBox + +from .MicroPythonDeviceInterface import MicroPythonDeviceInterface +from .MicroPythonWebreplSocket import MicroPythonWebreplSocket + + +class MicroPythonWebreplDeviceInterface(MicroPythonDeviceInterface): + """ + Class implementing an interface to talk to a connected MicroPython device via + a webrepl connection. + """ + + def __init__(self, parent=None): + """ + Constructor + + @param parent reference to the parent object + @type QObject + """ + super().__init__(parent) + + self.__blockReadyRead = False + + self.__socket = MicroPythonWebreplSocket( + timeout=Preferences.getMicroPython("WebreplTimeout"), parent=self + ) + self.__connected = False + self.__socket.readyRead.connect(self.__readSocket) + + @pyqtSlot() + def __readSocket(self): + """ + Private slot to read all available data and emit it with the + "dataReceived" signal for further processing. + """ + if not self.__blockReadyRead: + data = bytes(self.__socket.readAll()) + self.dataReceived.emit(data) + + def __readAll(self): + """ + Private method to read all data and emit it for further processing. + """ + data = self.__socket.readAll() + self.dataReceived.emit(data) + + @pyqtSlot() + def connectToDevice(self, connection): + """ + Public slot to connect to the device. + + @param connection name of the connection to be used in the form of an URL string + (ws://password@host:port) + @type str + @return flag indicating success + @rtype bool + """ + connection = connection.replace("ws://", "") + try: + password, hostPort = connection.split("@", 1) + except ValueError: + password, hostPort = None, connection + if password is None: + password, ok = QInputDialog.getText( + None, + self.tr("WebREPL Password"), + self.tr("Enter the WebREPL password:"), + QLineEdit.EchoMode.Password, + ) + if not ok: + return False + + try: + host, port = hostPort.split(":", 1) + port = int(port) + except ValueError: + host, port = hostPort, 8266 # default port is 8266 + + self.__blockReadyRead = True + ok = self.__socket.connectToDevice(host, port) + if ok: + ok = self.__socket.login(password) + if not ok: + EricMessageBox.warning( + None, + self.tr("WebREPL Login"), + self.tr( + "The login to the selected device 'webrepl' failed. The given" + " password may be incorrect." + ), + ) + + self.__connected = ok + self.__blockReadyRead = False + + return self.__connected + + @pyqtSlot() + def disconnectFromDevice(self): + """ + Public slot to disconnect from the device. + """ + self.__socket.disconnect() + self.__connected = False + + def isConnected(self): + """ + Public method to get the connection status. + + @return flag indicating the connection status + @rtype bool + """ + return self.__connected + + @pyqtSlot() + def handlePreferencesChanged(self): + """ + Public slot to handle a change of the preferences. + """ + self.__socket.setTimeout(Preferences.getMicroPython("WebreplTimeout")) + + def write(self, data): + """ + Public method to write data to the connected device. + + @param data data to be written + @type bytes or bytearray + """ + self.__connected and self.__socket.writeTextMessage(data) + + def probeDevice(self): + """ + Public method to check the device is responding. + + If the device has not been flashed with a MicroPython firmware, the + probe will fail. + + @return flag indicating a communicating MicroPython device + @rtype bool + """ + if not self.__connected: + return False + + # switch on paste mode + self.__blockReadyRead = True + ok = self.__pasteOn() + if not ok: + self.__blockReadyRead = False + return False + + # switch off raw mode + QThread.msleep(10) + self.__pasteOff() + self.__blockReadyRead = False + + return True + + def execute(self, commands, *, mode="raw", timeout=0): + """ + Public method to send commands to the connected device and return the + result. + + @param commands list of commands to be executed + @type str or list of str + @keyparam mode submit mode to be used (one of 'raw' or 'paste') (defaults to + 'raw'). This is ignored because webrepl always uses 'paste' mode. + @type str + @keyparam timeout per command timeout in milliseconds (0 for configured default) + (defaults to 0) + @type int (optional) + @return tuple containing stdout and stderr output of the device + @rtype tuple of (bytes, bytes) + """ + if not self.__connected: + return b"", b"Device is not connected." + + if isinstance(commands, list): + commands = "\n".join(commands) + + # switch on paste mode + self.__blockReadyRead = True + ok = self.__pasteOn() + if not ok: + self.__blockReadyRead = False + return (b"", b"Could not switch to paste mode. Is the device switched on?") + + # send commands + commandBytes = commands.encode("utf-8") + self.__socket.writeTextMessage(commandBytes) + ok = self.__socket.readUntil(commandBytes) + if ok != commandBytes: + self.__blockReadyRead = False + return ( + b"", + "Expected '{0}', got '{1}', followed by '{2}'".format( + commandBytes, ok, self.__socket.readAll() + ).encode("utf-8"), + ) + + # switch off paste mode causing the commands to be executed + self.__pasteOff() + + # read until Python prompt + result = ( + self.__socket.readUntil(b">>> ", timeout=timeout) + .replace(b">>> ", b"") + .strip() + ) + if self.__socket.hasTimedOut(): + self.__blockReadyRead = False + return b"", b"Timeout while processing commands." + + # get rid of any OSD string and send it + if result.startswith(b"\x1b]0;"): + osd, result = result.split(b"\x1b\\", 1) + self.osdInfo.emit(osd[4:].decode("utf-8")) + + if self.TracebackMarker in result: + errorIndex = result.find(self.TracebackMarker) + out, err = result[:errorIndex], result[errorIndex:].replace(">>> ", "") + else: + out = result + err = b"" + + self.__blockReadyRead = False + return out, err + + def executeAsync(self, commandsList, submitMode): + """ + Public method to execute a series of commands over a period of time + without returning any result (asynchronous execution). + + @param commandsList list of commands to be execute on the device + @type list of str + @param submitMode mode to be used to submit the commands + @type str (one of 'raw' or 'paste') + """ + self.__blockReadyRead = True + self.__pasteOn() + command = b"\n".join(c.encode("utf-8)") for c in commandsList) + self.__socket.writeTextMessage(command) + self.__socket.readUntil(command) + self.__blockReadyRead = False + self.__pasteOff() + self.executeAsyncFinished.emit() + + def __pasteOn(self): + """ + Private method to switch the connected device to 'paste' mode. + + Note: switching to paste mode is done with synchronous writes. + + @return flag indicating success + @rtype bool + """ + if not self.__connected: + return False + + pasteMessage = b"paste mode; Ctrl-C to cancel, Ctrl-D to finish\r\n=== " + + self.__socket.writeTextMessage(b"\x02") # end raw mode if required + for _i in range(3): + # CTRL-C three times to break out of loops + self.__socket.writeTextMessage(b"\r\x03") + # time out after 500ms if device is not responding + self.__socket.readAll() # read all data and discard it + self.__socket.writeTextMessage(b"\r\x05") # send CTRL-E to enter paste mode + self.__socket.readUntil(pasteMessage) + + if self.__socket.hasTimedOut(): + # it timed out; try it again and than fail + self.__socket.writeTextMessage(b"\r\x05") # send CTRL-E again + self.__socket.readUntil(pasteMessage) + if self.__socket.hasTimedOut(): + return False + + self.__socket.readAll() # read all data and discard it + return True + + def __pasteOff(self): + """ + Private method to switch 'paste' mode off. + """ + if self.__connected: + self.__socket.writeTextMessage(b"\x04") # send CTRL-D to cancel paste mode
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/MicroPython/MicroPythonWebreplSocket.py Thu May 04 17:58:52 2023 +0200 @@ -0,0 +1,258 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a websocket class to be connect to the MicroPython webrepl +interface. +""" + +from PyQt6.QtCore import ( + QCoreApplication, + QEventLoop, + QMutex, + QTime, + QTimer, + QUrl, + pyqtSignal, + pyqtSlot, +) +from PyQt6.QtNetwork import QAbstractSocket +from PyQt6.QtWebSockets import QWebSocket + +from eric7.EricUtilities.EricMutexLocker import EricMutexLocker + + +class MicroPythonWebreplSocket(QWebSocket): + """ + Class implementing a websocket client to be connected to the MicroPython webrepl + interface. + + @signal readyRead() emitted to signal the availability of data + """ + + readyRead = pyqtSignal() + + def __init__(self, timeout=10000, parent=None): + """ + Constructor + + @param timeout timout in milliseconds to be set + @type int + @param parent reference to the parent object + @type QObject + """ + super().__init__(parent=parent) + + self.__connected = False + self.__timeout = timeout # 10s default timeout + self.__timedOut = False + + self.__mutex = QMutex() + self.__buffer = b"" + self.textMessageReceived.connect(self.__textDataReceived) + + @pyqtSlot(str) + def __textDataReceived(self, strMessage): + """ + Private slot handling a received text message. + + @param strMessage received text message + @type str + """ + with EricMutexLocker(self.__mutex): + self.__buffer += strMessage.encode("utf-8") + + self.readyRead.emit() + + def setTimeout(self, timeout): + """ + Public method to set the socket timeout value. + + @param timeout timout in milliseconds to be set + @type int + """ + self.__timeout = timeout + + def waitForConnected(self): + """ + Public method to wait for the websocket being connected. + + @return flag indicating the connect result + @rtype bool + """ + loop = QEventLoop() + self.connected.connect(loop.quit) + self.errorOccurred.connect(loop.quit) + + def timeout(): + loop.quit() + self.__timedOut = True + + self.__timedOut = False + timer = QTimer() + timer.setSingleShot(True) + timer.timeout.connect(timeout) + timer.start(self.__timeout) + + loop.exec() + timer.stop() + if self.state() == QAbstractSocket.SocketState.ConnectedState: + self.__connected = True + return True + else: + self.__connected = False + return False + + def connectToDevice(self, host, port): + """ + Public method to connect to the given host and port. + + @param host host name or IP address + @type str + @param port port number + @type int + @return flag indicating success + @rtype bool + """ + if self.__connected: + self.disconnectFromDevice() + + url = QUrl(f"ws://{host}:{port}") + self.open(url) + ok = self.waitForConnected() + if not ok: + return False + + self.__connected = True + return True + + def disconnect(self): + """ + Public method to disconnect the websocket. + """ + if self.__connected: + self.close() + self.__connected = False + + def isConnected(self): + """ + Public method to check the connected state of the websocket. + + @return flag indicating the connected state + @rtype bool + """ + return self.__connected + + def hasTimedOut(self): + """ + Public method to check, if the last 'readUntil()' has timed out. + + @return flag indicating a timeout + @@rtype bool + """ + return self.__timedOut + + def login(self, password): + """ + Public method to login to the webrepl console of the device. + + @param password password + @type str + @return flag indicating a successful login + @rtype bool + """ + self.readUntil(expected=b": ") + self.writeTextMessage(password.encode("utf-8") + b"\r") + data = self.readUntil([b">>> ", b"denied\r\n"]) + + return not data.endswith(b"denied\r\n") + + def writeTextMessage(self, data): + """ + Public method write some text data to the webrepl server of the connected + device. + + @param data text data to be sent + @type bytes + """ + self.sendTextMessage(data.decode("utf-8")) + self.flush() + + def readAll(self, timeout=0): + """ + Public method to read all available data. + + @param timeout timeout in milliseconds (0 for no timeout) + (defaults to 0) + @type int (optional) + @return received data + @rtype bytes + """ + QCoreApplication.processEvents( + QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents + ) + if timeout > 0: + # receive data for 'timeout' milliseconds + loop = QEventLoop() + QTimer.singleShot(timeout, loop.quit) + loop.exec() + + # return all buffered data + with EricMutexLocker(self.__mutex): + data = self.__buffer + self.__buffer = b"" + + return data + + def readUntil(self, expected=b"\n", size=None, timeout=0): + r""" + Public method to read data until an expected sequence is found + (default: \n) or a specific size is exceeded. + + @param expected expected bytes sequence + @type bytes + @param size maximum data to be read (defaults to None) + @type int (optional) + @param timeout timeout in milliseconds (0 for configured default) + (defaults to 0) + @type int (optional) + @return bytes read from the device including the expected sequence + @rtype bytes + """ + data = b"" + self.__timedOut = False + + if timeout == 0: + timeout = self.__timeout + + if not isinstance(expected, list): + expected = [expected] + + t = QTime.currentTime() + while True: + QCoreApplication.processEvents( + QEventLoop.ProcessEventsFlag.ExcludeUserInputEvents, 500 + ) + with EricMutexLocker(self.__mutex): + if any(e in self.__buffer for e in expected): + for e in expected: + index = self.__buffer.find(e) + if index >= 0: + endIndex = index + len(e) + data = self.__buffer[:endIndex] + self.__buffer = self.__buffer[endIndex:] + break + break + if size is not None and len(self.__buffer) >= size: + data = self.__buffer[:size] + self.__buffer = self.__buffer[size:] + break + if t.msecsTo(QTime.currentTime()) > timeout: + self.__timedOut = True + data = self.__buffer + self.__buffer = b"" + break + + return data
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/MicroPython/MicroPythonWebreplUrlAddEditDialog.py Thu May 04 17:58:52 2023 +0200 @@ -0,0 +1,135 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to edit the parameters for a WebREPL connection. +""" + +from PyQt6.QtCore import pyqtSlot +from PyQt6.QtWidgets import QDialog, QDialogButtonBox + +from .Devices import getSupportedDevices +from .Ui_MicroPythonWebreplUrlAddEditDialog import Ui_MicroPythonWebreplUrlAddEditDialog + + +class MicroPythonWebreplUrlAddEditDialog( + QDialog, Ui_MicroPythonWebreplUrlAddEditDialog +): + """ + Class implementing a dialog to edit the parameters for a WebREPL connection. + """ + + def __init__(self, definedNames, connectionParams=None, parent=None): + """ + Constructor + + @param definedNames list of already define WebREPL connection names + @type list of str + @param connectionParams parameters for the WebREPL connection to be edited + (default to None) + @type tuple of (str, str, str) (optional) + @param parent reference to the parent widget (defaults to None) + @type QWidget (optional) + """ + super().__init__(parent) + self.setupUi(self) + + self.__definedNames = definedNames[:] + + self.deviceTypeComboBox.addItem("", "") + for board, description in sorted(getSupportedDevices(), key=lambda x: x[1]): + self.deviceTypeComboBox.addItem(description, board) + + self.nameEdit.textChanged.connect(self.__updateOkButton) + self.descriptionEdit.textChanged.connect(self.__updateOkButton) + self.hostEdit.textChanged.connect(self.__updateOkButton) + self.portEdit.textChanged.connect(self.__updateOkButton) + self.deviceTypeComboBox.currentIndexChanged.connect(self.__updateOkButton) + + if connectionParams: + self.__editName = connectionParams[0] + self.__populateFields(connectionParams) + else: + self.__editName = "" + self.__updateOkButton() + + msh = self.minimumSizeHint() + self.resize(max(self.width(), msh.width()), msh.height()) + + def __populateFields(self, params): + """ + Private method to populate the various dialog fields with the given parameters. + + @param params arameters for the WebREPL connection to be edited + @type tuple of (str, str, str) + """ + self.nameEdit.setText(params[0]) + self.descriptionEdit.setText(params[1]) + + url = params[2].replace("ws://", "") + password, hostPort = url.split("@", 1) if "@" in url else ("", url) + host, port = hostPort.split(":", 1) if ":" in hostPort else (hostPort, "") + self.hostEdit.setText(host) + self.portEdit.setText(port) + self.passwordEdit.setText(password) + + typeIndex = self.deviceTypeComboBox.findData(params["device_type"]) + self.deviceTypeComboBox.setCurrentIndex(typeIndex) + + @pyqtSlot() + def __updateOkButton(self): + """ + Private slot to update the enabled state of the OK button. + """ + port = self.portEdit.text() + if port == "": + portOk = True + else: + try: + portNo = int(port) + portOk = 1024 < portNo <= 65535 + except ValueError: + portOk = False + + name = self.nameEdit.text() + nameOk = bool(name) and ( + name == self.__editName or name not in self.__definedNames + ) + + self.buttonBox.button(QDialogButtonBox.StandardButton.Ok).setEnabled( + nameOk + and bool(self.descriptionEdit.text()) + and bool(self.hostEdit.text()) + and portOk + and bool(self.deviceTypeComboBox.currentData()) + ) + + def getWebreplUrl(self): + """ + Public method to retrieve the entered WebREPL connection data. + + @return tuple containing the name, description, URL and device type for + the WebREPL connection + @rtype tuple of (str, str, str, str) + """ + password = self.passwordEdit.text() + host = self.hostEdit.text() + port = self.portEdit.text() + + if password and port: + url = f"ws://{password}@{host}:{port}" + elif password: + url = f"ws://{password}@{host}" + elif port: + url = f"ws://{host}:{port}" + else: + url = f"ws://{host}" + + return ( + self.nameEdit.text(), + self.descriptionEdit.text(), + url, + self.deviceTypeComboBox.currentData(), + )
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/MicroPython/MicroPythonWebreplUrlAddEditDialog.ui Thu May 04 17:58:52 2023 +0200 @@ -0,0 +1,172 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>MicroPythonWebreplUrlAddEditDialog</class> + <widget class="QDialog" name="MicroPythonWebreplUrlAddEditDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>236</height> + </rect> + </property> + <property name="windowTitle"> + <string>WebREPL URL</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Name:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLineEdit" name="nameEdit"> + <property name="toolTip"> + <string>Enter a unique name for the WebREPL connection.</string> + </property> + <property name="clearButtonEnabled"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>Description:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLineEdit" name="descriptionEdit"> + <property name="toolTip"> + <string>Enter a short description to be shown in the selector.</string> + </property> + <property name="clearButtonEnabled"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Host:</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QLineEdit" name="hostEdit"> + <property name="toolTip"> + <string>Enter the host name or IPv4 address of the device.</string> + </property> + <property name="clearButtonEnabled"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="label_4"> + <property name="text"> + <string>Port:</string> + </property> + </widget> + </item> + <item row="3" column="1"> + <widget class="QLineEdit" name="portEdit"> + <property name="toolTip"> + <string>Enter the port of the WebREPL (empty for default port 8266).</string> + </property> + <property name="clearButtonEnabled"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="4" column="0"> + <widget class="QLabel" name="label_5"> + <property name="text"> + <string>Password:</string> + </property> + </widget> + </item> + <item row="4" column="1"> + <widget class="QLineEdit" name="passwordEdit"> + <property name="toolTip"> + <string>Enter the password for this device connection.</string> + </property> + <property name="clearButtonEnabled"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="5" column="0"> + <widget class="QLabel" name="label_6"> + <property name="text"> + <string>Device Type:</string> + </property> + </widget> + </item> + <item row="5" column="1"> + <widget class="QComboBox" name="deviceTypeComboBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="toolTip"> + <string>Select the device type</string> + </property> + </widget> + </item> + <item row="6" column="0" colspan="2"> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>MicroPythonWebreplUrlAddEditDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>MicroPythonWebreplUrlAddEditDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/MicroPython/MicroPythonWebreplUrlsConfigDialog.py Thu May 04 17:58:52 2023 +0200 @@ -0,0 +1,172 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to edit the list of configured WebREPL URLs. +""" + +from PyQt6.QtCore import Qt, pyqtSlot +from PyQt6.QtWidgets import QDialog, QTreeWidgetItem + +from eric7.EricWidgets import EricMessageBox + +from .MicroPythonWebreplUrlAddEditDialog import MicroPythonWebreplUrlAddEditDialog +from .Ui_MicroPythonWebreplUrlsConfigDialog import Ui_MicroPythonWebreplUrlsConfigDialog + + +class MicroPythonWebreplUrlsConfigDialog( + QDialog, Ui_MicroPythonWebreplUrlsConfigDialog +): + """ + Class implementing a dialog to edit the list of configured WebREPL URLs. + """ + + def __init__(self, webreplDict, parent=None): + """ + Constructor + + @param webreplDict dictionary containing the configured WebREPL URLs + @type dict + @param parent reference to the parent widget (defaults to None) + @type QWidget (optional) + """ + super().__init__(parent) + self.setupUi(self) + + for name, data in webreplDict.items(): + itm = QTreeWidgetItem( + self.webreplUrlsList, + [name, data["description"], data["url"]], + ) + itm.setData(0, Qt.ItemDataRole.UserRole, data["device_type"]) + + self.__sortItems() + self.__resizeColumns() + self.__updateActionButtons() + + self.webreplUrlsList.itemSelectionChanged.connect(self.__updateActionButtons) + + @pyqtSlot() + def __sortItems(self): + """ + Private slot to sort the list by name column (i.e. column 0). + """ + self.webreplUrlsList.sortItems(0, Qt.SortOrder.AscendingOrder) + + @pyqtSlot() + def __resizeColumns(self): + """ + Private slot to resize the columns to their contents. + """ + for column in range(self.webreplUrlsList.columnCount()): + self.webreplUrlsList.resizeColumnToContents(column) + + @pyqtSlot() + def __updateActionButtons(self): + """ + Private slot to change the enabled state of the action buttons. + """ + selectedItemsCount = len(self.webreplUrlsList.selectedItems()) + self.editButton.setEnabled(selectedItemsCount == 1) + self.removeButton.setEnabled(selectedItemsCount > 0) + + self.removeAllButton.setEnabled(self.webreplUrlsList.topLevelItemCount() > 0) + + def __definedNames(self): + """ + Private method to get a list of defined connection names. + + @return list of defined connection names + @rtype list of str + """ + return [ + self.webreplUrlsList.topLevelItem(row).text(0) + for row in range(self.webreplUrlsList.topLevelItemCount()) + ] + + @pyqtSlot() + def on_addButton_clicked(self): + """ + Private slot to add a new WebREPL connection. + """ + dlg = MicroPythonWebreplUrlAddEditDialog(self.__definedNames(), parent=self) + if dlg.exec() == QDialog.DialogCode.Accepted: + name, description, url, deviceType = dlg.getWebreplUrl() + itm = QTreeWidgetItem(self.webreplUrlsList, [name, description, url]) + itm.setData(0, Qt.ItemDataRole.UserRole, deviceType) + + self.__sortItems() + self.__resizeColumns() + self.__updateActionButtons() + + @pyqtSlot() + def on_editButton_clicked(self): + """ + Private slot to edit the selected WebREPL connection. + """ + itm = self.webreplUrlsList.selectedItems()[0] + dlg = MicroPythonWebreplUrlAddEditDialog( + self.__definedNames(), + connectionParams=(itm.text(0), itm.text(1), itm.text(2)), + parent=self, + ) + if dlg.exec() == QDialog.DialogCode.Accepted: + name, description, url, deviceType = dlg.getWebreplUrl() + itm.setText(0, name) + itm.setText(1, description) + itm.setText(2, url) + itm.setData(0, Qt.ItemDataRole.UserRole, deviceType) + + self.__sortItems() + self.__resizeColumns() + self.__updateActionButtons() + + @pyqtSlot() + def on_removeButton_clicked(self): + """ + Private slot to remove the selected entries. + """ + ok = EricMessageBox.yesNo( + self, + self.tr("Remove Selected WebREPL URLs"), + self.tr("""Shall the selected WebREPL URLs really be removed?"""), + ) + if ok: + for itm in self.webreplUrlsList.selectedItems(): + self.webreplUrlsList.takeTopLevelItem( + self.webreplUrlsList.indexOfTopLevelItem(itm) + ) + del itm + + @pyqtSlot() + def on_removeAllButton_clicked(self): + """ + Private slot to remove all entries. + """ + ok = EricMessageBox.yesNo( + self, + self.tr("Remove All WebREPL URLs"), + self.tr("""Shall all WebREPL URLs really be removed?"""), + ) + if ok: + self.webreplUrlsList.clear() + + def getWebreplDict(self): + """ + Public method to retrieve a dictionary containing the configured WebREPL URLs. + + @return dictionary containing the configured WebREPL URLs + @rtype dict + """ + webreplDict = {} + for row in range(self.webreplUrlsList.topLevelItemCount()): + itm = self.webreplUrlsList.topLevelItem(row) + webreplDict[itm.text(0)] = { + "description": itm.text(1), + "url": itm.text(2), + "device_type": itm.data(0, Qt.ItemDataRole.UserRole), + } + + return webreplDict
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/MicroPython/MicroPythonWebreplUrlsConfigDialog.ui Thu May 04 17:58:52 2023 +0200 @@ -0,0 +1,165 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>MicroPythonWebreplUrlsConfigDialog</class> + <widget class="QDialog" name="MicroPythonWebreplUrlsConfigDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>713</width> + <height>516</height> + </rect> + </property> + <property name="windowTitle"> + <string>WebREPL URLs</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QTreeWidget" name="webreplUrlsList"> + <property name="editTriggers"> + <set>QAbstractItemView::NoEditTriggers</set> + </property> + <property name="selectionMode"> + <enum>QAbstractItemView::ExtendedSelection</enum> + </property> + <property name="rootIsDecorated"> + <bool>false</bool> + </property> + <property name="itemsExpandable"> + <bool>false</bool> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + <column> + <property name="text"> + <string>Name</string> + </property> + </column> + <column> + <property name="text"> + <string>Description</string> + </property> + </column> + <column> + <property name="text"> + <string>URL</string> + </property> + </column> + </widget> + </item> + <item row="0" column="1"> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QPushButton" name="addButton"> + <property name="toolTip"> + <string>Press to add a new entry.</string> + </property> + <property name="text"> + <string>Add...</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="editButton"> + <property name="toolTip"> + <string>Press to edit the selected entry.</string> + </property> + <property name="text"> + <string>Edit...</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="removeButton"> + <property name="toolTip"> + <string>Press to remove the selected entries.</string> + </property> + <property name="text"> + <string>Remove</string> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="removeAllButton"> + <property name="toolTip"> + <string>Press to remove all entries.</string> + </property> + <property name="text"> + <string>Remove All</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </item> + <item row="2" column="0" colspan="2"> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok</set> + </property> + </widget> + </item> + <item row="1" column="0" colspan="2"> + <widget class="QLabel" name="label"> + <property name="text"> + <string><b>Note:</b> The name of an entry must be unique amongst the list.</string> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>MicroPythonWebreplUrlsConfigDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>MicroPythonWebreplUrlsConfigDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui>
--- a/src/eric7/MicroPython/MicroPythonWidget.py Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/MicroPython/MicroPythonWidget.py Thu May 04 17:58:52 2023 +0200 @@ -10,21 +10,14 @@ import contextlib import functools import os -import re import time -from PyQt6.QtCore import QEvent, QPoint, Qt, pyqtSignal, pyqtSlot -from PyQt6.QtGui import QBrush, QClipboard, QColor, QKeySequence, QTextCursor +from PyQt6.QtCore import Qt, pyqtSignal, pyqtSlot from PyQt6.QtWidgets import ( - QApplication, QDialog, - QHBoxLayout, QInputDialog, - QLabel, QLineEdit, QMenu, - QSizePolicy, - QTextEdit, QToolButton, QWidget, ) @@ -37,7 +30,6 @@ from eric7.EricWidgets.EricListSelectionDialog import EricListSelectionDialog from eric7.EricWidgets.EricPlainTextDialog import EricPlainTextDialog from eric7.EricWidgets.EricProcessDialog import EricProcessDialog -from eric7.EricWidgets.EricZoomWidget import EricZoomWidget from eric7.SystemUtilities import FileSystemUtilities, OSUtilities from eric7.UI.Info import BugAddress @@ -46,6 +38,7 @@ from .EthernetDialogs.EthernetController import EthernetController from .MicroPythonFileManager import MicroPythonFileManager from .MicroPythonFileManagerWidget import MicroPythonFileManagerWidget +from .MicroPythonWebreplDeviceInterface import MicroPythonWebreplDeviceInterface from .Ui_MicroPythonWidget import Ui_MicroPythonWidget from .WifiDialogs.WifiController import WifiController @@ -57,142 +50,12 @@ HAS_QTCHART = False try: - from .MicroPythonDeviceInterface import MicroPythonDeviceInterface + from .MicroPythonSerialDeviceInterface import MicroPythonSerialDeviceInterface HAS_QTSERIALPORT = True except ImportError: HAS_QTSERIALPORT = False -# ANSI Colors (see https://en.wikipedia.org/wiki/ANSI_escape_code) -AnsiColorSchemes = { - "Windows 7": { - 0: QBrush(QColor(0, 0, 0)), - 1: QBrush(QColor(128, 0, 0)), - 2: QBrush(QColor(0, 128, 0)), - 3: QBrush(QColor(128, 128, 0)), - 4: QBrush(QColor(0, 0, 128)), - 5: QBrush(QColor(128, 0, 128)), - 6: QBrush(QColor(0, 128, 128)), - 7: QBrush(QColor(192, 192, 192)), - 10: QBrush(QColor(128, 128, 128)), - 11: QBrush(QColor(255, 0, 0)), - 12: QBrush(QColor(0, 255, 0)), - 13: QBrush(QColor(255, 255, 0)), - 14: QBrush(QColor(0, 0, 255)), - 15: QBrush(QColor(255, 0, 255)), - 16: QBrush(QColor(0, 255, 255)), - 17: QBrush(QColor(255, 255, 255)), - }, - "Windows 10": { - 0: QBrush(QColor(12, 12, 12)), - 1: QBrush(QColor(197, 15, 31)), - 2: QBrush(QColor(19, 161, 14)), - 3: QBrush(QColor(193, 156, 0)), - 4: QBrush(QColor(0, 55, 218)), - 5: QBrush(QColor(136, 23, 152)), - 6: QBrush(QColor(58, 150, 221)), - 7: QBrush(QColor(204, 204, 204)), - 10: QBrush(QColor(118, 118, 118)), - 11: QBrush(QColor(231, 72, 86)), - 12: QBrush(QColor(22, 198, 12)), - 13: QBrush(QColor(249, 241, 165)), - 14: QBrush(QColor(59, 12, 255)), - 15: QBrush(QColor(180, 0, 158)), - 16: QBrush(QColor(97, 214, 214)), - 17: QBrush(QColor(242, 242, 242)), - }, - "PuTTY": { - 0: QBrush(QColor(0, 0, 0)), - 1: QBrush(QColor(187, 0, 0)), - 2: QBrush(QColor(0, 187, 0)), - 3: QBrush(QColor(187, 187, 0)), - 4: QBrush(QColor(0, 0, 187)), - 5: QBrush(QColor(187, 0, 187)), - 6: QBrush(QColor(0, 187, 187)), - 7: QBrush(QColor(187, 187, 187)), - 10: QBrush(QColor(85, 85, 85)), - 11: QBrush(QColor(255, 85, 85)), - 12: QBrush(QColor(85, 255, 85)), - 13: QBrush(QColor(255, 255, 85)), - 14: QBrush(QColor(85, 85, 255)), - 15: QBrush(QColor(255, 85, 255)), - 16: QBrush(QColor(85, 255, 255)), - 17: QBrush(QColor(255, 255, 255)), - }, - "xterm": { - 0: QBrush(QColor(0, 0, 0)), - 1: QBrush(QColor(205, 0, 0)), - 2: QBrush(QColor(0, 205, 0)), - 3: QBrush(QColor(205, 205, 0)), - 4: QBrush(QColor(0, 0, 238)), - 5: QBrush(QColor(205, 0, 205)), - 6: QBrush(QColor(0, 205, 205)), - 7: QBrush(QColor(229, 229, 229)), - 10: QBrush(QColor(127, 127, 127)), - 11: QBrush(QColor(255, 0, 0)), - 12: QBrush(QColor(0, 255, 0)), - 13: QBrush(QColor(255, 255, 0)), - 14: QBrush(QColor(0, 0, 255)), - 15: QBrush(QColor(255, 0, 255)), - 16: QBrush(QColor(0, 255, 255)), - 17: QBrush(QColor(255, 255, 255)), - }, - "Ubuntu": { - 0: QBrush(QColor(1, 1, 1)), - 1: QBrush(QColor(222, 56, 43)), - 2: QBrush(QColor(57, 181, 74)), - 3: QBrush(QColor(255, 199, 6)), - 4: QBrush(QColor(0, 11, 184)), - 5: QBrush(QColor(118, 38, 113)), - 6: QBrush(QColor(44, 181, 233)), - 7: QBrush(QColor(204, 204, 204)), - 10: QBrush(QColor(128, 128, 128)), - 11: QBrush(QColor(255, 0, 0)), - 12: QBrush(QColor(0, 255, 0)), - 13: QBrush(QColor(255, 255, 0)), - 14: QBrush(QColor(0, 0, 255)), - 15: QBrush(QColor(255, 0, 255)), - 16: QBrush(QColor(0, 255, 255)), - 17: QBrush(QColor(255, 255, 255)), - }, - "Ubuntu (dark)": { - 0: QBrush(QColor(96, 96, 96)), - 1: QBrush(QColor(235, 58, 45)), - 2: QBrush(QColor(57, 181, 74)), - 3: QBrush(QColor(255, 199, 29)), - 4: QBrush(QColor(25, 56, 230)), - 5: QBrush(QColor(200, 64, 193)), - 6: QBrush(QColor(48, 200, 255)), - 7: QBrush(QColor(204, 204, 204)), - 10: QBrush(QColor(128, 128, 128)), - 11: QBrush(QColor(255, 0, 0)), - 12: QBrush(QColor(0, 255, 0)), - 13: QBrush(QColor(255, 255, 0)), - 14: QBrush(QColor(0, 0, 255)), - 15: QBrush(QColor(255, 0, 255)), - 16: QBrush(QColor(0, 255, 255)), - 17: QBrush(QColor(255, 255, 255)), - }, - "Breeze (dark)": { - 0: QBrush(QColor(35, 38, 39)), - 1: QBrush(QColor(237, 21, 21)), - 2: QBrush(QColor(17, 209, 22)), - 3: QBrush(QColor(246, 116, 0)), - 4: QBrush(QColor(29, 153, 243)), - 5: QBrush(QColor(155, 89, 182)), - 6: QBrush(QColor(26, 188, 156)), - 7: QBrush(QColor(252, 252, 252)), - 10: QBrush(QColor(127, 140, 141)), - 11: QBrush(QColor(192, 57, 43)), - 12: QBrush(QColor(28, 220, 154)), - 13: QBrush(QColor(253, 188, 75)), - 14: QBrush(QColor(61, 174, 233)), - 15: QBrush(QColor(142, 68, 173)), - 16: QBrush(QColor(22, 160, 133)), - 17: QBrush(QColor(255, 255, 255)), - }, -} - class MicroPythonWidget(QWidget, Ui_MicroPythonWidget): """ @@ -202,15 +65,14 @@ connection for further processing """ - ZoomMin = -10 - ZoomMax = 20 - DeviceTypeRole = Qt.ItemDataRole.UserRole DeviceBoardRole = Qt.ItemDataRole.UserRole + 1 DevicePortRole = Qt.ItemDataRole.UserRole + 2 DeviceVidRole = Qt.ItemDataRole.UserRole + 3 DevicePidRole = Qt.ItemDataRole.UserRole + 4 DeviceSerNoRole = Qt.ItemDataRole.UserRole + 5 + DeviceInterfaceTypeRole = Qt.ItemDataRole.UserRole + 6 + DeviceWebreplUrlRole = Qt.ItemDataRole.UserRole + 7 dataReceived = pyqtSignal(bytes) @@ -254,34 +116,14 @@ self.deviceIconLabel.setPixmap(Devices.getDeviceIcon("", False)) - self.checkButton.setIcon(EricPixmapCache.getIcon("question")) + self.repopulateButton.setIcon(EricPixmapCache.getIcon("question")) + self.webreplConfigButton.setIcon(EricPixmapCache.getIcon("edit")) self.runButton.setIcon(EricPixmapCache.getIcon("start")) self.replButton.setIcon(EricPixmapCache.getIcon("terminal")) self.filesButton.setIcon(EricPixmapCache.getIcon("filemanager")) self.chartButton.setIcon(EricPixmapCache.getIcon("chart")) self.connectButton.setIcon(EricPixmapCache.getIcon("linkConnect")) - self.__zoomLayout = QHBoxLayout() - self.__osdLabel = QLabel() - self.__osdLabel.setSizePolicy( - QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Preferred - ) - self.__zoomLayout.addWidget(self.__osdLabel) - - self.__zoom0 = self.replEdit.fontPointSize() - self.__zoomWidget = EricZoomWidget( - EricPixmapCache.getPixmap("zoomOut"), - EricPixmapCache.getPixmap("zoomIn"), - EricPixmapCache.getPixmap("zoomReset"), - self, - ) - self.__zoomLayout.addWidget(self.__zoomWidget) - self.layout().insertLayout(self.layout().count() - 1, self.__zoomLayout) - self.__zoomWidget.setMinimum(self.ZoomMin) - self.__zoomWidget.setMaximum(self.ZoomMax) - self.__zoomWidget.valueChanged.connect(self.__doZoom) - self.__currentZoom = 0 - self.__fileManager = None self.__fileManagerWidget = None self.__chartWidget = None @@ -290,19 +132,16 @@ self.__lastPort = None self.__lastDeviceType = None - if HAS_QTSERIALPORT: - self.__interface = MicroPythonDeviceInterface(self) - else: - self.__interface = None + self.__lastWebreplUrl = None + + self.__interface = None self.__device = None self.__connected = False self.__linkConnected = False self.__setConnected(False) - self.__replBuffer = b"" - if not HAS_QTSERIALPORT: - self.replEdit.setHtml( + self.replWidget.replEdit().setHtml( self.tr( "<h3>The QtSerialPort package is not available.<br/>" "MicroPython support is deactivated.</h3>" @@ -311,27 +150,14 @@ self.setEnabled(False) return - self.__vt100Re = re.compile( - r"(?P<count>\d*)(?P<color>(?:;?\d*)*)(?P<action>[ABCDKm])" - ) - self.__populateDeviceTypeComboBox() - self.replEdit.installEventFilter(self) - # Hack to intercept middle button paste - self.__origReplEditMouseReleaseEvent = self.replEdit.mouseReleaseEvent - self.replEdit.mouseReleaseEvent = self.__replEditMouseReleaseEvent - - self.replEdit.customContextMenuRequested.connect(self.__showContextMenu) + self.repopulateButton.clicked.connect(self.__populateDeviceTypeComboBox) + self.webreplConfigButton.clicked.connect(self.__configureWebreplUrls) self.__ui.preferencesChanged.connect(self.__handlePreferencesChanged) - self.__ui.preferencesChanged.connect(self.__interface.handlePreferencesChanged) self.__handlePreferencesChanged() - charFormat = self.replEdit.currentCharFormat() - self.DefaultForeground = charFormat.foreground() - self.DefaultBackground = charFormat.background() - def __populateDeviceTypeComboBox(self): """ Private method to populate the device type selector. @@ -345,7 +171,7 @@ devices, unknownDevices, unknownPorts = Devices.getFoundDevices() if devices: supportedMessage = self.tr( - "%n supported device(s) detected.", "", len(devices) + "%n supported serial device(s) detected.", "", len(devices) ) for index, ( @@ -376,9 +202,12 @@ self.deviceTypeComboBox.setItemData( index, serialNumber, self.DeviceSerNoRole ) + self.deviceTypeComboBox.setItemData( + index, "serial", self.DeviceInterfaceTypeRole + ) else: - supportedMessage = self.tr("No supported devices detected.") + supportedMessage = self.tr("No supported serial devices detected.") self.__unknownPorts = unknownPorts if self.__unknownPorts: @@ -398,7 +227,33 @@ else: unknownMessage = "" - self.deviceInfoLabel.setText(supportedMessage + unknownMessage) + # add WebREPL entries + self.deviceTypeComboBox.insertSeparator(self.deviceTypeComboBox.count()) + self.deviceTypeComboBox.addItem(self.tr("WebREPL (manual)")) + index = self.deviceTypeComboBox.count() - 1 + self.deviceTypeComboBox.setItemData( + index, "webrepl", self.DeviceInterfaceTypeRole + ) + webreplUrlsDict = Preferences.getMicroPython("WebreplUrls") + for name in sorted(webreplUrlsDict): + self.deviceTypeComboBox.addItem(webreplUrlsDict[name]["description"]) + index = self.deviceTypeComboBox.count() - 1 + self.deviceTypeComboBox.setItemData( + index, webreplUrlsDict[name]["device_type"], self.DeviceTypeRole + ) + self.deviceTypeComboBox.setItemData( + index, "webrepl", self.DeviceInterfaceTypeRole + ) + self.deviceTypeComboBox.setItemData( + index, webreplUrlsDict[name]["url"], self.DeviceWebreplUrlRole + ) + webreplMessage = ( + self.tr("\n%n WebREPL connection(s) defined.", "", len(webreplUrlsDict)) + if webreplUrlsDict + else "" + ) + + self.deviceInfoLabel.setText(supportedMessage + unknownMessage + webreplMessage) index = self.deviceTypeComboBox.findText( currentDevice, Qt.MatchFlag.MatchExactly @@ -467,20 +322,31 @@ """ Private slot to handle a change in preferences. """ - self.__colorScheme = Preferences.getMicroPython("ColorScheme") + self.replWidget.replEdit().handlePreferencesChanged() - self.__font = Preferences.getEditorOtherFonts("MonospacedFont") - self.replEdit.setFontFamily(self.__font.family()) - self.replEdit.setFontPointSize(self.__font.pointSize()) - - if Preferences.getMicroPython("ReplLineWrap"): - self.replEdit.setLineWrapMode(QTextEdit.LineWrapMode.WidgetWidth) - else: - self.replEdit.setLineWrapMode(QTextEdit.LineWrapMode.NoWrap) + if self.__interface is not None: + self.__interface.handlePreferencesChanged if self.__chartWidget is not None: self.__chartWidget.preferencesChanged() + @pyqtSlot() + def __configureWebreplUrls(self): + """ + Private slot to configure the list of selectable WebREPL URLs. + """ + from .MicroPythonWebreplUrlsConfigDialog import ( + MicroPythonWebreplUrlsConfigDialog, + ) + + webreplUrlsDict = Preferences.getMicroPython("WebreplUrls") + dlg = MicroPythonWebreplUrlsConfigDialog(webreplUrlsDict) + if dlg.exec() == QDialog.DialogCode.Accepted: + webreplUrlsDict = dlg.getWebreplDict() + Preferences.setMicroPython("WebreplUrls", webreplUrlsDict) + + self.__populateDeviceTypeComboBox() + def deviceInterface(self): """ Public method to get a reference to the device interface object. @@ -529,7 +395,7 @@ pid = self.deviceTypeComboBox.itemData(index, self.DevicePidRole) serNo = self.deviceTypeComboBox.itemData(index, self.DeviceSerNoRole) - if deviceType or (pid is not None and pid is not None): + if deviceType or (vid is not None and pid is not None): deviceWorkspace = ( self.__device.getWorkspace() if self.__device is not None else None ) @@ -544,13 +410,6 @@ else: self.__device = None - @pyqtSlot() - def on_checkButton_clicked(self): - """ - Private slot to check for connected devices. - """ - self.__populateDeviceTypeComboBox() - def setActionButtons(self, **kwargs): """ Public method to set the enabled state of the various action buttons. @@ -570,50 +429,6 @@ kwargs["chart"] and HAS_QTCHART and self.__connected ) - @pyqtSlot(QPoint) - def __showContextMenu(self, pos): - """ - Private slot to show the REPL context menu. - - @param pos position to show the menu at - @type QPoint - """ - if OSUtilities.isMacPlatform(): - copyKeys = QKeySequence("Ctrl+C") - pasteKeys = QKeySequence("Ctrl+V") - selectAllKeys = QKeySequence("Ctrl+A") - else: - copyKeys = QKeySequence("Ctrl+Shift+C") - pasteKeys = QKeySequence("Ctrl+Shift+V") - selectAllKeys = QKeySequence("Ctrl+Shift+A") - - menu = QMenu(self) - menu.addAction( - EricPixmapCache.getIcon("editDelete"), self.tr("Clear"), self.__clear - ).setEnabled(bool(self.replEdit.toPlainText())) - menu.addSeparator() - menu.addAction( - EricPixmapCache.getIcon("editCopy"), - self.tr("Copy"), - copyKeys, - self.replEdit.copy, - ).setEnabled(self.replEdit.textCursor().hasSelection()) - menu.addAction( - EricPixmapCache.getIcon("editPaste"), - self.tr("Paste"), - pasteKeys, - self.__paste, - ).setEnabled(self.replEdit.canPaste() and self.__connected) - menu.addSeparator() - menu.addAction( - EricPixmapCache.getIcon("editSelectAll"), - self.tr("Select All"), - selectAllKeys, - self.replEdit.selectAll, - ).setEnabled(bool(self.replEdit.toPlainText())) - - menu.exec(self.replEdit.mapToGlobal(pos)) - def __setConnected(self, connected): """ Private method to set the connection status LED. @@ -622,7 +437,7 @@ @type bool """ self.__connected = connected - self.__linkConnected = self.__interface.isConnected() + self.__linkConnected = bool(self.__interface) and self.__interface.isConnected() self.deviceConnectedLed.setOn(self.__linkConnected) if self.__fileManagerWidget: @@ -708,8 +523,10 @@ ) return - self.replEdit.clear() - self.__interface.dataReceived.connect(self.__processData) + self.replWidget.replEdit().clear() + self.__interface.dataReceived.connect( + self.replWidget.replEdit().processData + ) if not self.__interface.isConnected(): self.__connectToDevice() @@ -720,10 +537,13 @@ self.__interface.write(b"\x03") self.__device.setRepl(True) - self.replEdit.setFocus(Qt.FocusReason.OtherFocusReason) + self.replWidget.replEdit().setFocus(Qt.FocusReason.OtherFocusReason) else: with contextlib.suppress(TypeError): - self.__interface.dataReceived.disconnect(self.__processData) + if self.__interface is not None: + self.__interface.dataReceived.disconnect( + self.replWidget.replEdit().processData + ) if not self.chartButton.isChecked() and not self.filesButton.isChecked(): self.__disconnectFromDevice() self.__device.setRepl(False) @@ -735,7 +555,7 @@ Private slot to connect to the selected device or disconnect from the currently connected device. """ - self.__osdLabel.clear() + self.replWidget.clearOSD() if self.__linkConnected: with EricOverrideCursor(): self.__disconnectFromDevice() @@ -750,372 +570,6 @@ with EricOverrideCursor(): self.__connectToDevice(withAutostart=True) - @pyqtSlot() - def __clear(self): - """ - Private slot to clear the REPL pane. - """ - self.replEdit.clear() - self.__interface.isConnected() and self.__interface.write(b"\r") - - @pyqtSlot() - def __paste(self, mode=QClipboard.Mode.Clipboard): - """ - Private slot to perform a paste operation. - - @param mode paste mode (defaults to QClipboard.Mode.Clipboard) - @type QClipboard.Mode (optional) - """ - # add support for paste by mouse middle button - clipboard = QApplication.clipboard() - if clipboard: - pasteText = clipboard.text(mode=mode) - if pasteText: - pasteText = pasteText.replace("\n\r", "\r") - pasteText = pasteText.replace("\n", "\r") - if self.__interface.isConnected(): - self.__interface.write(b"\x05") - self.__interface.write(pasteText.encode("utf-8")) - self.__interface.write(b"\x04") - - def eventFilter(self, obj, evt): - """ - Public method to process events for the REPL pane. - - @param obj reference to the object the event was meant for - @type QObject - @param evt reference to the event object - @type QEvent - @return flag to indicate that the event was handled - @rtype bool - """ - if obj is self.replEdit and evt.type() == QEvent.Type.KeyPress: - # handle the key press event on behalf of the REPL pane - key = evt.key() - msg = bytes(evt.text(), "utf8") - if key == Qt.Key.Key_Backspace: - msg = b"\b" - elif key == Qt.Key.Key_Delete: - msg = b"\x1B[\x33\x7E" - elif key == Qt.Key.Key_Up: - msg = b"\x1B[A" - elif key == Qt.Key.Key_Down: - msg = b"\x1B[B" - elif key == Qt.Key.Key_Right: - msg = b"\x1B[C" - elif key == Qt.Key.Key_Left: - msg = b"\x1B[D" - elif key == Qt.Key.Key_Home: - msg = b"\x1B[H" - elif key == Qt.Key.Key_End: - msg = b"\x1B[F" - elif ( - OSUtilities.isMacPlatform() - and evt.modifiers() == Qt.KeyboardModifier.MetaModifier - ) or ( - not OSUtilities.isMacPlatform() - and evt.modifiers() == Qt.KeyboardModifier.ControlModifier - ): - if Qt.Key.Key_A <= key <= Qt.Key.Key_Z: - # devices treat an input of \x01 as Ctrl+A, etc. - msg = bytes([1 + key - Qt.Key.Key_A]) - elif evt.modifiers() == ( - Qt.KeyboardModifier.ControlModifier | Qt.KeyboardModifier.ShiftModifier - ) or ( - OSUtilities.isMacPlatform() - and evt.modifiers() == Qt.KeyboardModifier.ControlModifier - ): - if key == Qt.Key.Key_C: - self.replEdit.copy() - msg = b"" - elif key == Qt.Key.Key_V: - self.__paste() - msg = b"" - elif key == Qt.Key.Key_A: - self.replEdit.selectAll() - msg = b"" - elif key in (Qt.Key.Key_Return, Qt.Key.Key_Enter): - tc = self.replEdit.textCursor() - tc.movePosition(QTextCursor.MoveOperation.EndOfLine) - self.replEdit.setTextCursor(tc) - self.__interface.isConnected() and self.__interface.write(msg) - return True - else: - # standard event processing - return super().eventFilter(obj, evt) - - def __replEditMouseReleaseEvent(self, evt): - """ - Private method handling mouse release events for the replEdit widget. - - Note: this is a hack because QTextEdit does not allow filtering of - QEvent.Type.MouseButtonRelease. To make middle button paste work, we - had to intercept the protected event method (some kind of - reimplementing it). - - @param evt reference to the event object - @type QMouseEvent - """ - if evt.button() == Qt.MouseButton.MiddleButton: - self.__paste(mode=QClipboard.Mode.Selection) - msg = b"" - if self.__interface.isConnected(): - self.__interface.write(msg) - evt.accept() - else: - self.__origReplEditMouseReleaseEvent(evt) - - def __processData(self, data): - """ - Private slot to process bytes received from the device. - - @param data bytes received from the device - @type bytes - """ - tc = self.replEdit.textCursor() - # the text cursor must be on the last line - while tc.movePosition(QTextCursor.MoveOperation.Down): - pass - - # set the font - charFormat = tc.charFormat() - charFormat.setFontFamilies([self.__font.family()]) - charFormat.setFontPointSize(self.__font.pointSize()) - tc.setCharFormat(charFormat) - - # add received data to the buffered one - data = self.__replBuffer + data - - index = 0 - while index < len(data): - if data[index] == 8: # \b - tc.movePosition(QTextCursor.MoveOperation.Left) - self.replEdit.setTextCursor(tc) - elif data[index] in (4, 13): # EOT, \r - pass - elif len(data) > index + 1 and data[index] == 27 and data[index + 1] == 91: - # VT100 cursor command detected: <Esc>[ - index += 2 # move index to after the [ - match = self.__vt100Re.search( - data[index:].decode("utf-8", errors="replace") - ) - if match: - # move to last position in control sequence - # ++ will be done at end of loop - index += match.end() - 1 - - action = match.group("action") - if action in "ABCD": - if match.group("count") == "": - count = 1 - else: - count = int(match.group("count")) - - if action == "A": # up - tc.movePosition(QTextCursor.MoveOperation.Up, n=count) - self.replEdit.setTextCursor(tc) - elif action == "B": # down - tc.movePosition(QTextCursor.MoveOperation.Down, n=count) - self.replEdit.setTextCursor(tc) - elif action == "C": # right - tc.movePosition(QTextCursor.MoveOperation.Right, n=count) - self.replEdit.setTextCursor(tc) - elif action == "D": # left - tc.movePosition(QTextCursor.MoveOperation.Left, n=count) - self.replEdit.setTextCursor(tc) - elif action == "K": # delete things - if match.group("count") in ("", "0"): - # delete to end of line - tc.movePosition( - QTextCursor.MoveOperation.EndOfLine, - mode=QTextCursor.MoveMode.KeepAnchor, - ) - tc.removeSelectedText() - self.replEdit.setTextCursor(tc) - elif match.group("count") == "1": - # delete to beginning of line - tc.movePosition( - QTextCursor.MoveOperation.StartOfLine, - mode=QTextCursor.MoveMode.KeepAnchor, - ) - tc.removeSelectedText() - self.replEdit.setTextCursor(tc) - elif match.group("count") == "2": - # delete whole line - tc.movePosition(QTextCursor.MoveOperation.EndOfLine) - tc.movePosition( - QTextCursor.MoveOperation.StartOfLine, - mode=QTextCursor.MoveMode.KeepAnchor, - ) - tc.removeSelectedText() - self.replEdit.setTextCursor(tc) - elif action == "m": - self.__setCharFormat(match.group(0)[:-1].split(";"), tc) - elif ( - len(data) > index + 1 - and data[index] == 27 - and data[index + 1 : index + 4] == b"]0;" - ): - if b"\x1b\\" in data[index + 4 :]: - # 'set window title' command detected: <Esc>]0;...<Esc>\ - # __IGNORE_WARNING_M891__ - titleData = data[index + 4 :].split(b"\x1b\\")[0] - title = titleData.decode() - index += len(titleData) + 5 # one more is done at the end - self.__osdLabel.setText(title) - else: - # data is incomplete; buffer and stop processing - self.__replBuffer = data[index:] - return - else: - tc.deleteChar() - self.replEdit.setTextCursor(tc) - self.replEdit.insertPlainText(chr(data[index])) - - index += 1 - - self.replEdit.ensureCursorVisible() - self.__replBuffer = b"" - - def __setCharFormat(self, formatCodes, textCursor): - """ - Private method setting the current text format of the REPL pane based - on the passed ANSI codes. - - Following codes are used: - <ul> - <li>0: Reset</li> - <li>1: Bold font (weight 75)</li> - <li>2: Light font (weight 25)</li> - <li>3: Italic font</li> - <li>4: Underlined font</li> - <li>9: Strikeout font</li> - <li>21: Bold off (weight 50)</li> - <li>22: Light off (weight 50)</li> - <li>23: Italic off</li> - <li>24: Underline off</li> - <li>29: Strikeout off</li> - <li>30: foreground Black</li> - <li>31: foreground Dark Red</li> - <li>32: foreground Dark Green</li> - <li>33: foreground Dark Yellow</li> - <li>34: foreground Dark Blue</li> - <li>35: foreground Dark Magenta</li> - <li>36: foreground Dark Cyan</li> - <li>37: foreground Light Gray</li> - <li>39: reset foreground to default</li> - <li>40: background Black</li> - <li>41: background Dark Red</li> - <li>42: background Dark Green</li> - <li>43: background Dark Yellow</li> - <li>44: background Dark Blue</li> - <li>45: background Dark Magenta</li> - <li>46: background Dark Cyan</li> - <li>47: background Light Gray</li> - <li>49: reset background to default</li> - <li>53: Overlined font</li> - <li>55: Overline off</li> - <li>90: bright foreground Dark Gray</li> - <li>91: bright foreground Red</li> - <li>92: bright foreground Green</li> - <li>93: bright foreground Yellow</li> - <li>94: bright foreground Blue</li> - <li>95: bright foreground Magenta</li> - <li>96: bright foreground Cyan</li> - <li>97: bright foreground White</li> - <li>100: bright background Dark Gray</li> - <li>101: bright background Red</li> - <li>102: bright background Green</li> - <li>103: bright background Yellow</li> - <li>104: bright background Blue</li> - <li>105: bright background Magenta</li> - <li>106: bright background Cyan</li> - <li>107: bright background White</li> - </ul> - - @param formatCodes list of format codes - @type list of str - @param textCursor reference to the text cursor - @type QTextCursor - """ - if not formatCodes: - # empty format codes list is treated as a reset - formatCodes = ["0"] - - charFormat = textCursor.charFormat() - for formatCode in formatCodes: - try: - formatCode = int(formatCode) - except ValueError: - # ignore non digit values - continue - - if formatCode == 0: - charFormat.setFontWeight(50) - charFormat.setFontItalic(False) - charFormat.setFontUnderline(False) - charFormat.setFontStrikeOut(False) - charFormat.setFontOverline(False) - charFormat.setForeground(self.DefaultForeground) - charFormat.setBackground(self.DefaultBackground) - elif formatCode == 1: - charFormat.setFontWeight(75) - elif formatCode == 2: - charFormat.setFontWeight(25) - elif formatCode == 3: - charFormat.setFontItalic(True) - elif formatCode == 4: - charFormat.setFontUnderline(True) - elif formatCode == 9: - charFormat.setFontStrikeOut(True) - elif formatCode in (21, 22): - charFormat.setFontWeight(50) - elif formatCode == 23: - charFormat.setFontItalic(False) - elif formatCode == 24: - charFormat.setFontUnderline(False) - elif formatCode == 29: - charFormat.setFontStrikeOut(False) - elif formatCode == 53: - charFormat.setFontOverline(True) - elif formatCode == 55: - charFormat.setFontOverline(False) - elif formatCode in (30, 31, 32, 33, 34, 35, 36, 37): - charFormat.setForeground( - AnsiColorSchemes[self.__colorScheme][formatCode - 30] - ) - elif formatCode in (40, 41, 42, 43, 44, 45, 46, 47): - charFormat.setBackground( - AnsiColorSchemes[self.__colorScheme][formatCode - 40] - ) - elif formatCode in (90, 91, 92, 93, 94, 95, 96, 97): - charFormat.setForeground( - AnsiColorSchemes[self.__colorScheme][formatCode - 80] - ) - elif formatCode in (100, 101, 102, 103, 104, 105, 106, 107): - charFormat.setBackground( - AnsiColorSchemes[self.__colorScheme][formatCode - 90] - ) - elif formatCode == 39: - charFormat.setForeground(self.DefaultForeground) - elif formatCode == 49: - charFormat.setBackground(self.DefaultBackground) - - textCursor.setCharFormat(charFormat) - - def __doZoom(self, value): - """ - Private slot to zoom the REPL pane. - - @param value zoom value - @type int - """ - if value < self.__currentZoom: - self.replEdit.zoomOut(self.__currentZoom - value) - elif value > self.__currentZoom: - self.replEdit.zoomIn(value - self.__currentZoom) - self.__currentZoom = value - def getCurrentPort(self): """ Public method to determine the port path of the selected device. @@ -1134,16 +588,6 @@ else: return "" - def getCurrentBoard(self): - """ - Public method to get the board name of the selected device. - - @return board name of the selected device - @rtype str - """ - boardName = self.deviceTypeComboBox.currentData(self.DeviceBoardRole) - return boardName - def getDevice(self): """ Public method to get a reference to the current device. @@ -1182,27 +626,67 @@ @param withAutostart flag indicating to start the repl and file manager automatically @type bool + @exception ValueError raised to indicate an unsupported interface type """ from .ConnectionSelectionDialog import ConnectionSelectionDialog + from .MicroPythonWebreplConnectionDialog import ( + MicroPythonWebreplConnectionDialog, + ) - port = self.getCurrentPort() - if not port: - with EricOverridenCursor(): - dlg = ConnectionSelectionDialog( - self.__unknownPorts, self.__lastPort, self.__lastDeviceType - ) - if dlg.exec() == QDialog.DialogCode.Accepted: - vid, pid, port, deviceType = dlg.getData() + interfaceType = ( + self.deviceTypeComboBox.currentData(self.DeviceInterfaceTypeRole) + or "serial" + ) # 'serial' is the default + + if interfaceType not in ("serial", "webrepl"): + raise ValueError( + "Unsupported interface type detected ('{0}')".format(interfaceType) + ) + + if interfaceType == "serial": + port = self.getCurrentPort() + if not port: + with EricOverridenCursor(): + dlg = ConnectionSelectionDialog( + self.__unknownPorts, self.__lastPort, self.__lastDeviceType + ) + if dlg.exec() == QDialog.DialogCode.Accepted: + vid, pid, port, deviceType = dlg.getData() + + self.deviceIconLabel.setPixmap( + Devices.getDeviceIcon(deviceType, False) + ) + self.__device = Devices.getDevice(deviceType, self, vid, pid) - self.deviceIconLabel.setPixmap( - Devices.getDeviceIcon(deviceType, False) - ) - self.__device = Devices.getDevice(deviceType, self, vid, pid) + self.__lastPort = port + self.__lastDeviceType = deviceType + else: + return - self.__lastPort = port - self.__lastDeviceType = deviceType - else: - return + self.__interface = MicroPythonSerialDeviceInterface(self) + elif interfaceType == "webrepl": + port = self.deviceTypeComboBox.currentData(self.DeviceWebreplUrlRole) + if not port: + 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) + self.replWidget.replEdit().setInterface(self.__interface) + self.__interface.osdInfo.connect(self.replWidget.setOSDInfo) if self.__interface.connectToDevice(port): deviceResponding = self.__interface.probeDevice() @@ -1250,9 +734,14 @@ Private method to disconnect from the device. """ self.__device and self.__device.setConnected(False) - self.__interface.disconnectFromDevice() self.__setConnected(False) + if self.__interface is not None: + self.__interface.disconnectFromDevice() + self.__interface.deleteLater() + self.__interface = None + self.replWidget.replEdit().setInterface(None) + @pyqtSlot() def on_runButton_clicked(self): """
--- a/src/eric7/MicroPython/MicroPythonWidget.ui Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/MicroPython/MicroPythonWidget.ui Thu May 04 17:58:52 2023 +0200 @@ -10,6 +10,12 @@ <height>548</height> </rect> </property> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> <layout class="QHBoxLayout" name="horizontalLayout"> @@ -34,21 +40,15 @@ </item> <item> <layout class="QGridLayout" name="gridLayout"> - <item row="1" column="0" colspan="4"> - <widget class="QLabel" name="deviceInfoLabel"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="wordWrap"> - <bool>true</bool> + <item row="0" column="1"> + <widget class="QToolButton" name="repopulateButton"> + <property name="toolTip"> + <string>Press to detect connected devices and repopulate the device selector.</string> </property> </widget> </item> <item row="0" column="3"> - <widget class="EricLed" name="deviceConnectedLed" native="true"/> + <widget class="EricToolButton" name="menuButton"/> </item> <item row="0" column="0"> <widget class="QComboBox" name="deviceTypeComboBox"> @@ -63,15 +63,28 @@ </property> </widget> </item> - <item row="0" column="1"> - <widget class="QToolButton" name="checkButton"> - <property name="toolTip"> - <string>Press to check for connected devices</string> + <item row="1" column="0" colspan="5"> + <widget class="QLabel" name="deviceInfoLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="wordWrap"> + <bool>true</bool> </property> </widget> </item> + <item row="0" column="4"> + <widget class="EricLed" name="deviceConnectedLed" native="true"/> + </item> <item row="0" column="2"> - <widget class="EricToolButton" name="menuButton"/> + <widget class="QToolButton" name="webreplConfigButton"> + <property name="toolTip"> + <string>Press to edit the list of configured WebREPL connections.</string> + </property> + </widget> </item> </layout> </item> @@ -139,18 +152,15 @@ </layout> </item> <item> - <widget class="QTextEdit" name="replEdit"> - <property name="contextMenuPolicy"> - <enum>Qt::CustomContextMenu</enum> + <widget class="MicroPythonReplWidget" name="replWidget" native="true"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> </property> - <property name="undoRedoEnabled"> - <bool>false</bool> - </property> - <property name="lineWrapMode"> - <enum>QTextEdit::NoWrap</enum> - </property> - <property name="acceptRichText"> - <bool>false</bool> + <property name="focusPolicy"> + <enum>Qt::StrongFocus</enum> </property> </widget> </item> @@ -168,17 +178,24 @@ <header>eric7/EricWidgets/EricLed.h</header> <container>1</container> </customwidget> + <customwidget> + <class>MicroPythonReplWidget</class> + <extends>QWidget</extends> + <header>eric7/MicroPython/MicroPythonReplWidget.h</header> + <container>1</container> + </customwidget> </customwidgets> <tabstops> <tabstop>deviceTypeComboBox</tabstop> - <tabstop>checkButton</tabstop> + <tabstop>repopulateButton</tabstop> + <tabstop>webreplConfigButton</tabstop> <tabstop>menuButton</tabstop> <tabstop>runButton</tabstop> <tabstop>replButton</tabstop> <tabstop>filesButton</tabstop> <tabstop>chartButton</tabstop> <tabstop>connectButton</tabstop> - <tabstop>replEdit</tabstop> + <tabstop>replWidget</tabstop> </tabstops> <resources/> <connections/>
--- a/src/eric7/Preferences/ConfigurationPages/MicroPythonPage.py Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/Preferences/ConfigurationPages/MicroPythonPage.py Thu May 04 17:58:52 2023 +0200 @@ -16,7 +16,7 @@ from eric7.EricGui import EricPixmapCache from eric7.EricWidgets.EricApplication import ericApp from eric7.EricWidgets.EricPathPicker import EricPathPickerModes -from eric7.MicroPython.MicroPythonWidget import AnsiColorSchemes +from eric7.MicroPython.MicroPythonReplWidget import AnsiColorSchemes from eric7.SystemUtilities import FileSystemUtilities, OSUtilities, PythonUtilities from .ConfigurationPageBase import ConfigurationPageBase @@ -115,11 +115,15 @@ Preferences.getMicroPython("EnableManualDeviceSelection") ) - # serial link parameters - self.timeoutSpinBox.setValue( + # device communication + self.serialTimeoutSpinBox.setValue( Preferences.getMicroPython("SerialTimeout") // 1000 - ) - # converted to seconds + ) # converted to seconds + self.webreplTimeoutSpinBox.setValue( + Preferences.getMicroPython("WebreplTimeout") // 1000 + ) # converted to seconds + + # device time handling self.syncTimeCheckBox.setChecked( Preferences.getMicroPython("SyncTimeAfterConnect") ) @@ -227,9 +231,15 @@ "EnableManualDeviceSelection", self.manualSelectionCheckBox.isChecked() ) - # serial link parameters - Preferences.setMicroPython("SerialTimeout", self.timeoutSpinBox.value() * 1000) - # converted to milliseconds + # device communication + Preferences.setMicroPython( + "SerialTimeout", self.serialTimeoutSpinBox.value() * 1000 + ) # converted to milliseconds + Preferences.setMicroPython( + "WebreplTimeout", self.webreplTimeoutSpinBox.value() * 1000 + ) # converted to milliseconds + + # device time handling Preferences.setMicroPython( "SyncTimeAfterConnect", self.syncTimeCheckBox.isChecked() )
--- a/src/eric7/Preferences/ConfigurationPages/MicroPythonPage.ui Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/Preferences/ConfigurationPages/MicroPythonPage.ui Thu May 04 17:58:52 2023 +0200 @@ -7,7 +7,7 @@ <x>0</x> <y>0</y> <width>541</width> - <height>2038</height> + <height>2150</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout_3"> @@ -78,18 +78,18 @@ <item> <widget class="QGroupBox" name="groupBox_2"> <property name="title"> - <string>Serial Link</string> + <string>Device Communication</string> </property> <layout class="QGridLayout" name="gridLayout_2"> <item row="0" column="0"> <widget class="QLabel" name="label_2"> <property name="text"> - <string>Timeout for Serial Link Communication:</string> + <string>Serial Link Timeout:</string> </property> </widget> </item> <item row="0" column="1"> - <widget class="QSpinBox" name="timeoutSpinBox"> + <widget class="QSpinBox" name="serialTimeoutSpinBox"> <property name="toolTip"> <string>Enter the timout value</string> </property> @@ -120,7 +120,42 @@ </property> </spacer> </item> - <item row="1" column="0" colspan="3"> + <item row="1" column="0"> + <widget class="QLabel" name="label_33"> + <property name="text"> + <string>WebRepl Timeout:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QSpinBox" name="webreplTimeoutSpinBox"> + <property name="toolTip"> + <string>Enter the timout value</string> + </property> + <property name="alignment"> + <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set> + </property> + <property name="suffix"> + <string> s</string> + </property> + <property name="minimum"> + <number>1</number> + </property> + <property name="maximum"> + <number>30</number> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="groupBox_19"> + <property name="title"> + <string>Device Time</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout_9"> + <item> <widget class="QCheckBox" name="syncTimeCheckBox"> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> @@ -1004,7 +1039,8 @@ <tabstops> <tabstop>workspacePicker</tabstop> <tabstop>manualSelectionCheckBox</tabstop> - <tabstop>timeoutSpinBox</tabstop> + <tabstop>serialTimeoutSpinBox</tabstop> + <tabstop>webreplTimeoutSpinBox</tabstop> <tabstop>syncTimeCheckBox</tabstop> <tabstop>colorSchemeComboBox</tabstop> <tabstop>replWrapCheckBox</tabstop>
--- a/src/eric7/Preferences/__init__.py Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/Preferences/__init__.py Thu May 04 17:58:52 2023 +0200 @@ -1570,7 +1570,9 @@ # defaults for MicroPython microPythonDefaults = { "MpyWorkspace": "", - "SerialTimeout": 2000, # timeout in milliseconds + "SerialTimeout": 2000, # timeout in milliseconds for serial connections + "WebreplTimeout": 5000, # timeout in milliseconds for webrepl connections + "WebreplUrls": "{}", # empty dict of WebREPL URLs as JSON "ReplLineWrap": True, # wrap the REPL lines "SyncTimeAfterConnect": True, "ShowHiddenLocal": True, @@ -3806,6 +3808,7 @@ """ if key in ( "SerialTimeout", + "WebreplTimeout", "ChartColorTheme", "WifiApAuthMode", "NtpOffset", @@ -3825,7 +3828,7 @@ return toBool( Prefs.settings.value("MicroPython/" + key, Prefs.microPythonDefaults[key]) ) - elif key in ["IgnoredUnknownDevices", "ManualDevices"]: + elif key in ["IgnoredUnknownDevices", "ManualDevices", "WebreplUrls"]: jsonStr = Prefs.settings.value( "MicroPython/" + key, Prefs.microPythonDefaults[key] ) @@ -3851,7 +3854,7 @@ @param key the key of the setting to be set @param value the value to be set """ - if key in ["IgnoredUnknownDevices", "ManualDevices"]: + if key in ["IgnoredUnknownDevices", "ManualDevices", "WebreplUrls"]: Prefs.settings.setValue("MicroPython/" + key, json.dumps(value)) elif key in ("WifiPassword", "WifiApPassword"): Prefs.settings.setValue("MicroPython/" + key, pwConvert(value, encode=True))
--- a/src/eric7/i18n/eric7_cs.ts Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/i18n/eric7_cs.ts Thu May 04 17:58:52 2023 +0200 @@ -1790,77 +1790,77 @@ <context> <name>BaseDevice</name> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="196" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="199" /> <source>Device Data Not Available</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="197" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="200" /> <source><p>The device data is not available. Try to connect to the device again. Aborting...</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="250" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="253" /> <source>Unsupported Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="260" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="263" /> <source>REPL is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="279" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="282" /> <source>Plotter is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="298" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="301" /> <source>Running scripts is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="317" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="320" /> <source>File Manager is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="372" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="375" /> <source>Select Device Directory</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="373" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="376" /> <source>Select the directory for the connected device:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="519" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="528" /> <source>Detected an error without indications.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1464" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1473" /> <source>Operation not supported.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>Yes</source> <translation type="unfinished">Ano</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>No</source> <translation type="unfinished">Ne</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>yes</source> <translation type="unfinished">ano</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>no</source> <translation type="unfinished">ne</translation> </message> @@ -4215,14 +4215,14 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1128" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1126" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="865" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1577" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1500" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1567" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1490" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1040" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="961" /> <source>The device volume is not available.</source> @@ -4235,94 +4235,94 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1539" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1529" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1005" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="977" /> <source><p>The file <b>{0}</b> exists already. Shall it be replaced?</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1546" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1536" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1012" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="984" /> <source>Aborted</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1195" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1193" /> <source>CircuitPython does not support setting the IPv4 parameters of the WiFi access point.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1266" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1262" /> <source>CircuitPython does not support reporting of connected clients.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1675" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1663" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1342" /> <source>Active</source> <translation type="unfinished">Aktivní</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1681" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1351" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1669" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1343" /> <source>Connected</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1352" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1344" /> <source>IPv4 Address</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1353" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1345" /> <source>Netmask</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1354" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1346" /> <source>Gateway</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1355" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1347" /> <source>DNS</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1677" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1356" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1665" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1348" /> <source>MAC-Address</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1357" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1349" /> <source>Chip Type</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1358" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> <source>max. Sockets</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1538" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1528" /> <source>Write Connect Script</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1676" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1664" /> <source>Name</source> <translation type="unfinished">Jméno</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1679" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1667" /> <source>Address Type</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1682" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1670" /> <source>Advertising</source> <translation type="unfinished" /> </message> @@ -20607,8 +20607,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1506" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1490" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1498" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1482" /> <location filename="../MicroPython/Devices/EspDevices.py" line="196" /> <source>Erase Flash</source> <translation type="unfinished" /> @@ -20619,7 +20619,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1591" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1583" /> <location filename="../MicroPython/Devices/EspDevices.py" line="203" /> <source>Flash Additional Firmware</source> <translation type="unfinished" /> @@ -20670,8 +20670,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1590" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1549" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1582" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1541" /> <location filename="../MicroPython/Devices/EspDevices.py" line="363" /> <source>'esptool write_flash' Output</source> <translation type="unfinished" /> @@ -20737,68 +20737,68 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="980" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="978" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1209" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1201" /> <source>Active</source> <translation type="unfinished">Aktivní</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1210" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1202" /> <source>Name</source> <translation type="unfinished">Jméno</translation> </message> <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1203" /> + <source>MAC-Address</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1206" /> + <source>Address Type</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Public</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Random</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> - <source>MAC-Address</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1214" /> - <source>Address Type</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Public</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Random</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> <source>Rx-Buffer</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> <source>{0} Bytes</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> <source>MTU</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1491" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1483" /> <source>Shall the flash of the selected device really be erased?</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1505" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1497" /> <source>'esptool erase_flash' Output</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1550" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1542" /> <source>Flash µPy/CPy Firmware</source> <translation type="unfinished" /> </message> @@ -50416,15 +50416,16 @@ </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Serial Link</source> + <source>Device Communication</source> <translation type="unfinished" /> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Timeout for Serial Link Communication:</source> - <translation type="unfinished" /> - </message> - <message> + <source>Serial Link Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Enter the timout value</source> <translation type="unfinished" /> @@ -50432,11 +50433,22 @@ <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source> s</source> <translation type="unfinished" /> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>WebRepl Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>Device Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Select to synchronize the time after connection is established</source> <translation type="unfinished" /> </message> @@ -50529,8 +50541,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="354" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="337" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="364" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="347" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Press to show the password</source> @@ -50872,8 +50884,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="350" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="333" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="360" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="343" /> <source>Press to hide the password</source> <translation type="unfinished" /> </message> @@ -50887,39 +50899,298 @@ </message> </context> <context> + <name>MicroPythonReplEdit</name> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="322" /> + <source>Clear</source> + <translation type="unfinished">Vyčistit</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="327" /> + <source>Copy</source> + <translation type="unfinished">Kopírovat</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="333" /> + <source>Paste</source> + <translation type="unfinished">Vložit</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="340" /> + <source>Select All</source> + <translation type="unfinished">Vybrat vše</translation> + </message> + </context> + <context> + <name>MicroPythonWebreplConnectionDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="97" /> + <source>Press to hide the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="101" /> + <source>Press to show the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>WebREPL Connection</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished">Host:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished">Port:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished">Heslo:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplDeviceInterface</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="80" /> + <source>WebREPL Password</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="81" /> + <source>Enter the WebREPL password:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="100" /> + <source>WebREPL Login</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="101" /> + <source>The login to the selected device 'webrepl' failed. The given password may be incorrect.</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlAddEditDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>WebREPL URL</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Name:</source> + <translation type="unfinished">Jméno:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a unique name for the WebREPL connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Description:</source> + <translation type="unfinished">Popisek:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a short description to be shown in the selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished">Host:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished">Port:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished">Heslo:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlsConfigDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="133" /> + <source>Remove Selected WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="134" /> + <source>Shall the selected WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="150" /> + <source>Remove All WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="151" /> + <source>Shall all WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Name</source> + <translation type="unfinished">Jméno</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Description</source> + <translation type="unfinished">Popisek</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>URL</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to add a new entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Add...</source> + <translation type="unfinished">Přidat...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to edit the selected entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Edit...</source> + <translation type="unfinished">Editovat...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove the selected entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove</source> + <translation type="unfinished">Odebrat</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove all entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove All</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source><b>Note:</b> The name of an entry must be unique amongst the list.</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>MicroPythonWidget</name> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="247" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="109" /> <source>MicroPython Menu</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="306" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="145" /> <source><h3>The QtSerialPort package is not available.<br/>MicroPython support is deactivated.</h3></source> <translation type="unfinished" /> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="347" /> - <source>%n supported device(s) detected.</source> + <location filename="../MicroPython/MicroPythonWidget.py" line="173" /> + <source>%n supported serial device(s) detected.</source> <translation type="unfinished"> <numerusform /> - <numerusform /> - <numerusform /> </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="361" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="187" /> <source>{0} - {1} ({2})</source> <comment>board name, description, port name</comment> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="381" /> - <source>No supported devices detected.</source> + <location filename="../MicroPython/MicroPythonWidget.py" line="210" /> + <source>No supported serial devices detected.</source> <translation type="unfinished" /> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="385" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="214" /> <source> %n unknown device(s) for manual selection.</source> <translation type="unfinished"> @@ -50929,70 +51200,63 @@ </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="392" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="221" /> <source>Manual Selection</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="427" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="232" /> + <source>WebREPL (manual)</source> + <translation type="unfinished" /> + </message> + <message numerus="yes"> + <location filename="../MicroPython/MicroPythonWidget.py" line="251" /> + <source> +%n WebREPL connection(s) defined.</source> + <translation type="unfinished"> + <numerusform /> + </translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="311" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="282" /> <source>Unknown MicroPython Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="428" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="283" /> <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:{1}"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="440" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="295" /> <source>{0} (0x{1:04x}/0x{2:04x})</source> <comment>description, VId, PId</comment> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="457" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="312" /> <source>Would you like to add them to the list of manually configured devices?</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="592" /> - <source>Clear</source> - <translation type="unfinished">Vyčistit</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="597" /> - <source>Copy</source> - <translation type="unfinished">Kopírovat</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="603" /> - <source>Paste</source> - <translation type="unfinished">Vložit</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="610" /> - <source>Select All</source> - <translation type="unfinished">Vybrat vše</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="636" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="451" /> <source>Press to disconnect the current device</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="641" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> <source>Press to connect the selected device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="673" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="488" /> <source>No device attached</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="674" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="489" /> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -51001,353 +51265,358 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="703" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="518" /> <source>Start REPL</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="704" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="519" /> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1232" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1221" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="716" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="705" /> <source>Serial Device Connect</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="706" /> <source><p>The device at serial port <b>{0}</b> does not respond. It may not have a MicroPython firmware flashed.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1233" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="717" /> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1291" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1282" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1273" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="780" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="771" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="762" /> <source>Run Script</source> <translation type="unfinished">Spustit skript</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1274" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="763" /> <source>There is no editor open. Abort...</source> <translation type="unfinished" /> </message> <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="772" /> + <source>The current editor does not contain a script. Abort...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="781" /> + <source><p>Cannot run script.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="817" /> + <source>Start Chart</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="818" /> + <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="833" /> + <source>µPy Chart</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="850" /> + <source>Unsaved Chart Data</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="851" /> + <source>The chart contains unsaved data.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="899" /> + <source>Start File Manager</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="900" /> + <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="920" /> + <source>µPy Files</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="985" /> + <source>Downloads</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1032" /> + <source>Show Version</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1035" /> + <source>Show Implementation</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038" /> + <source>Show Board Data</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1043" /> + <source>Synchronize Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1046" /> + <source>Show Device Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1048" /> + <source>Show Local Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051" /> + <source>Show Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1055" /> + <source>Show Builtin Modules</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1059" /> + <source>Install Package</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1672" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1669" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1063" /> + <source>Install Packages</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1448" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1073" /> + <source>Compile Python File</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1472" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1463" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1077" /> + <source>Compile Current Editor</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1098" /> + <source>Download Firmware</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1105" /> + <source>Show Documentation</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1108" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1109" /> + <source>Flash UF2 Device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1112" /> + <source>Manage Unknown Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1115" /> + <source>Ignored Serial Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118" /> + <source>Configure</source> + <translation type="unfinished">Konfigurovat</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1127" /> + <source><h3>Device Version Information</h3></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1138" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1134" /> + <source>Device Version Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1139" /> + <source>No version information available.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1163" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1155" /> + <source>unknown</source> + <translation type="unfinished">neznámý</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169" /> + <source> ({0})</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1185" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1176" /> + <source>Device Implementation Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1177" /> + <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186" /> + <source>No device implementation information available.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1225" /> + <source><p>The time of the connected device was synchronized with the local time.</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1247" /> + <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1255" /> + <source><h3>Device Date and Time</h3><p>{0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1271" /> + <source>Device Date and Time</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1283" /> - <source>The current editor does not contain a script. Abort...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1292" /> - <source><p>Cannot run script.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1328" /> - <source>Start Chart</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1329" /> - <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1344" /> - <source>µPy Chart</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1361" /> - <source>Unsaved Chart Data</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1362" /> - <source>The chart contains unsaved data.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1410" /> - <source>Start File Manager</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1411" /> - <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431" /> - <source>µPy Files</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1496" /> - <source>Downloads</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1543" /> - <source>Show Version</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> - <source>Show Implementation</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1549" /> - <source>Show Board Data</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1735" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1554" /> - <source>Synchronize Time</source> + <source>Local Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1284" /> + <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1325" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308" /> + <source>Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1309" /> + <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1326" /> + <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1350" /> + <source>Error handling device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1351" /> + <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1393" /> + <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1419" /> + <source>Python Files (*.py);;All Files (*)</source> + <translation type="unfinished">Python soubory (*.py);;Všechny soubory (*)</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1429" /> + <source>The Python file <b>{0}</b> does not exist. Aborting...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1438" /> + <source>'mpy-cross' Output</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1464" /> + <source>The current editor does not contain a Python file. Aborting...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1556" /> + <source>Add Unknown Devices</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1557" /> - <source>Show Device Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1559" /> - <source>Show Local Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> - <source>Show Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> - <source>Show Builtin Modules</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2144" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1578" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1570" /> - <source>Install Package</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2183" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2180" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1574" /> - <source>Install Packages</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1959" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1584" /> - <source>Compile Python File</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1983" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1974" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1588" /> - <source>Compile Current Editor</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1609" /> - <source>Download Firmware</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> - <source>Show Documentation</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1619" /> - <source>Convert To UF2</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1620" /> - <source>Flash UF2 Device</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1623" /> - <source>Manage Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> - <source>Ignored Serial Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1629" /> - <source>Configure</source> - <translation type="unfinished">Konfigurovat</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> - <source><h3>Device Version Information</h3></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1649" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1645" /> - <source>Device Version Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1650" /> - <source>No version information available.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1666" /> - <source>unknown</source> - <translation type="unfinished">neznámý</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1680" /> - <source> ({0})</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1696" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1687" /> - <source>Device Implementation Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1688" /> - <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1697" /> - <source>No device implementation information available.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1736" /> - <source><p>The time of the connected device was synchronized with the local time.</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1758" /> - <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1766" /> - <source><h3>Device Date and Time</h3><p>{0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> - <source>Device Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1794" /> - <source>Local Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1795" /> - <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1836" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1819" /> - <source>Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1820" /> - <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1837" /> - <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1861" /> - <source>Error handling device</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1862" /> - <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1904" /> - <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1930" /> - <source>Python Files (*.py);;All Files (*)</source> - <translation type="unfinished">Python soubory (*.py);;Všechny soubory (*)</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1940" /> - <source>The Python file <b>{0}</b> does not exist. Aborting...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1949" /> - <source>'mpy-cross' Output</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1975" /> - <source>The current editor does not contain a Python file. Aborting...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2067" /> - <source>Add Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2068" /> <source>Select the devices to be added:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2117" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1606" /> <source>Plus any modules on the filesystem.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2169" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1658" /> <source>Package '{0}' was installed successfully.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2184" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1673" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <source>Press to check for connected devices</source> + <source>Press to detect connected devices and repopulate the device selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> + <source>Press to edit the list of configured WebREPL connections.</source> <translation type="unfinished" /> </message> <message> @@ -51370,6 +51639,30 @@ <source>Press to open a chart window to display data receive from the selected device</source> <translation type="unfinished" /> </message> + <message numerus="yes"> + <source>%n supported device(s) detected.</source> + <translation type="vanished"> + <numerusform /> + <numerusform /> + <numerusform /> + </translation> + </message> + <message> + <source>Clear</source> + <translation type="vanished">Vyčistit</translation> + </message> + <message> + <source>Copy</source> + <translation type="vanished">Kopírovat</translation> + </message> + <message> + <source>Paste</source> + <translation type="vanished">Vložit</translation> + </message> + <message> + <source>Select All</source> + <translation type="vanished">Vybrat vše</translation> + </message> </context> <context> <name>MicrobitDevice</name> @@ -51533,29 +51826,29 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="569" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="571" /> <source>MicroPython Firmware for BBC micro:bit V1</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="601" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="588" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="573" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="603" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="590" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="575" /> <source>DAPLink Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="580" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="582" /> <source>MicroPython Firmware for BBC micro:bit V2</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="584" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="586" /> <source>CircuitPython Firmware for BBC micro:bit V2</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="597" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="599" /> <source>MicroPython Firmware</source> <translation type="unfinished" /> </message> @@ -58770,18 +59063,18 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1815" /> + <location filename="../Preferences/__init__.py" line="1817" /> <source>Export Preferences</source> <translation>Předvolby exportu</translation> </message> <message> + <location filename="../Preferences/__init__.py" line="1846" /> + <location filename="../Preferences/__init__.py" line="1819" /> + <source>Properties File (*.ini);;All Files (*)</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../Preferences/__init__.py" line="1844" /> - <location filename="../Preferences/__init__.py" line="1817" /> - <source>Properties File (*.ini);;All Files (*)</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../Preferences/__init__.py" line="1842" /> <source>Import Preferences</source> <translation>Předvolby importu</translation> </message> @@ -69156,88 +69449,88 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="364" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="365" /> <source>MicroPython Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="368" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="369" /> <source>Pimoroni Pico Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="371" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="372" /> <source>CircuitPython Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="375" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="376" /> <source>CircuitPython Libraries</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="427" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="428" /> <source>Set Country</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="983" /> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="618" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="978" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="617" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1093" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1088" /> <source>Pico Wireless does not support setting the IPv4 parameters of the WiFi access point.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1168" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1161" /> <source>Pico Wireless does not support reporting of connected clients.</source> <translation type="unfinished" /> </message> <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1248" /> + <source>Active</source> + <translation type="unfinished">Aktivní</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1249" /> + <source>Connected</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1252" /> + <source>Status</source> + <translation type="unfinished">Status</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1256" /> + <source>Hostname</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1257" /> + <source>IPv4 Address</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1258" /> + <source>Netmask</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1259" /> - <source>Active</source> - <translation type="unfinished">Aktivní</translation> + <source>Gateway</source> + <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1260" /> - <source>Connected</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1263" /> - <source>Status</source> - <translation type="unfinished">Status</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1267" /> - <source>Hostname</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1268" /> - <source>IPv4 Address</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1269" /> - <source>Netmask</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1270" /> - <source>Gateway</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1271" /> <source>DNS</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1272" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1261" /> <source>MAC-Address</source> <translation type="unfinished" /> </message> @@ -70163,19 +70456,19 @@ <translation type="unfinished" /> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1045" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1046" /> <location filename="../QScintilla/SearchReplaceWidget.py" line="597" /> <location filename="../QScintilla/SearchReplaceWidget.py" line="559" /> <source>'{0}' was not found.</source> <translation>'{0}' nebyl nalezen.</translation> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1198" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1199" /> <source>Replaced {0} occurrences.</source> <translation>Nahrazeno {0} výskytů.</translation> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1204" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1205" /> <source>Nothing replaced because '{0}' was not found.</source> <translation>Nebylo nic nahrazeno, protože '{0}' nebyl nalezen.</translation> </message> @@ -83303,7 +83596,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="315" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> <location filename="../MicroPython/Devices/TeensyDevices.py" line="154" /> <source>Flash MicroPython Firmware</source> <translation type="unfinished" /> @@ -83344,17 +83637,17 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="317" /> <source><p>Teensy 4.0 and Teensy 4.1 are flashed using the 'Teensy Loader' application. Make sure you downloaded the MicroPython or CircuitPython .hex file.</p><p>See <a href="{0}">the PJRC Teensy web site</a> for details.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="338" /> - <source>Start 'Teensy Loader'</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/Devices/TeensyDevices.py" line="339" /> + <source>Start 'Teensy Loader'</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="340" /> <source><p>The 'Teensy Loader' application <b>teensy</b> could not be started. Ensure it is in the application search path or start it manually.</p></source> <translation type="unfinished" /> </message>
--- a/src/eric7/i18n/eric7_de.ts Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/i18n/eric7_de.ts Thu May 04 17:58:52 2023 +0200 @@ -1733,77 +1733,77 @@ <context> <name>BaseDevice</name> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="196" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="199" /> <source>Device Data Not Available</source> <translation>Gerätedaten sind nicht verfügbar</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="197" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="200" /> <source><p>The device data is not available. Try to connect to the device again. Aborting...</p></source> <translation><p>Die Gerätedaten sind nicht verfügbar. Versuche, das Gerät neu zu verbinden. Abbruch...</p></translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="250" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="253" /> <source>Unsupported Device</source> <translation>Nicht unterstütztes Gerät</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="260" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="263" /> <source>REPL is not supported by this device.</source> <translation>REPL wird von diesem Gerät nicht unterstützt.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="279" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="282" /> <source>Plotter is not supported by this device.</source> <translation>Der Plotter wird von diesem Gerät nicht unterstützt.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="298" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="301" /> <source>Running scripts is not supported by this device.</source> <translation>Die Ausführung von Skripten wird von diesem Gerät nicht unterstützt.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="317" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="320" /> <source>File Manager is not supported by this device.</source> <translation>Der Dateimanager wird von diesem Gerät nicht unterstützt.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="372" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="375" /> <source>Select Device Directory</source> <translation>Auswahl des Geräteverzeichnis</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="373" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="376" /> <source>Select the directory for the connected device:</source> <translation>Wähle das Verzeichnis für das verbundene Gerät:</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="519" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="528" /> <source>Detected an error without indications.</source> <translation>Es wurde ein Fehler ohne nähere Angaben entdeckt.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1464" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1473" /> <source>Operation not supported.</source> <translation>Befehl wird nicht unterstützt.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>Yes</source> <translation>Ja</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>No</source> <translation>Nein</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>yes</source> <translation>ja</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>no</source> <translation>nein</translation> </message> @@ -4157,14 +4157,14 @@ <translation>Wähle den Pfad des Gerätes:</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1128" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1126" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="865" /> <source>unknown ({0})</source> <translation>unbekannt ({0})</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1577" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1500" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1567" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1490" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1040" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="961" /> <source>The device volume is not available.</source> @@ -4177,94 +4177,94 @@ <translation>WLAN Berechtigungen schreiben</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1539" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1529" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1005" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="977" /> <source><p>The file <b>{0}</b> exists already. Shall it be replaced?</p></source> <translation><p>Die Datei <b>{0}</b> existiert bereits. Soll sie ersetzt werden?</p></translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1546" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1536" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1012" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="984" /> <source>Aborted</source> <translation>Abgebrochen</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1195" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1193" /> <source>CircuitPython does not support setting the IPv4 parameters of the WiFi access point.</source> <translation>CircuitPython unterstützt nicht die Konfiguration der IPv4 Parameter des WiFi Access Point.</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1266" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1262" /> <source>CircuitPython does not support reporting of connected clients.</source> <translation>CircuitPython unterstützt nicht die Ermittlung verbundener Geräte.</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1675" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1663" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1342" /> <source>Active</source> <translation>Aktiv</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1681" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1351" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1669" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1343" /> <source>Connected</source> <translation>Verbunden</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1352" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1344" /> <source>IPv4 Address</source> <translation>IPv4 Adresse</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1353" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1345" /> <source>Netmask</source> <translation>Netzmaske</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1354" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1346" /> <source>Gateway</source> <translation>Gateway</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1355" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1347" /> <source>DNS</source> <translation>DNS</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1677" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1356" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1665" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1348" /> <source>MAC-Address</source> <translation>MAC-Addresse</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1357" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1349" /> <source>Chip Type</source> <translation>Chiptyp</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1358" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> <source>max. Sockets</source> <translation>max. Sockets</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1538" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1528" /> <source>Write Connect Script</source> <translation>Verbindungsskript schreiben</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1676" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1664" /> <source>Name</source> <translation>Name</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1679" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1667" /> <source>Address Type</source> <translation>Adresstyp</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1682" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1670" /> <source>Advertising</source> <translation>Advertising</translation> </message> @@ -20533,8 +20533,8 @@ <translation>Zeige MicroPython Versionen</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1506" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1490" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1498" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1482" /> <location filename="../MicroPython/Devices/EspDevices.py" line="196" /> <source>Erase Flash</source> <translation>Flash löschen</translation> @@ -20545,7 +20545,7 @@ <translation>MicroPython Firmware flashen</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1591" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1583" /> <location filename="../MicroPython/Devices/EspDevices.py" line="203" /> <source>Flash Additional Firmware</source> <translation>Zusätzliche Firmware flashen</translation> @@ -20596,8 +20596,8 @@ <translation>Ausgabe von 'esptool read_flash'</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1590" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1549" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1582" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1541" /> <location filename="../MicroPython/Devices/EspDevices.py" line="363" /> <source>'esptool write_flash' Output</source> <translation>Ausgabe von 'esptool write_flash'</translation> @@ -20663,68 +20663,68 @@ <translation>Fehler beim Löschen der Berechtigungen: {0}</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="980" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="978" /> <source>unknown ({0})</source> <translation>unbekannt ({0})</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1209" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1201" /> <source>Active</source> <translation>Aktiv</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1210" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1202" /> <source>Name</source> <translation>Name</translation> </message> <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1203" /> + <source>MAC-Address</source> + <translation>MAC-Addresse</translation> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1206" /> + <source>Address Type</source> + <translation>Adresstyp</translation> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Public</source> + <translation>Öffentlich</translation> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Random</source> + <translation>Zufällig</translation> + </message> + <message> <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> - <source>MAC-Address</source> - <translation>MAC-Addresse</translation> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1214" /> - <source>Address Type</source> - <translation>Adresstyp</translation> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Public</source> - <translation>Öffentlich</translation> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Random</source> - <translation>Zufällig</translation> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> <source>Rx-Buffer</source> <translation>Empfangspuffer</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> <source>{0} Bytes</source> <translation>{0} Bytes</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> <source>MTU</source> <translation>MTU</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1491" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1483" /> <source>Shall the flash of the selected device really be erased?</source> <translation>Soll der Flashspeicher des ausgewählten Gerätes wirklich gelöscht werden?</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1505" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1497" /> <source>'esptool erase_flash' Output</source> <translation>Ausgabe von 'esptool erase_flash'</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1550" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1542" /> <source>Flash µPy/CPy Firmware</source> <translation>µPy/CPy Firmware flashen</translation> </message> @@ -50296,15 +50296,16 @@ </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Serial Link</source> - <translation>Serieller Link</translation> + <source>Device Communication</source> + <translation>Gerätekommunikation</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Timeout for Serial Link Communication:</source> - <translation>Timeout für die Serielle Kommunikation:</translation> - </message> - <message> + <source>Serial Link Timeout:</source> + <translation>Timeout für serielle Verbindung:</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Enter the timout value</source> <translation>Gib den Timeout Wert ein</translation> @@ -50312,11 +50313,22 @@ <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source> s</source> <translation> s</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>WebRepl Timeout:</source> + <translation>Timeout für WebREPL:</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>Device Time</source> + <translation>Gerätezeit</translation> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Select to synchronize the time after connection is established</source> <translation>Auswählen, um die Zeit nach Herstellen der Verbindung zu synchronisieren</translation> </message> @@ -50409,8 +50421,8 @@ <translation>Gib das Netzwerkkennwort ein</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="354" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="337" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="364" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="347" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Press to show the password</source> @@ -50752,8 +50764,8 @@ <translation>offen</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="350" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="333" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="360" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="343" /> <source>Press to hide the password</source> <translation>Drücken, um das Kennwort auszublenden</translation> </message> @@ -50767,38 +50779,299 @@ </message> </context> <context> + <name>MicroPythonReplEdit</name> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="322" /> + <source>Clear</source> + <translation>Löschen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="327" /> + <source>Copy</source> + <translation>Kopieren</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="333" /> + <source>Paste</source> + <translation>Einfügen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="340" /> + <source>Select All</source> + <translation>Alles auswählen</translation> + </message> + </context> + <context> + <name>MicroPythonWebreplConnectionDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="97" /> + <source>Press to hide the password.</source> + <translation>Drücken, um das Kennwort auszublenden.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="101" /> + <source>Press to show the password.</source> + <translation>Drücken, um das Kennwort anzuzeigen.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>WebREPL Connection</source> + <translation>WebREPL Verbindung</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Host:</source> + <translation>Rechner:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation>Gib den Rechnernamen oder die IPv4 Adresse des Gerätes ein.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Port:</source> + <translation>Port:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation>Gib den Port der WebREPL ein (leer lassen für den Standardport 8266).</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Password:</source> + <translation>Kennwort:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation>Gib das Kennwort für diese Geräteverbindung ein.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Device Type:</source> + <translation>Gerätetype:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Select the device type</source> + <translation>Wähle den Gerätetyp</translation> + </message> + </context> + <context> + <name>MicroPythonWebreplDeviceInterface</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="80" /> + <source>WebREPL Password</source> + <translation>WebREPL Kennwort</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="81" /> + <source>Enter the WebREPL password:</source> + <translation>Gib das WebREPL Kennwort ein:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="100" /> + <source>WebREPL Login</source> + <translation>WebREPL Anmeldung</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="101" /> + <source>The login to the selected device 'webrepl' failed. The given password may be incorrect.</source> + <translation>Die Anmeldung am ausgewählten Gerät 'webrepl' ist fehlgeschlagen. Das eingegebene Kennwort war möglicherweise falsch.</translation> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlAddEditDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>WebREPL URL</source> + <translation>WebREPL URL</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Name:</source> + <translation>Name:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a unique name for the WebREPL connection.</source> + <translation>Gib einen eindeutigen Namen für die WebREPL Verbindung ein.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Description:</source> + <translation>Beschreibung:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a short description to be shown in the selector.</source> + <translation>Gibe eine Kurzbeschreibung für die Anzeige in der Auswahlliste ein.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Host:</source> + <translation>Rechner:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation>Gib den Rechnernamen oder die IPv4 Adresse des Gerätes ein.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Port:</source> + <translation>Port:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation>Gib den Port der WebREPL ein (leer lassen für den Standardport 8266).</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Password:</source> + <translation>Kennwort:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation>Gib das Kennwort für diese Geräteverbindung ein.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Device Type:</source> + <translation>Gerätetype:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Select the device type</source> + <translation>Wähle den Gerätetyp</translation> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlsConfigDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="133" /> + <source>Remove Selected WebREPL URLs</source> + <translation>Ausgewählte WebREPL URLs löschen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="134" /> + <source>Shall the selected WebREPL URLs really be removed?</source> + <translation>Sollen die ausgewählten WebREPL URLs wirklich gelöscht werden?</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="150" /> + <source>Remove All WebREPL URLs</source> + <translation>Alle WebREPL URLs löschen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="151" /> + <source>Shall all WebREPL URLs really be removed?</source> + <translation>Sollen wirklich alle WebREPL URLs gelöscht werden?</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>WebREPL URLs</source> + <translation>WebREPL URLs</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Name</source> + <translation>Name</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Description</source> + <translation>Beschreibung</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>URL</source> + <translation>URL</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to add a new entry.</source> + <translation>Drücken, um einen neuen Eintrag hinzuzufügen.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Add...</source> + <translation>Hinzufügen...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to edit the selected entry.</source> + <translation>Drücken, um den ausgewählten Eintrag zu bearbeiten.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Edit...</source> + <translation>Bearbeiten...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove the selected entries.</source> + <translation>Drücken, um die ausgwählten Einträge zu löschen.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove</source> + <translation>Entfernen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove all entries.</source> + <translation>Drücken, um alle Einträge zu löschen.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove All</source> + <translation>Alle entfernen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source><b>Note:</b> The name of an entry must be unique amongst the list.</source> + <translation><b>Hinweis:</b> Der Name eines Eintrags muss in der Liste eindeutig sein.</translation> + </message> + </context> + <context> <name>MicroPythonWidget</name> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="247" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="109" /> <source>MicroPython Menu</source> <translation>MicroPython MenÜ</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="306" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="145" /> <source><h3>The QtSerialPort package is not available.<br/>MicroPython support is deactivated.</h3></source> <translation><h3>Das Paket QtSerialPort ist nicht verfügbar.<br/>Die MicroPython Unterstützung wird deaktiviert.</h3></translation> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="347" /> - <source>%n supported device(s) detected.</source> + <location filename="../MicroPython/MicroPythonWidget.py" line="173" /> + <source>%n supported serial device(s) detected.</source> <translation> - <numerusform>%n unterstütztes Gerät gefunden.</numerusform> - <numerusform>%n unterstützte Geräte gefunden.</numerusform> + <numerusform>%n unterstütztes serielles Gerät erkannt.</numerusform> + <numerusform>%n unterstützte serielle Geräte erkannt.</numerusform> </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="361" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="187" /> <source>{0} - {1} ({2})</source> <comment>board name, description, port name</comment> <translation>{0} - {1} ({2})</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="381" /> - <source>No supported devices detected.</source> - <translation>Keine unterstützten Geräte gefunden.</translation> + <location filename="../MicroPython/MicroPythonWidget.py" line="210" /> + <source>No supported serial devices detected.</source> + <translation>Keine unterstützten seriellen Geräte erkannt.</translation> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="385" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="214" /> <source> %n unknown device(s) for manual selection.</source> <translation> @@ -50809,70 +51082,66 @@ </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="392" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="221" /> <source>Manual Selection</source> <translation>Manuelle Auswahl</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="427" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="232" /> + <source>WebREPL (manual)</source> + <translation>WebREPL (manuell)</translation> + </message> + <message numerus="yes"> + <location filename="../MicroPython/MicroPythonWidget.py" line="251" /> + <source> +%n WebREPL connection(s) defined.</source> + <translation> + <numerusform> +%n WebREPL Verbindung definiert.</numerusform> + <numerusform> +%n WebREPL Verbindungen definiert.</numerusform> + </translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="311" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="282" /> <source>Unknown MicroPython Device</source> <translation>Unbekanntes MicroPython Gerät</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="428" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="283" /> <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:{1}"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> <translation><p>Diese ubekannten seriellen Geräte wurden erkannt.</p><ul><li>{0}</li></ul><p>Falls es sich um ein MicroPython Board handelt, melden sie es bitte zusammen mit dem Boardnamen und einer Kurzbeschreibung an <a href="mailto:{1}"> die eric Fehlermitteilungsadresse</a>.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="440" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="295" /> <source>{0} (0x{1:04x}/0x{2:04x})</source> <comment>description, VId, PId</comment> <translation>{0} (0x{1:04x}/0x{2:04x})</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="457" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="312" /> <source>Would you like to add them to the list of manually configured devices?</source> <translation>Sollen sie zur Liste der manuell konfigurierten Geräte hinzugefügt werden?</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="592" /> - <source>Clear</source> - <translation>Löschen</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="597" /> - <source>Copy</source> - <translation>Kopieren</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="603" /> - <source>Paste</source> - <translation>Einfügen</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="610" /> - <source>Select All</source> - <translation>Alles auswählen</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="636" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="451" /> <source>Press to disconnect the current device</source> <translation>Drücken, um die Verbindung zum aktuelle Geräte zu trennen</translation> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="641" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> <source>Press to connect the selected device</source> <translation>Drücken, um eine Verbindung mit den ausgewählten Gerät herzustellen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="673" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="488" /> <source>No device attached</source> <translation>Kein Gerät angeschlossen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="674" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="489" /> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -50885,354 +51154,359 @@ Drücke zum Abschluss den Resetknopf des Gerätes und warte ein paar Sekunden vor einem neuen Versuch.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="703" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="518" /> <source>Start REPL</source> <translation>REPL starten</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="704" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="519" /> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation><p>Die Eingabeaufforderung kann nicht gestartet werden.</p><p>Ursache: {0}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1232" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1221" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="716" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="705" /> <source>Serial Device Connect</source> <translation>Serielle Verbindung</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="706" /> <source><p>The device at serial port <b>{0}</b> does not respond. It may not have a MicroPython firmware flashed.</p></source> <translation><p>Das Gerät am seriellen Port <b>{0}</b> antwortet nicht. Es hat wahrscheinlich keine MicroPython Firmware geflasht.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1233" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="717" /> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation><p>Kann keine Verbindung zum Gerät an der seriellen Schnittstelle <b>{0}</b> herstellen.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1291" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1282" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1273" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="780" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="771" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="762" /> <source>Run Script</source> <translation>Skript ausführen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1274" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="763" /> <source>There is no editor open. Abort...</source> <translation>Es ist kein Editor offen. Abbruch...</translation> </message> <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="772" /> + <source>The current editor does not contain a script. Abort...</source> + <translation>Der aktuelle Editortext enthält kein Skript. Abbruch...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="781" /> + <source><p>Cannot run script.</p><p>Reason: {0}</p></source> + <translation><p>Das Skript kann nicht ausgeführt werden.</p><p>Ursache: {0}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="817" /> + <source>Start Chart</source> + <translation>Chart starten</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="818" /> + <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> + <translation><p>Das Chart kann nicht gestartet werden.</p><p>Ursache: {0}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="833" /> + <source>µPy Chart</source> + <translation>µPy Chart</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="850" /> + <source>Unsaved Chart Data</source> + <translation>Nicht gesicherte Chart Daten</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="851" /> + <source>The chart contains unsaved data.</source> + <translation>Das Chart enthält ungesicherte Daten.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="899" /> + <source>Start File Manager</source> + <translation>Dateimanager starten</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="900" /> + <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> + <translation><p>Der Dateimanager kann nicht gestartet werden.</p><p>Ursache: {0}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="920" /> + <source>µPy Files</source> + <translation>µPy Dateien</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="985" /> + <source>Downloads</source> + <translation>Downloads</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1032" /> + <source>Show Version</source> + <translation>Version anzeigen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1035" /> + <source>Show Implementation</source> + <translation>Implementierung anzeigen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038" /> + <source>Show Board Data</source> + <translation>Board Daten anzeigen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1043" /> + <source>Synchronize Time</source> + <translation>Zeit synchronisieren</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1046" /> + <source>Show Device Time</source> + <translation>Gerätezeit anzeigen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1048" /> + <source>Show Local Time</source> + <translation>Lokale Zeit anzeigen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051" /> + <source>Show Time</source> + <translation>Zeit anzeigen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1055" /> + <source>Show Builtin Modules</source> + <translation>Eingebaute Module anzeigen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1059" /> + <source>Install Package</source> + <translation>Paket installieren</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1672" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1669" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1063" /> + <source>Install Packages</source> + <translation>Pakete installieren</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1448" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1073" /> + <source>Compile Python File</source> + <translation>Python Datei übersetzen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1472" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1463" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1077" /> + <source>Compile Current Editor</source> + <translation>Aktuellen Editor übersetzen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1098" /> + <source>Download Firmware</source> + <translation>Firmware herunterladen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1105" /> + <source>Show Documentation</source> + <translation>Dokumentation anzeigen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1108" /> + <source>Convert To UF2</source> + <translation>Zu UF2 konvertieren</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1109" /> + <source>Flash UF2 Device</source> + <translation>UF2 Gerät flashen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1112" /> + <source>Manage Unknown Devices</source> + <translation>Unbekannte Geräte verwalten</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1115" /> + <source>Ignored Serial Devices</source> + <translation>Ignorierte Serielle Geräte</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118" /> + <source>Configure</source> + <translation>Einstellungen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1127" /> + <source><h3>Device Version Information</h3></source> + <translation><h3>Versionsinformationen des Gerätes</h3></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1138" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1134" /> + <source>Device Version Information</source> + <translation>Versionsinformationen des Gerätes</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1139" /> + <source>No version information available.</source> + <translation>Keine Versionsinformationen verfügbar.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1163" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1155" /> + <source>unknown</source> + <translation>unbekannt</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169" /> + <source> ({0})</source> + <translation> ({0})</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1185" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1176" /> + <source>Device Implementation Information</source> + <translation>Informationen zur Implementierung</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1177" /> + <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> + <translation><h3>Informationen zur Implementierung</h3><p>Dieses Gerät enthält <b>{0} {1}{2}</b>.</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186" /> + <source>No device implementation information available.</source> + <translation>Keine Informationen zur Implementierung verfügbar.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1225" /> + <source><p>The time of the connected device was synchronized with the local time.</p></source> + <translation><p>Die Zeit des angeschlossenen Gerätes wurde mit der lokalen Zeit synchronisiert.</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1247" /> + <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation><h3>Datum und Zeit des Gerätes</h3><table><tr><td><b>Datum</b></td><td>{0}</td></tr><tr><td><b>Zeit</b></td><td>{1}</td></tr></table></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1255" /> + <source><h3>Device Date and Time</h3><p>{0}</p></source> + <translation><h3>Datum und Zeit des Gerätes</h3><p>{0}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1271" /> + <source>Device Date and Time</source> + <translation>Datum und Zeit des Gerätes</translation> + </message> + <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1283" /> - <source>The current editor does not contain a script. Abort...</source> - <translation>Der aktuelle Editortext enthält kein Skript. Abbruch...</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1292" /> - <source><p>Cannot run script.</p><p>Reason: {0}</p></source> - <translation><p>Das Skript kann nicht ausgeführt werden.</p><p>Ursache: {0}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1328" /> - <source>Start Chart</source> - <translation>Chart starten</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1329" /> - <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> - <translation><p>Das Chart kann nicht gestartet werden.</p><p>Ursache: {0}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1344" /> - <source>µPy Chart</source> - <translation>µPy Chart</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1361" /> - <source>Unsaved Chart Data</source> - <translation>Nicht gesicherte Chart Daten</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1362" /> - <source>The chart contains unsaved data.</source> - <translation>Das Chart enthält ungesicherte Daten.</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1410" /> - <source>Start File Manager</source> - <translation>Dateimanager starten</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1411" /> - <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> - <translation><p>Der Dateimanager kann nicht gestartet werden.</p><p>Ursache: {0}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431" /> - <source>µPy Files</source> - <translation>µPy Dateien</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1496" /> - <source>Downloads</source> - <translation>Downloads</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1543" /> - <source>Show Version</source> - <translation>Version anzeigen</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> - <source>Show Implementation</source> - <translation>Implementierung anzeigen</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1549" /> - <source>Show Board Data</source> - <translation>Board Daten anzeigen</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1735" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1554" /> - <source>Synchronize Time</source> - <translation>Zeit synchronisieren</translation> + <source>Local Date and Time</source> + <translation>Lokales Datum und Zeit</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1284" /> + <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation><h3>Lokales Datum und Zeit</h3><table><tr><td><b>Datum</b></td><td>{0}</td></tr><tr><td><b>Zeit</b></td><td>{1}</td></tr></table></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1325" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308" /> + <source>Date and Time</source> + <translation>Datum und Zeit</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1309" /> + <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> + <translation><table><tr><th></th><th>Lokales Datum und Zeit</th><th>Datum und Zeit des Gerätes</th></tr><tr><td><b>Datum</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Zeit</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1326" /> + <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> + <translation><table><tr><th>Lokales Datum und Zeit</th><th>Datum und Zeit des Gerätes</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1350" /> + <source>Error handling device</source> + <translation>Fehler bei Gerätekommunikation</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1351" /> + <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> + <translation><p>Es trat ein Fehler bei der Kommunikation mit dem Gerät auf.</p><p>Methode: {0}</p><p>Nachricht: {1}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1393" /> + <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> + <translation>Der MicroPython Crosscompiler <b>mpy-cross</b> kann nicht gefunden werden. Stelle sicher, dass er im Suchpfad liegt oder konfiguriere ihn auf der MicroPython Konfigurationsseite.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1419" /> + <source>Python Files (*.py);;All Files (*)</source> + <translation>Python-Dateien (*.py);;Alle Dateien (*)</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1429" /> + <source>The Python file <b>{0}</b> does not exist. Aborting...</source> + <translation>Die Python Datei <b>{0}</b> existiert nicht. Abbruch...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1438" /> + <source>'mpy-cross' Output</source> + <translation>'mpy-cross' Ausgabe</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1464" /> + <source>The current editor does not contain a Python file. Aborting...</source> + <translation>Der aktuelle Editortext enthält keine Pythondatei. Abbruch...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1556" /> + <source>Add Unknown Devices</source> + <translation>Unbekannte Geräte hinzufügen</translation> </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1557" /> - <source>Show Device Time</source> - <translation>Gerätezeit anzeigen</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1559" /> - <source>Show Local Time</source> - <translation>Lokale Zeit anzeigen</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> - <source>Show Time</source> - <translation>Zeit anzeigen</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> - <source>Show Builtin Modules</source> - <translation>Eingebaute Module anzeigen</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2144" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1578" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1570" /> - <source>Install Package</source> - <translation>Paket installieren</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2183" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2180" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1574" /> - <source>Install Packages</source> - <translation>Pakete installieren</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1959" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1584" /> - <source>Compile Python File</source> - <translation>Python Datei übersetzen</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1983" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1974" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1588" /> - <source>Compile Current Editor</source> - <translation>Aktuellen Editor übersetzen</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1609" /> - <source>Download Firmware</source> - <translation>Firmware herunterladen</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> - <source>Show Documentation</source> - <translation>Dokumentation anzeigen</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1619" /> - <source>Convert To UF2</source> - <translation>Zu UF2 konvertieren</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1620" /> - <source>Flash UF2 Device</source> - <translation>UF2 Gerät flashen</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1623" /> - <source>Manage Unknown Devices</source> - <translation>Unbekannte Geräte verwalten</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> - <source>Ignored Serial Devices</source> - <translation>Ignorierte Serielle Geräte</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1629" /> - <source>Configure</source> - <translation>Einstellungen</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> - <source><h3>Device Version Information</h3></source> - <translation><h3>Versionsinformationen des Gerätes</h3></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1649" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1645" /> - <source>Device Version Information</source> - <translation>Versionsinformationen des Gerätes</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1650" /> - <source>No version information available.</source> - <translation>Keine Versionsinformationen verfügbar.</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1666" /> - <source>unknown</source> - <translation>unbekannt</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1680" /> - <source> ({0})</source> - <translation> ({0})</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1696" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1687" /> - <source>Device Implementation Information</source> - <translation>Informationen zur Implementierung</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1688" /> - <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> - <translation><h3>Informationen zur Implementierung</h3><p>Dieses Gerät enthält <b>{0} {1}{2}</b>.</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1697" /> - <source>No device implementation information available.</source> - <translation>Keine Informationen zur Implementierung verfügbar.</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1736" /> - <source><p>The time of the connected device was synchronized with the local time.</p></source> - <translation><p>Die Zeit des angeschlossenen Gerätes wurde mit der lokalen Zeit synchronisiert.</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1758" /> - <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation><h3>Datum und Zeit des Gerätes</h3><table><tr><td><b>Datum</b></td><td>{0}</td></tr><tr><td><b>Zeit</b></td><td>{1}</td></tr></table></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1766" /> - <source><h3>Device Date and Time</h3><p>{0}</p></source> - <translation><h3>Datum und Zeit des Gerätes</h3><p>{0}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> - <source>Device Date and Time</source> - <translation>Datum und Zeit des Gerätes</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1794" /> - <source>Local Date and Time</source> - <translation>Lokales Datum und Zeit</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1795" /> - <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation><h3>Lokales Datum und Zeit</h3><table><tr><td><b>Datum</b></td><td>{0}</td></tr><tr><td><b>Zeit</b></td><td>{1}</td></tr></table></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1836" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1819" /> - <source>Date and Time</source> - <translation>Datum und Zeit</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1820" /> - <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> - <translation><table><tr><th></th><th>Lokales Datum und Zeit</th><th>Datum und Zeit des Gerätes</th></tr><tr><td><b>Datum</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Zeit</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1837" /> - <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> - <translation><table><tr><th>Lokales Datum und Zeit</th><th>Datum und Zeit des Gerätes</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1861" /> - <source>Error handling device</source> - <translation>Fehler bei Gerätekommunikation</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1862" /> - <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> - <translation><p>Es trat ein Fehler bei der Kommunikation mit dem Gerät auf.</p><p>Methode: {0}</p><p>Nachricht: {1}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1904" /> - <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> - <translation>Der MicroPython Crosscompiler <b>mpy-cross</b> kann nicht gefunden werden. Stelle sicher, dass er im Suchpfad liegt oder konfiguriere ihn auf der MicroPython Konfigurationsseite.</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1930" /> - <source>Python Files (*.py);;All Files (*)</source> - <translation>Python-Dateien (*.py);;Alle Dateien (*)</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1940" /> - <source>The Python file <b>{0}</b> does not exist. Aborting...</source> - <translation>Die Python Datei <b>{0}</b> existiert nicht. Abbruch...</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1949" /> - <source>'mpy-cross' Output</source> - <translation>'mpy-cross' Ausgabe</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1975" /> - <source>The current editor does not contain a Python file. Aborting...</source> - <translation>Der aktuelle Editortext enthält keine Pythondatei. Abbruch...</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2067" /> - <source>Add Unknown Devices</source> - <translation>Unbekannte Geräte hinzufügen</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2068" /> <source>Select the devices to be added:</source> <translation>Wähle die hinzuzufügenden unbekannten Geräte:</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2117" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1606" /> <source>Plus any modules on the filesystem.</source> <translation>Zusätzlich alle Module im Dateisystem.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2169" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1658" /> <source>Package '{0}' was installed successfully.</source> <translation>Paket '{0}' wurde erfolgreich installiert.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2184" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1673" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation>Gib die zu installierenden Pakete durch Leerzeichen getrennt ein:</translation> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <source>Press to check for connected devices</source> - <translation>Drücken, um nach angeschlossenen Geräten zu suchen</translation> + <source>Press to detect connected devices and repopulate the device selector.</source> + <translation>Drücken, um verbundene Geräte zu erkennen und die Auswahlliste neu aufzubauen.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> + <source>Press to edit the list of configured WebREPL connections.</source> + <translation>Drücken, um die Liste konfigurierter WebREPL Verbindungen zu bearbeiten.</translation> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> @@ -51417,29 +51691,29 @@ <translation>Das Skript ist leer. Abbruch.</translation> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="569" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="571" /> <source>MicroPython Firmware for BBC micro:bit V1</source> <translation>MicroPython Firmware für BBC micro:bit V1</translation> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="601" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="588" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="573" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="603" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="590" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="575" /> <source>DAPLink Firmware</source> <translation>DAPLink Firmware</translation> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="580" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="582" /> <source>MicroPython Firmware for BBC micro:bit V2</source> <translation>MicroPython Firmware für BBC micro:bit V2</translation> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="584" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="586" /> <source>CircuitPython Firmware for BBC micro:bit V2</source> <translation>CircuitPython Firmware für BBC micro:bit V2</translation> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="597" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="599" /> <source>MicroPython Firmware</source> <translation>MicroPython Firmware</translation> </message> @@ -58652,18 +58926,18 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1815" /> + <location filename="../Preferences/__init__.py" line="1817" /> <source>Export Preferences</source> <translation>Einstellungen exportieren</translation> </message> <message> + <location filename="../Preferences/__init__.py" line="1846" /> + <location filename="../Preferences/__init__.py" line="1819" /> + <source>Properties File (*.ini);;All Files (*)</source> + <translation>Properties-Dateien (*.ini);;Alle Dateien (*)</translation> + </message> + <message> <location filename="../Preferences/__init__.py" line="1844" /> - <location filename="../Preferences/__init__.py" line="1817" /> - <source>Properties File (*.ini);;All Files (*)</source> - <translation>Properties-Dateien (*.ini);;Alle Dateien (*)</translation> - </message> - <message> - <location filename="../Preferences/__init__.py" line="1842" /> <source>Import Preferences</source> <translation>Einstellungen importieren</translation> </message> @@ -68829,88 +69103,88 @@ <translation>MicroPython Version</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="364" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="365" /> <source>MicroPython Firmware</source> <translation>MicroPython Firmware</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="368" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="369" /> <source>Pimoroni Pico Firmware</source> <translation>Pimoroni Pico Firmware</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="371" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="372" /> <source>CircuitPython Firmware</source> <translation>CircuitPython Firmware</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="375" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="376" /> <source>CircuitPython Libraries</source> <translation>CircuitPython Bibliotheken</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="427" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="428" /> <source>Set Country</source> <translation>Staat einstellen</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="983" /> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="618" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="978" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="617" /> <source>unknown ({0})</source> <translation>unbekannt ({0})</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1093" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1088" /> <source>Pico Wireless does not support setting the IPv4 parameters of the WiFi access point.</source> <translation>Pico Wireless unterstützt nicht die Konfiguration der IPv4 Parameter des WiFi Access Point.</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1168" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1161" /> <source>Pico Wireless does not support reporting of connected clients.</source> <translation>Pico Wireless unterstützt nicht die Ermittlung verbundener Geräte.</translation> </message> <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1248" /> + <source>Active</source> + <translation>Aktiv</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1249" /> + <source>Connected</source> + <translation>Verbunden</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1252" /> + <source>Status</source> + <translation>Status</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1256" /> + <source>Hostname</source> + <translation>Hostname</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1257" /> + <source>IPv4 Address</source> + <translation>IPv4 Adresse</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1258" /> + <source>Netmask</source> + <translation>Netzmaske</translation> + </message> + <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1259" /> - <source>Active</source> - <translation>Aktiv</translation> + <source>Gateway</source> + <translation>Gateway</translation> </message> <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1260" /> - <source>Connected</source> - <translation>Verbunden</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1263" /> - <source>Status</source> - <translation>Status</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1267" /> - <source>Hostname</source> - <translation>Hostname</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1268" /> - <source>IPv4 Address</source> - <translation>IPv4 Adresse</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1269" /> - <source>Netmask</source> - <translation>Netzmaske</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1270" /> - <source>Gateway</source> - <translation>Gateway</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1271" /> <source>DNS</source> <translation>DNS</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1272" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1261" /> <source>MAC-Address</source> <translation>MAC-Addresse</translation> </message> @@ -69840,19 +70114,19 @@ <translation>Alle ersetzen</translation> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1045" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1046" /> <location filename="../QScintilla/SearchReplaceWidget.py" line="597" /> <location filename="../QScintilla/SearchReplaceWidget.py" line="559" /> <source>'{0}' was not found.</source> <translation>„{0}“ wurde nicht gefunden.</translation> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1198" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1199" /> <source>Replaced {0} occurrences.</source> <translation>{0} Vorkommen ersetzt.</translation> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1204" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1205" /> <source>Nothing replaced because '{0}' was not found.</source> <translation>Es wurde nichts ersetzt, da „{0}“ nicht gefunden wurde.</translation> </message> @@ -83040,7 +83314,7 @@ <translation>MicroPython Flashanweisungen</translation> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="315" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> <location filename="../MicroPython/Devices/TeensyDevices.py" line="154" /> <source>Flash MicroPython Firmware</source> <translation>MicroPython Firmware flashen</translation> @@ -83081,17 +83355,17 @@ <translation>MicroPython Version</translation> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="317" /> <source><p>Teensy 4.0 and Teensy 4.1 are flashed using the 'Teensy Loader' application. Make sure you downloaded the MicroPython or CircuitPython .hex file.</p><p>See <a href="{0}">the PJRC Teensy web site</a> for details.</p></source> <translation><p>Teensy 4.0 und Teensy 4.1 werden mit der 'Teensy Loader' Anwendung geflasht. Stelle sicher, dass die MicroPython .hex Datei geladen ist.</p><p>Siehe <a href="{0}">die PJRC Teensy Webseite</a> für Details.</p></translation> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="338" /> - <source>Start 'Teensy Loader'</source> - <translation>'Teensy Loader' starten</translation> - </message> - <message> <location filename="../MicroPython/Devices/TeensyDevices.py" line="339" /> + <source>Start 'Teensy Loader'</source> + <translation>'Teensy Loader' starten</translation> + </message> + <message> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="340" /> <source><p>The 'Teensy Loader' application <b>teensy</b> could not be started. Ensure it is in the application search path or start it manually.</p></source> <translation><p>Die 'Teensy Loader' Anwendung <b>teensy</b> konnte nicht gestartet werden. Stelle sicher, dass sie sich im Suchpfad befindet oder starte sie manuell.</p></translation> </message>
--- a/src/eric7/i18n/eric7_empty.ts Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/i18n/eric7_empty.ts Thu May 04 17:58:52 2023 +0200 @@ -1716,77 +1716,77 @@ <context> <name>BaseDevice</name> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="196" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="199" /> <source>Device Data Not Available</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="197" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="200" /> <source><p>The device data is not available. Try to connect to the device again. Aborting...</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="250" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="253" /> <source>Unsupported Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="260" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="263" /> <source>REPL is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="279" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="282" /> <source>Plotter is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="298" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="301" /> <source>Running scripts is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="317" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="320" /> <source>File Manager is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="372" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="375" /> <source>Select Device Directory</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="373" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="376" /> <source>Select the directory for the connected device:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="519" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="528" /> <source>Detected an error without indications.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1464" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1473" /> <source>Operation not supported.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>Yes</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>No</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>yes</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>no</source> <translation type="unfinished" /> </message> @@ -4122,14 +4122,14 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1128" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1126" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="865" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1577" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1500" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1567" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1490" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1040" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="961" /> <source>The device volume is not available.</source> @@ -4142,94 +4142,94 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1539" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1529" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1005" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="977" /> <source><p>The file <b>{0}</b> exists already. Shall it be replaced?</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1546" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1536" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1012" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="984" /> <source>Aborted</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1195" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1193" /> <source>CircuitPython does not support setting the IPv4 parameters of the WiFi access point.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1266" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1262" /> <source>CircuitPython does not support reporting of connected clients.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1675" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1663" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1342" /> <source>Active</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1681" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1351" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1669" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1343" /> <source>Connected</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1352" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1344" /> <source>IPv4 Address</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1353" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1345" /> <source>Netmask</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1354" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1346" /> <source>Gateway</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1355" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1347" /> <source>DNS</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1677" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1356" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1665" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1348" /> <source>MAC-Address</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1357" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1349" /> <source>Chip Type</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1358" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> <source>max. Sockets</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1538" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1528" /> <source>Write Connect Script</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1676" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1664" /> <source>Name</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1679" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1667" /> <source>Address Type</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1682" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1670" /> <source>Advertising</source> <translation type="unfinished" /> </message> @@ -20412,8 +20412,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1506" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1490" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1498" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1482" /> <location filename="../MicroPython/Devices/EspDevices.py" line="196" /> <source>Erase Flash</source> <translation type="unfinished" /> @@ -20424,7 +20424,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1591" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1583" /> <location filename="../MicroPython/Devices/EspDevices.py" line="203" /> <source>Flash Additional Firmware</source> <translation type="unfinished" /> @@ -20475,8 +20475,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1590" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1549" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1582" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1541" /> <location filename="../MicroPython/Devices/EspDevices.py" line="363" /> <source>'esptool write_flash' Output</source> <translation type="unfinished" /> @@ -20542,68 +20542,68 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="980" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="978" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1209" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1201" /> <source>Active</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1210" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1202" /> <source>Name</source> <translation type="unfinished" /> </message> <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1203" /> + <source>MAC-Address</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1206" /> + <source>Address Type</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Public</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Random</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> - <source>MAC-Address</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1214" /> - <source>Address Type</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Public</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Random</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> <source>Rx-Buffer</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> <source>{0} Bytes</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> <source>MTU</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1491" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1483" /> <source>Shall the flash of the selected device really be erased?</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1505" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1497" /> <source>'esptool erase_flash' Output</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1550" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1542" /> <source>Flash µPy/CPy Firmware</source> <translation type="unfinished" /> </message> @@ -50058,15 +50058,16 @@ </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Serial Link</source> + <source>Device Communication</source> <translation type="unfinished" /> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Timeout for Serial Link Communication:</source> - <translation type="unfinished" /> - </message> - <message> + <source>Serial Link Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Enter the timout value</source> <translation type="unfinished" /> @@ -50074,11 +50075,22 @@ <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source> s</source> <translation type="unfinished" /> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>WebRepl Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>Device Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Select to synchronize the time after connection is established</source> <translation type="unfinished" /> </message> @@ -50171,8 +50183,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="354" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="337" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="364" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="347" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Press to show the password</source> @@ -50514,8 +50526,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="350" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="333" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="360" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="343" /> <source>Press to hide the password</source> <translation type="unfinished" /> </message> @@ -50529,37 +50541,298 @@ </message> </context> <context> + <name>MicroPythonReplEdit</name> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="322" /> + <source>Clear</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="327" /> + <source>Copy</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="333" /> + <source>Paste</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="340" /> + <source>Select All</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplConnectionDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="97" /> + <source>Press to hide the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="101" /> + <source>Press to show the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>WebREPL Connection</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplDeviceInterface</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="80" /> + <source>WebREPL Password</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="81" /> + <source>Enter the WebREPL password:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="100" /> + <source>WebREPL Login</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="101" /> + <source>The login to the selected device 'webrepl' failed. The given password may be incorrect.</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlAddEditDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>WebREPL URL</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Name:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a unique name for the WebREPL connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Description:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a short description to be shown in the selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlsConfigDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="133" /> + <source>Remove Selected WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="134" /> + <source>Shall the selected WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="150" /> + <source>Remove All WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="151" /> + <source>Shall all WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Name</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Description</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>URL</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to add a new entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Add...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to edit the selected entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Edit...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove the selected entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove all entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove All</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source><b>Note:</b> The name of an entry must be unique amongst the list.</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>MicroPythonWidget</name> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="247" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="109" /> <source>MicroPython Menu</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="306" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="145" /> <source><h3>The QtSerialPort package is not available.<br/>MicroPython support is deactivated.</h3></source> <translation type="unfinished" /> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="347" /> - <source>%n supported device(s) detected.</source> + <location filename="../MicroPython/MicroPythonWidget.py" line="173" /> + <source>%n supported serial device(s) detected.</source> <translation type="unfinished"> <numerusform /> </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="361" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="187" /> <source>{0} - {1} ({2})</source> <comment>board name, description, port name</comment> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="381" /> - <source>No supported devices detected.</source> + <location filename="../MicroPython/MicroPythonWidget.py" line="210" /> + <source>No supported serial devices detected.</source> <translation type="unfinished" /> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="385" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="214" /> <source> %n unknown device(s) for manual selection.</source> <translation type="unfinished"> @@ -50567,70 +50840,63 @@ </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="392" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="221" /> <source>Manual Selection</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="427" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="232" /> + <source>WebREPL (manual)</source> + <translation type="unfinished" /> + </message> + <message numerus="yes"> + <location filename="../MicroPython/MicroPythonWidget.py" line="251" /> + <source> +%n WebREPL connection(s) defined.</source> + <translation type="unfinished"> + <numerusform /> + </translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="311" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="282" /> <source>Unknown MicroPython Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="428" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="283" /> <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:{1}"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="440" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="295" /> <source>{0} (0x{1:04x}/0x{2:04x})</source> <comment>description, VId, PId</comment> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="457" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="312" /> <source>Would you like to add them to the list of manually configured devices?</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="592" /> - <source>Clear</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="597" /> - <source>Copy</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="603" /> - <source>Paste</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="610" /> - <source>Select All</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="636" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="451" /> <source>Press to disconnect the current device</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="641" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> <source>Press to connect the selected device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="673" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="488" /> <source>No device attached</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="674" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="489" /> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -50639,353 +50905,358 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="703" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="518" /> <source>Start REPL</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="704" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="519" /> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1232" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1221" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="716" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="705" /> <source>Serial Device Connect</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="706" /> <source><p>The device at serial port <b>{0}</b> does not respond. It may not have a MicroPython firmware flashed.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1233" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="717" /> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1291" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1282" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1273" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="780" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="771" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="762" /> <source>Run Script</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1274" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="763" /> <source>There is no editor open. Abort...</source> <translation type="unfinished" /> </message> <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="772" /> + <source>The current editor does not contain a script. Abort...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="781" /> + <source><p>Cannot run script.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="817" /> + <source>Start Chart</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="818" /> + <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="833" /> + <source>µPy Chart</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="850" /> + <source>Unsaved Chart Data</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="851" /> + <source>The chart contains unsaved data.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="899" /> + <source>Start File Manager</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="900" /> + <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="920" /> + <source>µPy Files</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="985" /> + <source>Downloads</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1032" /> + <source>Show Version</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1035" /> + <source>Show Implementation</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038" /> + <source>Show Board Data</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1043" /> + <source>Synchronize Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1046" /> + <source>Show Device Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1048" /> + <source>Show Local Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051" /> + <source>Show Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1055" /> + <source>Show Builtin Modules</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1059" /> + <source>Install Package</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1672" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1669" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1063" /> + <source>Install Packages</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1448" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1073" /> + <source>Compile Python File</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1472" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1463" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1077" /> + <source>Compile Current Editor</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1098" /> + <source>Download Firmware</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1105" /> + <source>Show Documentation</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1108" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1109" /> + <source>Flash UF2 Device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1112" /> + <source>Manage Unknown Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1115" /> + <source>Ignored Serial Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118" /> + <source>Configure</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1127" /> + <source><h3>Device Version Information</h3></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1138" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1134" /> + <source>Device Version Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1139" /> + <source>No version information available.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1163" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1155" /> + <source>unknown</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169" /> + <source> ({0})</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1185" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1176" /> + <source>Device Implementation Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1177" /> + <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186" /> + <source>No device implementation information available.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1225" /> + <source><p>The time of the connected device was synchronized with the local time.</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1247" /> + <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1255" /> + <source><h3>Device Date and Time</h3><p>{0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1271" /> + <source>Device Date and Time</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1283" /> - <source>The current editor does not contain a script. Abort...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1292" /> - <source><p>Cannot run script.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1328" /> - <source>Start Chart</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1329" /> - <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1344" /> - <source>µPy Chart</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1361" /> - <source>Unsaved Chart Data</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1362" /> - <source>The chart contains unsaved data.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1410" /> - <source>Start File Manager</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1411" /> - <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431" /> - <source>µPy Files</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1496" /> - <source>Downloads</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1543" /> - <source>Show Version</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> - <source>Show Implementation</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1549" /> - <source>Show Board Data</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1735" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1554" /> - <source>Synchronize Time</source> + <source>Local Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1284" /> + <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1325" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308" /> + <source>Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1309" /> + <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1326" /> + <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1350" /> + <source>Error handling device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1351" /> + <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1393" /> + <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1419" /> + <source>Python Files (*.py);;All Files (*)</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1429" /> + <source>The Python file <b>{0}</b> does not exist. Aborting...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1438" /> + <source>'mpy-cross' Output</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1464" /> + <source>The current editor does not contain a Python file. Aborting...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1556" /> + <source>Add Unknown Devices</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1557" /> - <source>Show Device Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1559" /> - <source>Show Local Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> - <source>Show Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> - <source>Show Builtin Modules</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2144" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1578" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1570" /> - <source>Install Package</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2183" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2180" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1574" /> - <source>Install Packages</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1959" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1584" /> - <source>Compile Python File</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1983" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1974" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1588" /> - <source>Compile Current Editor</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1609" /> - <source>Download Firmware</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> - <source>Show Documentation</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1619" /> - <source>Convert To UF2</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1620" /> - <source>Flash UF2 Device</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1623" /> - <source>Manage Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> - <source>Ignored Serial Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1629" /> - <source>Configure</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> - <source><h3>Device Version Information</h3></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1649" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1645" /> - <source>Device Version Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1650" /> - <source>No version information available.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1666" /> - <source>unknown</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1680" /> - <source> ({0})</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1696" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1687" /> - <source>Device Implementation Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1688" /> - <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1697" /> - <source>No device implementation information available.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1736" /> - <source><p>The time of the connected device was synchronized with the local time.</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1758" /> - <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1766" /> - <source><h3>Device Date and Time</h3><p>{0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> - <source>Device Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1794" /> - <source>Local Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1795" /> - <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1836" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1819" /> - <source>Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1820" /> - <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1837" /> - <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1861" /> - <source>Error handling device</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1862" /> - <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1904" /> - <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1930" /> - <source>Python Files (*.py);;All Files (*)</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1940" /> - <source>The Python file <b>{0}</b> does not exist. Aborting...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1949" /> - <source>'mpy-cross' Output</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1975" /> - <source>The current editor does not contain a Python file. Aborting...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2067" /> - <source>Add Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2068" /> <source>Select the devices to be added:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2117" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1606" /> <source>Plus any modules on the filesystem.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2169" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1658" /> <source>Package '{0}' was installed successfully.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2184" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1673" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <source>Press to check for connected devices</source> + <source>Press to detect connected devices and repopulate the device selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> + <source>Press to edit the list of configured WebREPL connections.</source> <translation type="unfinished" /> </message> <message> @@ -51171,29 +51442,29 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="569" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="571" /> <source>MicroPython Firmware for BBC micro:bit V1</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="601" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="588" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="573" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="603" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="590" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="575" /> <source>DAPLink Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="580" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="582" /> <source>MicroPython Firmware for BBC micro:bit V2</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="584" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="586" /> <source>CircuitPython Firmware for BBC micro:bit V2</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="597" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="599" /> <source>MicroPython Firmware</source> <translation type="unfinished" /> </message> @@ -58387,18 +58658,18 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1815" /> + <location filename="../Preferences/__init__.py" line="1817" /> <source>Export Preferences</source> <translation type="unfinished" /> </message> <message> + <location filename="../Preferences/__init__.py" line="1846" /> + <location filename="../Preferences/__init__.py" line="1819" /> + <source>Properties File (*.ini);;All Files (*)</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../Preferences/__init__.py" line="1844" /> - <location filename="../Preferences/__init__.py" line="1817" /> - <source>Properties File (*.ini);;All Files (*)</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../Preferences/__init__.py" line="1842" /> <source>Import Preferences</source> <translation type="unfinished" /> </message> @@ -68419,88 +68690,88 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="364" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="365" /> <source>MicroPython Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="368" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="369" /> <source>Pimoroni Pico Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="371" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="372" /> <source>CircuitPython Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="375" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="376" /> <source>CircuitPython Libraries</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="427" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="428" /> <source>Set Country</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="983" /> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="618" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="978" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="617" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1093" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1088" /> <source>Pico Wireless does not support setting the IPv4 parameters of the WiFi access point.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1168" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1161" /> <source>Pico Wireless does not support reporting of connected clients.</source> <translation type="unfinished" /> </message> <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1248" /> + <source>Active</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1249" /> + <source>Connected</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1252" /> + <source>Status</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1256" /> + <source>Hostname</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1257" /> + <source>IPv4 Address</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1258" /> + <source>Netmask</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1259" /> - <source>Active</source> + <source>Gateway</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1260" /> - <source>Connected</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1263" /> - <source>Status</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1267" /> - <source>Hostname</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1268" /> - <source>IPv4 Address</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1269" /> - <source>Netmask</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1270" /> - <source>Gateway</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1271" /> <source>DNS</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1272" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1261" /> <source>MAC-Address</source> <translation type="unfinished" /> </message> @@ -69395,19 +69666,19 @@ <translation type="unfinished" /> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1045" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1046" /> <location filename="../QScintilla/SearchReplaceWidget.py" line="597" /> <location filename="../QScintilla/SearchReplaceWidget.py" line="559" /> <source>'{0}' was not found.</source> <translation type="unfinished" /> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1198" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1199" /> <source>Replaced {0} occurrences.</source> <translation type="unfinished" /> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1204" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1205" /> <source>Nothing replaced because '{0}' was not found.</source> <translation type="unfinished" /> </message> @@ -82487,7 +82758,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="315" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> <location filename="../MicroPython/Devices/TeensyDevices.py" line="154" /> <source>Flash MicroPython Firmware</source> <translation type="unfinished" /> @@ -82528,17 +82799,17 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="317" /> <source><p>Teensy 4.0 and Teensy 4.1 are flashed using the 'Teensy Loader' application. Make sure you downloaded the MicroPython or CircuitPython .hex file.</p><p>See <a href="{0}">the PJRC Teensy web site</a> for details.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="338" /> - <source>Start 'Teensy Loader'</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/Devices/TeensyDevices.py" line="339" /> + <source>Start 'Teensy Loader'</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="340" /> <source><p>The 'Teensy Loader' application <b>teensy</b> could not be started. Ensure it is in the application search path or start it manually.</p></source> <translation type="unfinished" /> </message>
--- a/src/eric7/i18n/eric7_en.ts Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/i18n/eric7_en.ts Thu May 04 17:58:52 2023 +0200 @@ -1716,77 +1716,77 @@ <context> <name>BaseDevice</name> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="196" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="199" /> <source>Device Data Not Available</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="197" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="200" /> <source><p>The device data is not available. Try to connect to the device again. Aborting...</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="250" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="253" /> <source>Unsupported Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="260" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="263" /> <source>REPL is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="279" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="282" /> <source>Plotter is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="298" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="301" /> <source>Running scripts is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="317" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="320" /> <source>File Manager is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="372" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="375" /> <source>Select Device Directory</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="373" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="376" /> <source>Select the directory for the connected device:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="519" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="528" /> <source>Detected an error without indications.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1464" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1473" /> <source>Operation not supported.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>Yes</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>No</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>yes</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>no</source> <translation type="unfinished" /> </message> @@ -4123,14 +4123,14 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1128" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1126" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="865" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1577" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1500" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1567" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1490" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1040" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="961" /> <source>The device volume is not available.</source> @@ -4143,94 +4143,94 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1539" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1529" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1005" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="977" /> <source><p>The file <b>{0}</b> exists already. Shall it be replaced?</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1546" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1536" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1012" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="984" /> <source>Aborted</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1195" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1193" /> <source>CircuitPython does not support setting the IPv4 parameters of the WiFi access point.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1266" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1262" /> <source>CircuitPython does not support reporting of connected clients.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1675" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1663" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1342" /> <source>Active</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1681" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1351" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1669" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1343" /> <source>Connected</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1352" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1344" /> <source>IPv4 Address</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1353" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1345" /> <source>Netmask</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1354" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1346" /> <source>Gateway</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1355" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1347" /> <source>DNS</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1677" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1356" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1665" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1348" /> <source>MAC-Address</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1357" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1349" /> <source>Chip Type</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1358" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> <source>max. Sockets</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1538" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1528" /> <source>Write Connect Script</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1676" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1664" /> <source>Name</source> <translation>Name</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1679" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1667" /> <source>Address Type</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1682" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1670" /> <source>Advertising</source> <translation type="unfinished" /> </message> @@ -20428,8 +20428,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1506" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1490" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1498" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1482" /> <location filename="../MicroPython/Devices/EspDevices.py" line="196" /> <source>Erase Flash</source> <translation type="unfinished" /> @@ -20440,7 +20440,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1591" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1583" /> <location filename="../MicroPython/Devices/EspDevices.py" line="203" /> <source>Flash Additional Firmware</source> <translation type="unfinished" /> @@ -20491,8 +20491,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1590" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1549" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1582" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1541" /> <location filename="../MicroPython/Devices/EspDevices.py" line="363" /> <source>'esptool write_flash' Output</source> <translation type="unfinished" /> @@ -20558,68 +20558,68 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="980" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="978" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1209" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1201" /> <source>Active</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1210" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1202" /> <source>Name</source> <translation>Name</translation> </message> <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1203" /> + <source>MAC-Address</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1206" /> + <source>Address Type</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Public</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Random</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> - <source>MAC-Address</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1214" /> - <source>Address Type</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Public</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Random</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> <source>Rx-Buffer</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> <source>{0} Bytes</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> <source>MTU</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1491" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1483" /> <source>Shall the flash of the selected device really be erased?</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1505" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1497" /> <source>'esptool erase_flash' Output</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1550" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1542" /> <source>Flash µPy/CPy Firmware</source> <translation type="unfinished" /> </message> @@ -50100,15 +50100,16 @@ </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Serial Link</source> + <source>Device Communication</source> <translation type="unfinished" /> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Timeout for Serial Link Communication:</source> - <translation type="unfinished" /> - </message> - <message> + <source>Serial Link Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Enter the timout value</source> <translation type="unfinished" /> @@ -50116,11 +50117,22 @@ <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source> s</source> <translation type="unfinished" /> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>WebRepl Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>Device Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Select to synchronize the time after connection is established</source> <translation type="unfinished" /> </message> @@ -50213,8 +50225,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="354" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="337" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="364" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="347" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Press to show the password</source> @@ -50556,8 +50568,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="350" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="333" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="360" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="343" /> <source>Press to hide the password</source> <translation type="unfinished" /> </message> @@ -50571,38 +50583,299 @@ </message> </context> <context> + <name>MicroPythonReplEdit</name> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="322" /> + <source>Clear</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="327" /> + <source>Copy</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="333" /> + <source>Paste</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="340" /> + <source>Select All</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplConnectionDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="97" /> + <source>Press to hide the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="101" /> + <source>Press to show the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>WebREPL Connection</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplDeviceInterface</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="80" /> + <source>WebREPL Password</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="81" /> + <source>Enter the WebREPL password:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="100" /> + <source>WebREPL Login</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="101" /> + <source>The login to the selected device 'webrepl' failed. The given password may be incorrect.</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlAddEditDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>WebREPL URL</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Name:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a unique name for the WebREPL connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Description:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a short description to be shown in the selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlsConfigDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="133" /> + <source>Remove Selected WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="134" /> + <source>Shall the selected WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="150" /> + <source>Remove All WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="151" /> + <source>Shall all WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Name</source> + <translation type="unfinished">Name</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Description</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>URL</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to add a new entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Add...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to edit the selected entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Edit...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove the selected entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove all entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove All</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source><b>Note:</b> The name of an entry must be unique amongst the list.</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>MicroPythonWidget</name> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="247" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="109" /> <source>MicroPython Menu</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="306" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="145" /> <source><h3>The QtSerialPort package is not available.<br/>MicroPython support is deactivated.</h3></source> <translation type="unfinished" /> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="347" /> - <source>%n supported device(s) detected.</source> + <location filename="../MicroPython/MicroPythonWidget.py" line="173" /> + <source>%n supported serial device(s) detected.</source> <translation> - <numerusform>%n supported device detected.</numerusform> - <numerusform>%n supported devices detected.</numerusform> + <numerusform>%n supported serial device detected.</numerusform> + <numerusform>%n supported serial devices detected.</numerusform> </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="361" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="187" /> <source>{0} - {1} ({2})</source> <comment>board name, description, port name</comment> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="381" /> - <source>No supported devices detected.</source> + <location filename="../MicroPython/MicroPythonWidget.py" line="210" /> + <source>No supported serial devices detected.</source> <translation type="unfinished" /> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="385" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="214" /> <source> %n unknown device(s) for manual selection.</source> <translation> @@ -50613,70 +50886,66 @@ </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="392" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="221" /> <source>Manual Selection</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="427" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="232" /> + <source>WebREPL (manual)</source> + <translation type="unfinished" /> + </message> + <message numerus="yes"> + <location filename="../MicroPython/MicroPythonWidget.py" line="251" /> + <source> +%n WebREPL connection(s) defined.</source> + <translation> + <numerusform> +%n WebREPL connection defined.</numerusform> + <numerusform> +%n WebREPL connections defined.</numerusform> + </translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="311" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="282" /> <source>Unknown MicroPython Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="428" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="283" /> <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:{1}"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="440" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="295" /> <source>{0} (0x{1:04x}/0x{2:04x})</source> <comment>description, VId, PId</comment> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="457" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="312" /> <source>Would you like to add them to the list of manually configured devices?</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="592" /> - <source>Clear</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="597" /> - <source>Copy</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="603" /> - <source>Paste</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="610" /> - <source>Select All</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="636" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="451" /> <source>Press to disconnect the current device</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="641" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> <source>Press to connect the selected device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="673" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="488" /> <source>No device attached</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="674" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="489" /> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -50685,353 +50954,358 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="703" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="518" /> <source>Start REPL</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="704" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="519" /> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1232" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1221" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="716" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="705" /> <source>Serial Device Connect</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="706" /> <source><p>The device at serial port <b>{0}</b> does not respond. It may not have a MicroPython firmware flashed.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1233" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="717" /> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1291" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1282" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1273" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="780" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="771" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="762" /> <source>Run Script</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1274" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="763" /> <source>There is no editor open. Abort...</source> <translation type="unfinished" /> </message> <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="772" /> + <source>The current editor does not contain a script. Abort...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="781" /> + <source><p>Cannot run script.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="817" /> + <source>Start Chart</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="818" /> + <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="833" /> + <source>µPy Chart</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="850" /> + <source>Unsaved Chart Data</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="851" /> + <source>The chart contains unsaved data.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="899" /> + <source>Start File Manager</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="900" /> + <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="920" /> + <source>µPy Files</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="985" /> + <source>Downloads</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1032" /> + <source>Show Version</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1035" /> + <source>Show Implementation</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038" /> + <source>Show Board Data</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1043" /> + <source>Synchronize Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1046" /> + <source>Show Device Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1048" /> + <source>Show Local Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051" /> + <source>Show Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1055" /> + <source>Show Builtin Modules</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1059" /> + <source>Install Package</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1672" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1669" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1063" /> + <source>Install Packages</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1448" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1073" /> + <source>Compile Python File</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1472" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1463" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1077" /> + <source>Compile Current Editor</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1098" /> + <source>Download Firmware</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1105" /> + <source>Show Documentation</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1108" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1109" /> + <source>Flash UF2 Device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1112" /> + <source>Manage Unknown Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1115" /> + <source>Ignored Serial Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118" /> + <source>Configure</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1127" /> + <source><h3>Device Version Information</h3></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1138" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1134" /> + <source>Device Version Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1139" /> + <source>No version information available.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1163" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1155" /> + <source>unknown</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169" /> + <source> ({0})</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1185" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1176" /> + <source>Device Implementation Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1177" /> + <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186" /> + <source>No device implementation information available.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1225" /> + <source><p>The time of the connected device was synchronized with the local time.</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1247" /> + <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1255" /> + <source><h3>Device Date and Time</h3><p>{0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1271" /> + <source>Device Date and Time</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1283" /> - <source>The current editor does not contain a script. Abort...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1292" /> - <source><p>Cannot run script.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1328" /> - <source>Start Chart</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1329" /> - <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1344" /> - <source>µPy Chart</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1361" /> - <source>Unsaved Chart Data</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1362" /> - <source>The chart contains unsaved data.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1410" /> - <source>Start File Manager</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1411" /> - <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431" /> - <source>µPy Files</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1496" /> - <source>Downloads</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1543" /> - <source>Show Version</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> - <source>Show Implementation</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1549" /> - <source>Show Board Data</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1735" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1554" /> - <source>Synchronize Time</source> + <source>Local Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1284" /> + <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1325" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308" /> + <source>Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1309" /> + <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1326" /> + <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1350" /> + <source>Error handling device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1351" /> + <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1393" /> + <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1419" /> + <source>Python Files (*.py);;All Files (*)</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1429" /> + <source>The Python file <b>{0}</b> does not exist. Aborting...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1438" /> + <source>'mpy-cross' Output</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1464" /> + <source>The current editor does not contain a Python file. Aborting...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1556" /> + <source>Add Unknown Devices</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1557" /> - <source>Show Device Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1559" /> - <source>Show Local Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> - <source>Show Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> - <source>Show Builtin Modules</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2144" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1578" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1570" /> - <source>Install Package</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2183" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2180" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1574" /> - <source>Install Packages</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1959" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1584" /> - <source>Compile Python File</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1983" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1974" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1588" /> - <source>Compile Current Editor</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1609" /> - <source>Download Firmware</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> - <source>Show Documentation</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1619" /> - <source>Convert To UF2</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1620" /> - <source>Flash UF2 Device</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1623" /> - <source>Manage Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> - <source>Ignored Serial Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1629" /> - <source>Configure</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> - <source><h3>Device Version Information</h3></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1649" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1645" /> - <source>Device Version Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1650" /> - <source>No version information available.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1666" /> - <source>unknown</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1680" /> - <source> ({0})</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1696" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1687" /> - <source>Device Implementation Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1688" /> - <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1697" /> - <source>No device implementation information available.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1736" /> - <source><p>The time of the connected device was synchronized with the local time.</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1758" /> - <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1766" /> - <source><h3>Device Date and Time</h3><p>{0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> - <source>Device Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1794" /> - <source>Local Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1795" /> - <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1836" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1819" /> - <source>Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1820" /> - <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1837" /> - <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1861" /> - <source>Error handling device</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1862" /> - <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1904" /> - <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1930" /> - <source>Python Files (*.py);;All Files (*)</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1940" /> - <source>The Python file <b>{0}</b> does not exist. Aborting...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1949" /> - <source>'mpy-cross' Output</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1975" /> - <source>The current editor does not contain a Python file. Aborting...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2067" /> - <source>Add Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2068" /> <source>Select the devices to be added:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2117" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1606" /> <source>Plus any modules on the filesystem.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2169" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1658" /> <source>Package '{0}' was installed successfully.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2184" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1673" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <source>Press to check for connected devices</source> + <source>Press to detect connected devices and repopulate the device selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> + <source>Press to edit the list of configured WebREPL connections.</source> <translation type="unfinished" /> </message> <message> @@ -51217,29 +51491,29 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="569" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="571" /> <source>MicroPython Firmware for BBC micro:bit V1</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="601" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="588" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="573" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="603" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="590" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="575" /> <source>DAPLink Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="580" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="582" /> <source>MicroPython Firmware for BBC micro:bit V2</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="584" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="586" /> <source>CircuitPython Firmware for BBC micro:bit V2</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="597" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="599" /> <source>MicroPython Firmware</source> <translation type="unfinished" /> </message> @@ -58436,18 +58710,18 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1815" /> + <location filename="../Preferences/__init__.py" line="1817" /> <source>Export Preferences</source> <translation type="unfinished" /> </message> <message> + <location filename="../Preferences/__init__.py" line="1846" /> + <location filename="../Preferences/__init__.py" line="1819" /> + <source>Properties File (*.ini);;All Files (*)</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../Preferences/__init__.py" line="1844" /> - <location filename="../Preferences/__init__.py" line="1817" /> - <source>Properties File (*.ini);;All Files (*)</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../Preferences/__init__.py" line="1842" /> <source>Import Preferences</source> <translation type="unfinished" /> </message> @@ -68470,88 +68744,88 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="364" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="365" /> <source>MicroPython Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="368" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="369" /> <source>Pimoroni Pico Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="371" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="372" /> <source>CircuitPython Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="375" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="376" /> <source>CircuitPython Libraries</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="427" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="428" /> <source>Set Country</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="983" /> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="618" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="978" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="617" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1093" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1088" /> <source>Pico Wireless does not support setting the IPv4 parameters of the WiFi access point.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1168" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1161" /> <source>Pico Wireless does not support reporting of connected clients.</source> <translation type="unfinished" /> </message> <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1248" /> + <source>Active</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1249" /> + <source>Connected</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1252" /> + <source>Status</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1256" /> + <source>Hostname</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1257" /> + <source>IPv4 Address</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1258" /> + <source>Netmask</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1259" /> - <source>Active</source> + <source>Gateway</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1260" /> - <source>Connected</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1263" /> - <source>Status</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1267" /> - <source>Hostname</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1268" /> - <source>IPv4 Address</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1269" /> - <source>Netmask</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1270" /> - <source>Gateway</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1271" /> <source>DNS</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1272" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1261" /> <source>MAC-Address</source> <translation type="unfinished" /> </message> @@ -69446,19 +69720,19 @@ <translation type="unfinished" /> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1045" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1046" /> <location filename="../QScintilla/SearchReplaceWidget.py" line="597" /> <location filename="../QScintilla/SearchReplaceWidget.py" line="559" /> <source>'{0}' was not found.</source> <translation type="unfinished" /> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1198" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1199" /> <source>Replaced {0} occurrences.</source> <translation type="unfinished" /> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1204" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1205" /> <source>Nothing replaced because '{0}' was not found.</source> <translation type="unfinished" /> </message> @@ -82539,7 +82813,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="315" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> <location filename="../MicroPython/Devices/TeensyDevices.py" line="154" /> <source>Flash MicroPython Firmware</source> <translation type="unfinished" /> @@ -82580,17 +82854,17 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="317" /> <source><p>Teensy 4.0 and Teensy 4.1 are flashed using the 'Teensy Loader' application. Make sure you downloaded the MicroPython or CircuitPython .hex file.</p><p>See <a href="{0}">the PJRC Teensy web site</a> for details.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="338" /> - <source>Start 'Teensy Loader'</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/Devices/TeensyDevices.py" line="339" /> + <source>Start 'Teensy Loader'</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="340" /> <source><p>The 'Teensy Loader' application <b>teensy</b> could not be started. Ensure it is in the application search path or start it manually.</p></source> <translation type="unfinished" /> </message>
--- a/src/eric7/i18n/eric7_es.ts Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/i18n/eric7_es.ts Thu May 04 17:58:52 2023 +0200 @@ -1730,77 +1730,77 @@ <context> <name>BaseDevice</name> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="196" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="199" /> <source>Device Data Not Available</source> <translation>Datos del Dispositivo No Disponibles</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="197" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="200" /> <source><p>The device data is not available. Try to connect to the device again. Aborting...</p></source> <translation><p>Los datos del dispositivo no están dispoibles. Trate de conectar el dispositivo de nuevo. Abortando...</p></translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="250" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="253" /> <source>Unsupported Device</source> <translation>Dispositivo no soportado</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="260" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="263" /> <source>REPL is not supported by this device.</source> <translation>REPL no soportado por este dispositivo.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="279" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="282" /> <source>Plotter is not supported by this device.</source> <translation>Plotter no soportado por este dispositivo.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="298" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="301" /> <source>Running scripts is not supported by this device.</source> <translation>La ejecución de scripts no está soportada por este dispositivo.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="317" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="320" /> <source>File Manager is not supported by this device.</source> <translation>El Gestor de Archivos no está soportado por este dispositivo.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="372" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="375" /> <source>Select Device Directory</source> <translation>Seleccionar Directorio para Dispositivo</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="373" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="376" /> <source>Select the directory for the connected device:</source> <translation>Seleccionar el directorio para el dispositivo conectado:</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="519" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="528" /> <source>Detected an error without indications.</source> <translation>Detectado un error sin indicaciones.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1464" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1473" /> <source>Operation not supported.</source> <translation>Operación no soportada.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>Yes</source> <translation>Si</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>No</source> <translation>No</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>yes</source> <translation>si</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>no</source> <translation>no</translation> </message> @@ -4154,14 +4154,14 @@ <translation>Seleccionar la ruta para el dispositivo montado:</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1128" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1126" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="865" /> <source>unknown ({0})</source> <translation>({0}) desconocido</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1577" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1500" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1567" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1490" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1040" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="961" /> <source>The device volume is not available.</source> @@ -4174,94 +4174,94 @@ <translation>Escribir Credenciales WiFi</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1539" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1529" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1005" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="977" /> <source><p>The file <b>{0}</b> exists already. Shall it be replaced?</p></source> <translation><p>El archivo <b>{0}</b> ya existe. ¿Reemplazarlo?</p></translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1546" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1536" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1012" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="984" /> <source>Aborted</source> <translation>Abortado</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1195" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1193" /> <source>CircuitPython does not support setting the IPv4 parameters of the WiFi access point.</source> <translation>CircuitPython no soporta el ajuste de parámetros IPv4 del punto de acceso de la WiFi.</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1266" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1262" /> <source>CircuitPython does not support reporting of connected clients.</source> <translation>CircuitPython no soporta información de clientes conectados.</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1675" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1663" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1342" /> <source>Active</source> <translation>Activo</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1681" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1351" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1669" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1343" /> <source>Connected</source> <translation>Conectado</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1352" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1344" /> <source>IPv4 Address</source> <translation>Dirección IPv4</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1353" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1345" /> <source>Netmask</source> <translation>Máscara de Red</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1354" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1346" /> <source>Gateway</source> <translation>Gateway</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1355" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1347" /> <source>DNS</source> <translation>DNS</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1677" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1356" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1665" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1348" /> <source>MAC-Address</source> <translation>Dirección MAC</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1357" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1349" /> <source>Chip Type</source> <translation>Tipo de Chip</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1358" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> <source>max. Sockets</source> <translation>máx. Sockets</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1538" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1528" /> <source>Write Connect Script</source> <translation>Escribir Script de Conexión</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1676" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1664" /> <source>Name</source> <translation>Nombre</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1679" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1667" /> <source>Address Type</source> <translation>Tipo de Dirección</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1682" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1670" /> <source>Advertising</source> <translation>Publicitando</translation> </message> @@ -20538,8 +20538,8 @@ <translation>Mostrar Versiones de MicroPython</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1506" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1490" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1498" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1482" /> <location filename="../MicroPython/Devices/EspDevices.py" line="196" /> <source>Erase Flash</source> <translation>Borrar Flash</translation> @@ -20550,7 +20550,7 @@ <translation>Flash MicroPython Firmware</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1591" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1583" /> <location filename="../MicroPython/Devices/EspDevices.py" line="203" /> <source>Flash Additional Firmware</source> <translation>Flash Additional Firmware</translation> @@ -20601,8 +20601,8 @@ <translation>Salida de 'esptool read_flash'</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1590" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1549" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1582" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1541" /> <location filename="../MicroPython/Devices/EspDevices.py" line="363" /> <source>'esptool write_flash' Output</source> <translation>Salida de 'esptool write_flash'</translation> @@ -20668,68 +20668,68 @@ <translation>Error al borrar credenciales: {0}</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="980" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="978" /> <source>unknown ({0})</source> <translation>desconocido ({0})</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1209" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1201" /> <source>Active</source> <translation>Activo</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1210" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1202" /> <source>Name</source> <translation>Nombre</translation> </message> <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1203" /> + <source>MAC-Address</source> + <translation>Dirección MAC</translation> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1206" /> + <source>Address Type</source> + <translation>Tipo de Dirección</translation> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Public</source> + <translation>Pública</translation> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Random</source> + <translation>Aleatoria</translation> + </message> + <message> <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> - <source>MAC-Address</source> - <translation>Dirección MAC</translation> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1214" /> - <source>Address Type</source> - <translation>Tipo de Dirección</translation> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Public</source> - <translation>Pública</translation> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Random</source> - <translation>Aleatoria</translation> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> <source>Rx-Buffer</source> <translation>Rx-Buffer</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> <source>{0} Bytes</source> <translation>{0} Bytes</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> <source>MTU</source> <translation>MTU</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1491" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1483" /> <source>Shall the flash of the selected device really be erased?</source> <translation>¿Borrar el flash del dispositivo seleccionado?</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1505" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1497" /> <source>'esptool erase_flash' Output</source> <translation>Salida de 'esptool erase_flash'</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1550" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1542" /> <source>Flash µPy/CPy Firmware</source> <translation>Flash Firmware µPy/CPy</translation> </message> @@ -50300,15 +50300,16 @@ </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Serial Link</source> - <translation>Enlace de Serie</translation> + <source>Device Communication</source> + <translation type="unfinished" /> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Timeout for Serial Link Communication:</source> - <translation>Tiempo máximo para Comunicación por Enlace de Serie:</translation> - </message> - <message> + <source>Serial Link Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Enter the timout value</source> <translation>Introducir tiempo máximo</translation> @@ -50316,11 +50317,22 @@ <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source> s</source> <translation> s</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>WebRepl Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>Device Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Select to synchronize the time after connection is established</source> <translation>Seleccionar para sincronizar la hora tras establecimiento de conexión</translation> </message> @@ -50413,8 +50425,8 @@ <translation>Introducir la contraseña de red</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="354" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="337" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="364" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="347" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Press to show the password</source> @@ -50756,11 +50768,19 @@ <translation>abrir</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="350" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="333" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="360" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="343" /> <source>Press to hide the password</source> <translation>Pulsar para ocultar la contraseña</translation> </message> + <message> + <source>Serial Link</source> + <translation type="vanished">Enlace de Serie</translation> + </message> + <message> + <source>Timeout for Serial Link Communication:</source> + <translation type="vanished">Tiempo máximo para Comunicación por Enlace de Serie:</translation> + </message> </context> <context> <name>MicroPythonProgressInfoDialog</name> @@ -50771,38 +50791,298 @@ </message> </context> <context> + <name>MicroPythonReplEdit</name> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="322" /> + <source>Clear</source> + <translation type="unfinished">Limpiar</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="327" /> + <source>Copy</source> + <translation type="unfinished">Copiar</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="333" /> + <source>Paste</source> + <translation type="unfinished">Pegar</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="340" /> + <source>Select All</source> + <translation type="unfinished">Seleccionar todo</translation> + </message> + </context> + <context> + <name>MicroPythonWebreplConnectionDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="97" /> + <source>Press to hide the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="101" /> + <source>Press to show the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>WebREPL Connection</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished">Host:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished">Puerto:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished">Contraseña:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished">Tipo de Dispositivo:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished">Seleccionar el tipo de dispositivo</translation> + </message> + </context> + <context> + <name>MicroPythonWebreplDeviceInterface</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="80" /> + <source>WebREPL Password</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="81" /> + <source>Enter the WebREPL password:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="100" /> + <source>WebREPL Login</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="101" /> + <source>The login to the selected device 'webrepl' failed. The given password may be incorrect.</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlAddEditDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>WebREPL URL</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Name:</source> + <translation type="unfinished">Nombre:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a unique name for the WebREPL connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Description:</source> + <translation type="unfinished">Descripción:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a short description to be shown in the selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished">Host:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished">Puerto:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished">Contraseña:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished">Tipo de Dispositivo:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished">Seleccionar el tipo de dispositivo</translation> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlsConfigDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="133" /> + <source>Remove Selected WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="134" /> + <source>Shall the selected WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="150" /> + <source>Remove All WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="151" /> + <source>Shall all WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Name</source> + <translation type="unfinished">Nombre</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Description</source> + <translation type="unfinished">Descripción</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>URL</source> + <translation type="unfinished">URL</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to add a new entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Add...</source> + <translation type="unfinished">Añadir...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to edit the selected entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Edit...</source> + <translation type="unfinished">Editar...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove the selected entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove</source> + <translation type="unfinished">Eliminar</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove all entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove All</source> + <translation type="unfinished">Eliminar Todo</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source><b>Note:</b> The name of an entry must be unique amongst the list.</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>MicroPythonWidget</name> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="247" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="109" /> <source>MicroPython Menu</source> <translation>Menú de MicroPython</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="306" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="145" /> <source><h3>The QtSerialPort package is not available.<br/>MicroPython support is deactivated.</h3></source> <translation><h3>El package QtSerialPort no está disponible.<br/>Soporte para MicroPython desactivado.</h3></translation> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="347" /> - <source>%n supported device(s) detected.</source> - <translation> - <numerusform>%n dispositivo soportado detectado.</numerusform> - <numerusform>%n dispositivos soportados detectados.</numerusform> + <location filename="../MicroPython/MicroPythonWidget.py" line="173" /> + <source>%n supported serial device(s) detected.</source> + <translation type="unfinished"> + <numerusform /> </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="361" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="187" /> <source>{0} - {1} ({2})</source> <comment>board name, description, port name</comment> <translation>{0} - {1} ({2})</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="381" /> - <source>No supported devices detected.</source> - <translation>No se han detectado dispositivos soportados.</translation> + <location filename="../MicroPython/MicroPythonWidget.py" line="210" /> + <source>No supported serial devices detected.</source> + <translation type="unfinished" /> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="385" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="214" /> <source> %n unknown device(s) for manual selection.</source> <translation> @@ -50813,70 +51093,63 @@ </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="392" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="221" /> <source>Manual Selection</source> <translation>Selección Manual</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="427" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="232" /> + <source>WebREPL (manual)</source> + <translation type="unfinished" /> + </message> + <message numerus="yes"> + <location filename="../MicroPython/MicroPythonWidget.py" line="251" /> + <source> +%n WebREPL connection(s) defined.</source> + <translation type="unfinished"> + <numerusform /> + </translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="311" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="282" /> <source>Unknown MicroPython Device</source> <translation>Dispositivo MicroPython Desconocido</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="428" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="283" /> <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:{1}"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> <translation><p>Detectados estos dispositivos de serie desconocidos</p><ul><li>{0}</li></ul><p>Reportarlos por favor junto con el nombre de la placa y una descripción corta a <a href="mailto:{1}"> la dirección de reporte de bugs de eric </a> si es una placa MicroPython.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="440" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="295" /> <source>{0} (0x{1:04x}/0x{2:04x})</source> <comment>description, VId, PId</comment> <translation>{0} (0x{1:04x}/0x{2:04x})</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="457" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="312" /> <source>Would you like to add them to the list of manually configured devices?</source> <translation>¿Desea añadirlos a la lista de dispositivos configurados manualmente?</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="592" /> - <source>Clear</source> - <translation>Limpiar</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="597" /> - <source>Copy</source> - <translation>Copiar</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="603" /> - <source>Paste</source> - <translation>Pegar</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="610" /> - <source>Select All</source> - <translation>Seleccionar todo</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="636" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="451" /> <source>Press to disconnect the current device</source> <translation>Pulsar para desconectar el dispositivo seleccionado</translation> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="641" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> <source>Press to connect the selected device</source> <translation>Pulsar para conectar el dispositivo seleccionado</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="673" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="488" /> <source>No device attached</source> <translation>No hay dispositivo conectado</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="674" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="489" /> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -50889,354 +51162,359 @@ Finalmente, pulsar el botón de reset del dispositivo y esperar unos pocos segundos antes de intentar de nuevo.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="703" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="518" /> <source>Start REPL</source> <translation>Iniciar REPL</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="704" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="519" /> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation><p>El REPL no se puede iniciar.</p><p>Razón: {0}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1232" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1221" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="716" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="705" /> <source>Serial Device Connect</source> <translation>Conexión de Dispositivo en Serie</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="706" /> <source><p>The device at serial port <b>{0}</b> does not respond. It may not have a MicroPython firmware flashed.</p></source> <translation><p>El dispositivo en el puerto de serie <b>{0}</b> no responde. Puede que no tenga un firmware MicroPython flasheado.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1233" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="717" /> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation><p>No se puede conectar el dispositovo en el puerto de serie <b>{0}</b>.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1291" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1282" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1273" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="780" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="771" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="762" /> <source>Run Script</source> <translation>Ejecutar Script</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1274" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="763" /> <source>There is no editor open. Abort...</source> <translation>No hay editor abierto. Abortando...</translation> </message> <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="772" /> + <source>The current editor does not contain a script. Abort...</source> + <translation>El editor actual no contiene un script. Abortando...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="781" /> + <source><p>Cannot run script.</p><p>Reason: {0}</p></source> + <translation><p>No se puede ejecutar el script.</p><p>Razón: {0}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="817" /> + <source>Start Chart</source> + <translation>Iniciar Gráfica</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="818" /> + <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> + <translation><p>No se puede iniciar la gráfica.</p><p>Razón: {0}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="833" /> + <source>µPy Chart</source> + <translation>Gráfico µPy</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="850" /> + <source>Unsaved Chart Data</source> + <translation>Datos de Gráfica sin Guardar</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="851" /> + <source>The chart contains unsaved data.</source> + <translation>La gráfica contiene datos sin guardar.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="899" /> + <source>Start File Manager</source> + <translation>Comenzar Gestor de Archivos</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="900" /> + <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> + <translation><p>El Gestor de Archivos no se puede iniciar.</p><p>Razón: {0}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="920" /> + <source>µPy Files</source> + <translation>Archivos µPy</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="985" /> + <source>Downloads</source> + <translation>Descargas</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1032" /> + <source>Show Version</source> + <translation>Mostrar Versión</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1035" /> + <source>Show Implementation</source> + <translation>Mostrar Implementación</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038" /> + <source>Show Board Data</source> + <translation>Mostrar Datos de Microprocesador</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1043" /> + <source>Synchronize Time</source> + <translation>Sincronizar Hora</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1046" /> + <source>Show Device Time</source> + <translation>Mostrar Hora del Dispositivo</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1048" /> + <source>Show Local Time</source> + <translation>Mostrar Hora Local</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051" /> + <source>Show Time</source> + <translation>Mostrar Tiempo</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1055" /> + <source>Show Builtin Modules</source> + <translation>Mostrar Módulos Incorporados</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1059" /> + <source>Install Package</source> + <translation>Instalar Package</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1672" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1669" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1063" /> + <source>Install Packages</source> + <translation>Instalar Packages</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1448" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1073" /> + <source>Compile Python File</source> + <translation>Compilar Archivo de Python</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1472" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1463" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1077" /> + <source>Compile Current Editor</source> + <translation>Compilar Editor Actual</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1098" /> + <source>Download Firmware</source> + <translation>Descargar Firmware</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1105" /> + <source>Show Documentation</source> + <translation>Mostrar Documentación</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1108" /> + <source>Convert To UF2</source> + <translation>Convertir a UF2</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1109" /> + <source>Flash UF2 Device</source> + <translation>Flashear Dispositivo UF2</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1112" /> + <source>Manage Unknown Devices</source> + <translation>Gestión Dispositivos Desconocidos</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1115" /> + <source>Ignored Serial Devices</source> + <translation>Dispositivos de Serie Ignorados</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118" /> + <source>Configure</source> + <translation>Configurar</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1127" /> + <source><h3>Device Version Information</h3></source> + <translation><h3>Información de Versión de Dispositivo</h3></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1138" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1134" /> + <source>Device Version Information</source> + <translation>Información de Versión de Dispositivo</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1139" /> + <source>No version information available.</source> + <translation>No hay información de versión disponible.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1163" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1155" /> + <source>unknown</source> + <translation>desconocido</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169" /> + <source> ({0})</source> + <translation> ({0})</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1185" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1176" /> + <source>Device Implementation Information</source> + <translation>Información de Implementación de Dispositivo</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1177" /> + <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> + <translation><h3>Información de Implementación de Dispositivo</h3><p>Este dispositivo contiene <b>{0} {1}{2}</b>.</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186" /> + <source>No device implementation information available.</source> + <translation>Sin información disponible de implementación de dispositivo.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1225" /> + <source><p>The time of the connected device was synchronized with the local time.</p></source> + <translation><p>La hora del dispositivo conectado está sincronizada con la hora local.</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1247" /> + <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation><h3>Fecha y Hora del Dispositivo</h3><table><tr><td><b>Fecha</b></td><td>{0}</td></tr><tr><td><b>Hora</b></td><td>{1}</td></tr></table></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1255" /> + <source><h3>Device Date and Time</h3><p>{0}</p></source> + <translation><h3>Fecha y Hora del Dispositivo</h3><p>{0}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1271" /> + <source>Device Date and Time</source> + <translation>Fecha y Hora del Dispositivo</translation> + </message> + <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1283" /> - <source>The current editor does not contain a script. Abort...</source> - <translation>El editor actual no contiene un script. Abortando...</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1292" /> - <source><p>Cannot run script.</p><p>Reason: {0}</p></source> - <translation><p>No se puede ejecutar el script.</p><p>Razón: {0}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1328" /> - <source>Start Chart</source> - <translation>Iniciar Gráfica</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1329" /> - <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> - <translation><p>No se puede iniciar la gráfica.</p><p>Razón: {0}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1344" /> - <source>µPy Chart</source> - <translation>Gráfico µPy</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1361" /> - <source>Unsaved Chart Data</source> - <translation>Datos de Gráfica sin Guardar</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1362" /> - <source>The chart contains unsaved data.</source> - <translation>La gráfica contiene datos sin guardar.</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1410" /> - <source>Start File Manager</source> - <translation>Comenzar Gestor de Archivos</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1411" /> - <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> - <translation><p>El Gestor de Archivos no se puede iniciar.</p><p>Razón: {0}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431" /> - <source>µPy Files</source> - <translation>Archivos µPy</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1496" /> - <source>Downloads</source> - <translation>Descargas</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1543" /> - <source>Show Version</source> - <translation>Mostrar Versión</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> - <source>Show Implementation</source> - <translation>Mostrar Implementación</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1549" /> - <source>Show Board Data</source> - <translation>Mostrar Datos de Microprocesador</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1735" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1554" /> - <source>Synchronize Time</source> - <translation>Sincronizar Hora</translation> + <source>Local Date and Time</source> + <translation>Fecha y Hora Local</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1284" /> + <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation><h3>Fecha y Hora del Local</h3><table><tr><td><b>Fecha</b></td><td>{0}</td></tr><tr><td><b>Hora</b></td><td>{1}</td></tr></table></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1325" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308" /> + <source>Date and Time</source> + <translation>Fecha y Hora</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1309" /> + <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> + <translation><table><tr><th></th><th>Fecha y Hora Local</th><th>Fecha y Hora del Dispositivo</th></tr><tr><td><b>Fecha</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Hora</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1326" /> + <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> + <translation><table><tr><th>Fecha y Hora Local</th><th>Fecha y Hora del Dispositivo</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1350" /> + <source>Error handling device</source> + <translation>Error de gestión del dispositivo</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1351" /> + <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> + <translation><p>Ha ocurrido un error al comunicar con el dispositivo conectado.</p><p>Método: {0}</p><p>Mensaje: {1}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1393" /> + <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> + <translation>El compilador multiplataforma de MicroPython <b>mpy-cross</b> no se encuentra. Asegúrese de que está en la ruta de búsqueda o configurarlo en la página de configuración de MicroPython.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1419" /> + <source>Python Files (*.py);;All Files (*)</source> + <translation>Archivos Python (*.py);;Todos los Archivos (*)</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1429" /> + <source>The Python file <b>{0}</b> does not exist. Aborting...</source> + <translation>El archivo de Python <b>{0}</b> no existe. Abortando...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1438" /> + <source>'mpy-cross' Output</source> + <translation>Salida de 'mpy-cross'</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1464" /> + <source>The current editor does not contain a Python file. Aborting...</source> + <translation>El editor actual no contiene un archivo de Python. Abortando...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1556" /> + <source>Add Unknown Devices</source> + <translation>Añadir Dispositivos Desconocidos</translation> </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1557" /> - <source>Show Device Time</source> - <translation>Mostrar Hora del Dispositivo</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1559" /> - <source>Show Local Time</source> - <translation>Mostrar Hora Local</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> - <source>Show Time</source> - <translation>Mostrar Tiempo</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> - <source>Show Builtin Modules</source> - <translation>Mostrar Módulos Incorporados</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2144" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1578" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1570" /> - <source>Install Package</source> - <translation>Instalar Package</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2183" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2180" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1574" /> - <source>Install Packages</source> - <translation>Instalar Packages</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1959" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1584" /> - <source>Compile Python File</source> - <translation>Compilar Archivo de Python</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1983" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1974" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1588" /> - <source>Compile Current Editor</source> - <translation>Compilar Editor Actual</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1609" /> - <source>Download Firmware</source> - <translation>Descargar Firmware</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> - <source>Show Documentation</source> - <translation>Mostrar Documentación</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1619" /> - <source>Convert To UF2</source> - <translation>Convertir a UF2</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1620" /> - <source>Flash UF2 Device</source> - <translation>Flashear Dispositivo UF2</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1623" /> - <source>Manage Unknown Devices</source> - <translation>Gestión Dispositivos Desconocidos</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> - <source>Ignored Serial Devices</source> - <translation>Dispositivos de Serie Ignorados</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1629" /> - <source>Configure</source> - <translation>Configurar</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> - <source><h3>Device Version Information</h3></source> - <translation><h3>Información de Versión de Dispositivo</h3></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1649" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1645" /> - <source>Device Version Information</source> - <translation>Información de Versión de Dispositivo</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1650" /> - <source>No version information available.</source> - <translation>No hay información de versión disponible.</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1666" /> - <source>unknown</source> - <translation>desconocido</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1680" /> - <source> ({0})</source> - <translation> ({0})</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1696" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1687" /> - <source>Device Implementation Information</source> - <translation>Información de Implementación de Dispositivo</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1688" /> - <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> - <translation><h3>Información de Implementación de Dispositivo</h3><p>Este dispositivo contiene <b>{0} {1}{2}</b>.</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1697" /> - <source>No device implementation information available.</source> - <translation>Sin información disponible de implementación de dispositivo.</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1736" /> - <source><p>The time of the connected device was synchronized with the local time.</p></source> - <translation><p>La hora del dispositivo conectado está sincronizada con la hora local.</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1758" /> - <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation><h3>Fecha y Hora del Dispositivo</h3><table><tr><td><b>Fecha</b></td><td>{0}</td></tr><tr><td><b>Hora</b></td><td>{1}</td></tr></table></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1766" /> - <source><h3>Device Date and Time</h3><p>{0}</p></source> - <translation><h3>Fecha y Hora del Dispositivo</h3><p>{0}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> - <source>Device Date and Time</source> - <translation>Fecha y Hora del Dispositivo</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1794" /> - <source>Local Date and Time</source> - <translation>Fecha y Hora Local</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1795" /> - <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation><h3>Fecha y Hora del Local</h3><table><tr><td><b>Fecha</b></td><td>{0}</td></tr><tr><td><b>Hora</b></td><td>{1}</td></tr></table></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1836" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1819" /> - <source>Date and Time</source> - <translation>Fecha y Hora</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1820" /> - <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> - <translation><table><tr><th></th><th>Fecha y Hora Local</th><th>Fecha y Hora del Dispositivo</th></tr><tr><td><b>Fecha</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Hora</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1837" /> - <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> - <translation><table><tr><th>Fecha y Hora Local</th><th>Fecha y Hora del Dispositivo</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1861" /> - <source>Error handling device</source> - <translation>Error de gestión del dispositivo</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1862" /> - <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> - <translation><p>Ha ocurrido un error al comunicar con el dispositivo conectado.</p><p>Método: {0}</p><p>Mensaje: {1}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1904" /> - <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> - <translation>El compilador multiplataforma de MicroPython <b>mpy-cross</b> no se encuentra. Asegúrese de que está en la ruta de búsqueda o configurarlo en la página de configuración de MicroPython.</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1930" /> - <source>Python Files (*.py);;All Files (*)</source> - <translation>Archivos Python (*.py);;Todos los Archivos (*)</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1940" /> - <source>The Python file <b>{0}</b> does not exist. Aborting...</source> - <translation>El archivo de Python <b>{0}</b> no existe. Abortando...</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1949" /> - <source>'mpy-cross' Output</source> - <translation>Salida de 'mpy-cross'</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1975" /> - <source>The current editor does not contain a Python file. Aborting...</source> - <translation>El editor actual no contiene un archivo de Python. Abortando...</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2067" /> - <source>Add Unknown Devices</source> - <translation>Añadir Dispositivos Desconocidos</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2068" /> <source>Select the devices to be added:</source> <translation>Seleccionar los dispositivos a añadir:</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2117" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1606" /> <source>Plus any modules on the filesystem.</source> <translation>Más cualesquiera módulos en el sistema de archivos.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2169" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1658" /> <source>Package '{0}' was installed successfully.</source> <translation>El Package '{0}' se ha instalado correctamente.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2184" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1673" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation>Introducir los packages a instalar separados por espacios:</translation> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <source>Press to check for connected devices</source> - <translation>Pulsar para comprobar dispositivos conectados</translation> + <source>Press to detect connected devices and repopulate the device selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> + <source>Press to edit the list of configured WebREPL connections.</source> + <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> @@ -51258,6 +51536,37 @@ <source>Press to open a chart window to display data receive from the selected device</source> <translation>Pulsar para abrir una ventana de gráfica para mostrar datos recibidos desde el dispositivo seleccionado</translation> </message> + <message numerus="yes"> + <source>%n supported device(s) detected.</source> + <translation type="vanished"> + <numerusform>%n dispositivo soportado detectado.</numerusform> + <numerusform>%n dispositivos soportados detectados.</numerusform> + </translation> + </message> + <message> + <source>No supported devices detected.</source> + <translation type="vanished">No se han detectado dispositivos soportados.</translation> + </message> + <message> + <source>Clear</source> + <translation type="vanished">Limpiar</translation> + </message> + <message> + <source>Copy</source> + <translation type="vanished">Copiar</translation> + </message> + <message> + <source>Paste</source> + <translation type="vanished">Pegar</translation> + </message> + <message> + <source>Select All</source> + <translation type="vanished">Seleccionar todo</translation> + </message> + <message> + <source>Press to check for connected devices</source> + <translation type="vanished">Pulsar para comprobar dispositivos conectados</translation> + </message> </context> <context> <name>MicrobitDevice</name> @@ -51421,29 +51730,29 @@ <translation>Script vacío. Abortando.</translation> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="569" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="571" /> <source>MicroPython Firmware for BBC micro:bit V1</source> <translation>Firmware MicroPython para BBC micro:bit V1</translation> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="601" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="588" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="573" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="603" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="590" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="575" /> <source>DAPLink Firmware</source> <translation>Firmware DAPLink</translation> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="580" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="582" /> <source>MicroPython Firmware for BBC micro:bit V2</source> <translation>Firmware MicroPython para BBC micro:bit V2</translation> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="584" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="586" /> <source>CircuitPython Firmware for BBC micro:bit V2</source> <translation>Firmware CircuitPython para BBC micro:bit V2</translation> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="597" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="599" /> <source>MicroPython Firmware</source> <translation>Firmware MicroPython</translation> </message> @@ -58654,18 +58963,18 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1815" /> + <location filename="../Preferences/__init__.py" line="1817" /> <source>Export Preferences</source> <translation>Exportar Preferencias</translation> </message> <message> + <location filename="../Preferences/__init__.py" line="1846" /> + <location filename="../Preferences/__init__.py" line="1819" /> + <source>Properties File (*.ini);;All Files (*)</source> + <translation>Archivo de Propiedades (*.ini);;Todos los archivos (*)</translation> + </message> + <message> <location filename="../Preferences/__init__.py" line="1844" /> - <location filename="../Preferences/__init__.py" line="1817" /> - <source>Properties File (*.ini);;All Files (*)</source> - <translation>Archivo de Propiedades (*.ini);;Todos los archivos (*)</translation> - </message> - <message> - <location filename="../Preferences/__init__.py" line="1842" /> <source>Import Preferences</source> <translation>Importar Preferencias</translation> </message> @@ -68802,88 +69111,88 @@ <translation>Versión de MicroPython</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="364" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="365" /> <source>MicroPython Firmware</source> <translation>MicroPython Firmware</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="368" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="369" /> <source>Pimoroni Pico Firmware</source> <translation>Firmware de Pimoroni Pico</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="371" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="372" /> <source>CircuitPython Firmware</source> <translation>CircuitPython Firmware</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="375" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="376" /> <source>CircuitPython Libraries</source> <translation>Bibliotecas de CircuitPython</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="427" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="428" /> <source>Set Country</source> <translation>Establecer País</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="983" /> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="618" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="978" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="617" /> <source>unknown ({0})</source> <translation>({0}) desconocido</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1093" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1088" /> <source>Pico Wireless does not support setting the IPv4 parameters of the WiFi access point.</source> <translation>La red inalámbrica Pico no soporta establecer parámetros IPv4 del punto de acceso WiFi.</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1168" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1161" /> <source>Pico Wireless does not support reporting of connected clients.</source> <translation>La red inalámbrica Pico no soporta información de clientes conectados.</translation> </message> <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1248" /> + <source>Active</source> + <translation>Activa</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1249" /> + <source>Connected</source> + <translation>conectada</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1252" /> + <source>Status</source> + <translation>Estado</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1256" /> + <source>Hostname</source> + <translation>Nombre de Host</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1257" /> + <source>IPv4 Address</source> + <translation>Dirección IPv4</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1258" /> + <source>Netmask</source> + <translation>Máscara de Red</translation> + </message> + <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1259" /> - <source>Active</source> - <translation>Activa</translation> + <source>Gateway</source> + <translation>Gateway</translation> </message> <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1260" /> - <source>Connected</source> - <translation>conectada</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1263" /> - <source>Status</source> - <translation>Estado</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1267" /> - <source>Hostname</source> - <translation>Nombre de Host</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1268" /> - <source>IPv4 Address</source> - <translation>Dirección IPv4</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1269" /> - <source>Netmask</source> - <translation>Máscara de Red</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1270" /> - <source>Gateway</source> - <translation>Gateway</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1271" /> <source>DNS</source> <translation>DNS</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1272" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1261" /> <source>MAC-Address</source> <translation>Dirección MAC</translation> </message> @@ -83016,7 +83325,7 @@ <translation>Instrucciones para MicroPython Flash</translation> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="315" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> <location filename="../MicroPython/Devices/TeensyDevices.py" line="154" /> <source>Flash MicroPython Firmware</source> <translation>Flash MicroPython Firmware</translation> @@ -83057,17 +83366,17 @@ <translation>Versión de MicroPython</translation> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="317" /> <source><p>Teensy 4.0 and Teensy 4.1 are flashed using the 'Teensy Loader' application. Make sure you downloaded the MicroPython or CircuitPython .hex file.</p><p>See <a href="{0}">the PJRC Teensy web site</a> for details.</p></source> <translation><p>Teensy 4.0 y Teensy 4.1 se flashean utilizando la aplicación 'Teensy Loader'. Asegurar que se ha descargado el archivo hex de MicroPython o CircuitPython.</p><p>Ver <a href="{0}">el sitio web de PJRC Teensy</a> para más detalles.</p></translation> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="338" /> - <source>Start 'Teensy Loader'</source> - <translation>Iniciar 'Teensy Loader'</translation> - </message> - <message> <location filename="../MicroPython/Devices/TeensyDevices.py" line="339" /> + <source>Start 'Teensy Loader'</source> + <translation>Iniciar 'Teensy Loader'</translation> + </message> + <message> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="340" /> <source><p>The 'Teensy Loader' application <b>teensy</b> could not be started. Ensure it is in the application search path or start it manually.</p></source> <translation><p>La aplicación 'Teensy Loader' <b>teensy</b> no se ha podido iniciar. Asegurar que está en la ruta de búsqueda de aplicaciones o iniciarla manualmente.</p></translation> </message>
--- a/src/eric7/i18n/eric7_fr.ts Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/i18n/eric7_fr.ts Thu May 04 17:58:52 2023 +0200 @@ -1821,77 +1821,77 @@ <context> <name>BaseDevice</name> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="196" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="199" /> <source>Device Data Not Available</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="197" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="200" /> <source><p>The device data is not available. Try to connect to the device again. Aborting...</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="250" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="253" /> <source>Unsupported Device</source> <translation type="unfinished">Matériel non supporté</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="260" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="263" /> <source>REPL is not supported by this device.</source> <translation type="unfinished">REPL n'est pas supporté pour ce matériel.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="279" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="282" /> <source>Plotter is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="298" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="301" /> <source>Running scripts is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="317" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="320" /> <source>File Manager is not supported by this device.</source> <translation type="unfinished">Le gestionnaire de fichier n'est pas supporté pour ce matériel.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="372" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="375" /> <source>Select Device Directory</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="373" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="376" /> <source>Select the directory for the connected device:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="519" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="528" /> <source>Detected an error without indications.</source> <translation type="unfinished">Supprimer une erreur sans indications.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1464" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1473" /> <source>Operation not supported.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>Yes</source> <translation type="unfinished">Oui</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>No</source> <translation type="unfinished">Non</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>yes</source> <translation type="unfinished">oui</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>no</source> <translation type="unfinished">non</translation> </message> @@ -4252,14 +4252,14 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1128" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1126" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="865" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1577" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1500" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1567" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1490" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1040" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="961" /> <source>The device volume is not available.</source> @@ -4272,94 +4272,94 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1539" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1529" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1005" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="977" /> <source><p>The file <b>{0}</b> exists already. Shall it be replaced?</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1546" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1536" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1012" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="984" /> <source>Aborted</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1195" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1193" /> <source>CircuitPython does not support setting the IPv4 parameters of the WiFi access point.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1266" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1262" /> <source>CircuitPython does not support reporting of connected clients.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1675" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1663" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1342" /> <source>Active</source> <translation type="unfinished">Actif</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1681" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1351" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1669" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1343" /> <source>Connected</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1352" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1344" /> <source>IPv4 Address</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1353" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1345" /> <source>Netmask</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1354" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1346" /> <source>Gateway</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1355" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1347" /> <source>DNS</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1677" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1356" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1665" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1348" /> <source>MAC-Address</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1357" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1349" /> <source>Chip Type</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1358" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> <source>max. Sockets</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1538" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1528" /> <source>Write Connect Script</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1676" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1664" /> <source>Name</source> <translation type="unfinished">Nom</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1679" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1667" /> <source>Address Type</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1682" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1670" /> <source>Advertising</source> <translation type="unfinished" /> </message> @@ -20695,8 +20695,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1506" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1490" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1498" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1482" /> <location filename="../MicroPython/Devices/EspDevices.py" line="196" /> <source>Erase Flash</source> <translation type="unfinished" /> @@ -20707,7 +20707,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1591" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1583" /> <location filename="../MicroPython/Devices/EspDevices.py" line="203" /> <source>Flash Additional Firmware</source> <translation type="unfinished" /> @@ -20758,8 +20758,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1590" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1549" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1582" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1541" /> <location filename="../MicroPython/Devices/EspDevices.py" line="363" /> <source>'esptool write_flash' Output</source> <translation type="unfinished" /> @@ -20825,68 +20825,68 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="980" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="978" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1209" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1201" /> <source>Active</source> <translation type="unfinished">Actif</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1210" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1202" /> <source>Name</source> <translation type="unfinished">Nom</translation> </message> <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1203" /> + <source>MAC-Address</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1206" /> + <source>Address Type</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Public</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Random</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> - <source>MAC-Address</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1214" /> - <source>Address Type</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Public</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Random</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> <source>Rx-Buffer</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> <source>{0} Bytes</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> <source>MTU</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1491" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1483" /> <source>Shall the flash of the selected device really be erased?</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1505" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1497" /> <source>'esptool erase_flash' Output</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1550" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1542" /> <source>Flash µPy/CPy Firmware</source> <translation type="unfinished" /> </message> @@ -50610,15 +50610,16 @@ </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Serial Link</source> + <source>Device Communication</source> <translation type="unfinished" /> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Timeout for Serial Link Communication:</source> - <translation type="unfinished" /> - </message> - <message> + <source>Serial Link Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Enter the timout value</source> <translation type="unfinished" /> @@ -50626,11 +50627,22 @@ <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source> s</source> <translation> s</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>WebRepl Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>Device Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Select to synchronize the time after connection is established</source> <translation>Cocher pour synchroniser le temps après l'établissement de la connection</translation> </message> @@ -50723,8 +50735,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="354" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="337" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="364" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="347" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Press to show the password</source> @@ -51066,8 +51078,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="350" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="333" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="360" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="343" /> <source>Press to hide the password</source> <translation type="unfinished">Cliquer pour cacher le mot de passe</translation> </message> @@ -51081,38 +51093,298 @@ </message> </context> <context> + <name>MicroPythonReplEdit</name> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="322" /> + <source>Clear</source> + <translation type="unfinished">Effacer</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="327" /> + <source>Copy</source> + <translation type="unfinished">Copier</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="333" /> + <source>Paste</source> + <translation type="unfinished">Coller</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="340" /> + <source>Select All</source> + <translation type="unfinished">Tout sélectionner</translation> + </message> + </context> + <context> + <name>MicroPythonWebreplConnectionDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="97" /> + <source>Press to hide the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="101" /> + <source>Press to show the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>WebREPL Connection</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished">Hôte :</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished">Port :</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished">Mot de passe :</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplDeviceInterface</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="80" /> + <source>WebREPL Password</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="81" /> + <source>Enter the WebREPL password:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="100" /> + <source>WebREPL Login</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="101" /> + <source>The login to the selected device 'webrepl' failed. The given password may be incorrect.</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlAddEditDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>WebREPL URL</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Name:</source> + <translation type="unfinished">Nom :</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a unique name for the WebREPL connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Description:</source> + <translation type="unfinished">Description:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a short description to be shown in the selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished">Hôte :</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished">Port :</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished">Mot de passe :</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlsConfigDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="133" /> + <source>Remove Selected WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="134" /> + <source>Shall the selected WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="150" /> + <source>Remove All WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="151" /> + <source>Shall all WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Name</source> + <translation type="unfinished">Nom</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Description</source> + <translation type="unfinished">Description</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>URL</source> + <translation type="unfinished">URL</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to add a new entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Add...</source> + <translation type="unfinished">Ajouter...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to edit the selected entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Edit...</source> + <translation type="unfinished">Éditer...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove the selected entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove</source> + <translation type="unfinished">Supprimer</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove all entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove All</source> + <translation type="unfinished">Tout supprimer</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source><b>Note:</b> The name of an entry must be unique amongst the list.</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>MicroPythonWidget</name> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="247" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="109" /> <source>MicroPython Menu</source> <translation>Menu MicroPython</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="306" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="145" /> <source><h3>The QtSerialPort package is not available.<br/>MicroPython support is deactivated.</h3></source> <translation type="unfinished" /> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="347" /> - <source>%n supported device(s) detected.</source> - <translation> - <numerusform>%n matériel supporté détecté.</numerusform> - <numerusform>%n matériels supportés détectés.</numerusform> + <location filename="../MicroPython/MicroPythonWidget.py" line="173" /> + <source>%n supported serial device(s) detected.</source> + <translation type="unfinished"> + <numerusform /> </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="361" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="187" /> <source>{0} - {1} ({2})</source> <comment>board name, description, port name</comment> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="381" /> - <source>No supported devices detected.</source> - <translation>Pas de matériel supporté détecté.</translation> + <location filename="../MicroPython/MicroPythonWidget.py" line="210" /> + <source>No supported serial devices detected.</source> + <translation type="unfinished" /> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="385" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="214" /> <source> %n unknown device(s) for manual selection.</source> <translation type="unfinished"> @@ -51121,70 +51393,63 @@ </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="392" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="221" /> <source>Manual Selection</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="427" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="232" /> + <source>WebREPL (manual)</source> + <translation type="unfinished" /> + </message> + <message numerus="yes"> + <location filename="../MicroPython/MicroPythonWidget.py" line="251" /> + <source> +%n WebREPL connection(s) defined.</source> + <translation type="unfinished"> + <numerusform /> + </translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="311" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="282" /> <source>Unknown MicroPython Device</source> <translation>Matériel MicroPython inconnu</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="428" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="283" /> <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:{1}"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="440" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="295" /> <source>{0} (0x{1:04x}/0x{2:04x})</source> <comment>description, VId, PId</comment> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="457" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="312" /> <source>Would you like to add them to the list of manually configured devices?</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="592" /> - <source>Clear</source> - <translation>Effacer</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="597" /> - <source>Copy</source> - <translation>Copier</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="603" /> - <source>Paste</source> - <translation>Coller</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="610" /> - <source>Select All</source> - <translation type="unfinished">Tout sélectionner</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="636" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="451" /> <source>Press to disconnect the current device</source> <translation>Cliquer pour déconnecter le matériel courant</translation> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="641" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> <source>Press to connect the selected device</source> <translation>Cliquer pour se connecter au matériel sélectionné</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="673" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="488" /> <source>No device attached</source> <translation>Pas de matériel relié</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="674" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="489" /> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -51193,354 +51458,359 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="703" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="518" /> <source>Start REPL</source> <translation>Démarrer REPL</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="704" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="519" /> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation><p>REPL ne peut être démarré.</p><p>Raison : {0}</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1232" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1221" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="716" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="705" /> <source>Serial Device Connect</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="706" /> <source><p>The device at serial port <b>{0}</b> does not respond. It may not have a MicroPython firmware flashed.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1233" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="717" /> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation><p>Ne peut connecter un matériel sur le port série<b>{0}</b>.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1291" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1282" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1273" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="780" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="771" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="762" /> <source>Run Script</source> <translation>Lancer le script</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1274" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="763" /> <source>There is no editor open. Abort...</source> <translation>Il n'y a pas d'éditeur ouvert. Annulation...</translation> </message> <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="772" /> + <source>The current editor does not contain a script. Abort...</source> + <translation>L'éditeur courant ne contient pas de script. Annulation...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="781" /> + <source><p>Cannot run script.</p><p>Reason: {0}</p></source> + <translation><p>Ne peut lancer le script.</p><p>Raison : {0}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="817" /> + <source>Start Chart</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="818" /> + <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="833" /> + <source>µPy Chart</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="850" /> + <source>Unsaved Chart Data</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="851" /> + <source>The chart contains unsaved data.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="899" /> + <source>Start File Manager</source> + <translation>Démarrer le gestionnaire de fichier</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="900" /> + <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> + <translation><p>Le gestionnaire de fichier ne peut démarrer.</p><p>Raison : {0}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="920" /> + <source>µPy Files</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="985" /> + <source>Downloads</source> + <translation type="unfinished">Téléchargements</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1032" /> + <source>Show Version</source> + <translation>Montrer la version</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1035" /> + <source>Show Implementation</source> + <translation>Montrer l'implémentation</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038" /> + <source>Show Board Data</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1043" /> + <source>Synchronize Time</source> + <translation>Synchroniser le temps</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1046" /> + <source>Show Device Time</source> + <translation>Montrer l'horloge matériel</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1048" /> + <source>Show Local Time</source> + <translation>Montrer l'horloge locale</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051" /> + <source>Show Time</source> + <translation>Montrer l'horloge</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1055" /> + <source>Show Builtin Modules</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1059" /> + <source>Install Package</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1672" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1669" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1063" /> + <source>Install Packages</source> + <translation type="unfinished">Installer des packages</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1448" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1073" /> + <source>Compile Python File</source> + <translation>Compilier le fichier Python</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1472" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1463" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1077" /> + <source>Compile Current Editor</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1098" /> + <source>Download Firmware</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1105" /> + <source>Show Documentation</source> + <translation>Montrer la documentation</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1108" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1109" /> + <source>Flash UF2 Device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1112" /> + <source>Manage Unknown Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1115" /> + <source>Ignored Serial Devices</source> + <translation>Matériels séries ignorés</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118" /> + <source>Configure</source> + <translation>Configuration</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1127" /> + <source><h3>Device Version Information</h3></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1138" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1134" /> + <source>Device Version Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1139" /> + <source>No version information available.</source> + <translation>Pas d'information de version disponible.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1163" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1155" /> + <source>unknown</source> + <translation>inconnu</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169" /> + <source> ({0})</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1185" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1176" /> + <source>Device Implementation Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1177" /> + <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186" /> + <source>No device implementation information available.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1225" /> + <source><p>The time of the connected device was synchronized with the local time.</p></source> + <translation><p>L'horloge du matériel connecté a été synchronisée à l'horloge locale.</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1247" /> + <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation><h3>Date et heure matériel</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Heure</b></td><td>{1}</td></tr></table></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1255" /> + <source><h3>Device Date and Time</h3><p>{0}</p></source> + <translation><h3>Date et heure matériel</h3><p>{0}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1271" /> + <source>Device Date and Time</source> + <translation>Date et heure matériel</translation> + </message> + <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1283" /> - <source>The current editor does not contain a script. Abort...</source> - <translation>L'éditeur courant ne contient pas de script. Annulation...</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1292" /> - <source><p>Cannot run script.</p><p>Reason: {0}</p></source> - <translation><p>Ne peut lancer le script.</p><p>Raison : {0}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1328" /> - <source>Start Chart</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1329" /> - <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1344" /> - <source>µPy Chart</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1361" /> - <source>Unsaved Chart Data</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1362" /> - <source>The chart contains unsaved data.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1410" /> - <source>Start File Manager</source> - <translation>Démarrer le gestionnaire de fichier</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1411" /> - <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> - <translation><p>Le gestionnaire de fichier ne peut démarrer.</p><p>Raison : {0}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431" /> - <source>µPy Files</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1496" /> - <source>Downloads</source> - <translation type="unfinished">Téléchargements</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1543" /> - <source>Show Version</source> - <translation>Montrer la version</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> - <source>Show Implementation</source> - <translation>Montrer l'implémentation</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1549" /> - <source>Show Board Data</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1735" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1554" /> - <source>Synchronize Time</source> - <translation>Synchroniser le temps</translation> + <source>Local Date and Time</source> + <translation>Date et heure locales</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1284" /> + <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation><h3>Date et heure locales</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Heure</b></td><td>{1}</td></tr></table></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1325" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308" /> + <source>Date and Time</source> + <translation>Date et heure</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1309" /> + <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> + <translation><table><tr><th></th><th>Date et heure locales</th><th>Date et heure matériel</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Heure</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1326" /> + <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> + <translation><table><tr><th>Date et heure locales</th><th>Date et heure matériel</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1350" /> + <source>Error handling device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1351" /> + <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> + <translation><p>Il y a eu une erreur de communication avec le matériel connecté.</p><p>Méthode : {0}</p><p>Message : {1}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1393" /> + <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1419" /> + <source>Python Files (*.py);;All Files (*)</source> + <translation>Fichiers Python (*.py);;Tous les fichiers (*)</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1429" /> + <source>The Python file <b>{0}</b> does not exist. Aborting...</source> + <translation>Le fichier Python <b>{0}</b> n'existe pas. Annulation...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1438" /> + <source>'mpy-cross' Output</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1464" /> + <source>The current editor does not contain a Python file. Aborting...</source> + <translation>L'éditeur courant ne contient pas un fichier Python. Annulation...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1556" /> + <source>Add Unknown Devices</source> + <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1557" /> - <source>Show Device Time</source> - <translation>Montrer l'horloge matériel</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1559" /> - <source>Show Local Time</source> - <translation>Montrer l'horloge locale</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> - <source>Show Time</source> - <translation>Montrer l'horloge</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> - <source>Show Builtin Modules</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2144" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1578" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1570" /> - <source>Install Package</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2183" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2180" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1574" /> - <source>Install Packages</source> - <translation type="unfinished">Installer des packages</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1959" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1584" /> - <source>Compile Python File</source> - <translation>Compilier le fichier Python</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1983" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1974" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1588" /> - <source>Compile Current Editor</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1609" /> - <source>Download Firmware</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> - <source>Show Documentation</source> - <translation>Montrer la documentation</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1619" /> - <source>Convert To UF2</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1620" /> - <source>Flash UF2 Device</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1623" /> - <source>Manage Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> - <source>Ignored Serial Devices</source> - <translation>Matériels séries ignorés</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1629" /> - <source>Configure</source> - <translation>Configuration</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> - <source><h3>Device Version Information</h3></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1649" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1645" /> - <source>Device Version Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1650" /> - <source>No version information available.</source> - <translation>Pas d'information de version disponible.</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1666" /> - <source>unknown</source> - <translation>inconnu</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1680" /> - <source> ({0})</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1696" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1687" /> - <source>Device Implementation Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1688" /> - <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1697" /> - <source>No device implementation information available.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1736" /> - <source><p>The time of the connected device was synchronized with the local time.</p></source> - <translation><p>L'horloge du matériel connecté a été synchronisée à l'horloge locale.</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1758" /> - <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation><h3>Date et heure matériel</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Heure</b></td><td>{1}</td></tr></table></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1766" /> - <source><h3>Device Date and Time</h3><p>{0}</p></source> - <translation><h3>Date et heure matériel</h3><p>{0}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> - <source>Device Date and Time</source> - <translation>Date et heure matériel</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1794" /> - <source>Local Date and Time</source> - <translation>Date et heure locales</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1795" /> - <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation><h3>Date et heure locales</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Heure</b></td><td>{1}</td></tr></table></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1836" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1819" /> - <source>Date and Time</source> - <translation>Date et heure</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1820" /> - <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> - <translation><table><tr><th></th><th>Date et heure locales</th><th>Date et heure matériel</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Heure</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1837" /> - <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> - <translation><table><tr><th>Date et heure locales</th><th>Date et heure matériel</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1861" /> - <source>Error handling device</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1862" /> - <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> - <translation><p>Il y a eu une erreur de communication avec le matériel connecté.</p><p>Méthode : {0}</p><p>Message : {1}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1904" /> - <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1930" /> - <source>Python Files (*.py);;All Files (*)</source> - <translation>Fichiers Python (*.py);;Tous les fichiers (*)</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1940" /> - <source>The Python file <b>{0}</b> does not exist. Aborting...</source> - <translation>Le fichier Python <b>{0}</b> n'existe pas. Annulation...</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1949" /> - <source>'mpy-cross' Output</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1975" /> - <source>The current editor does not contain a Python file. Aborting...</source> - <translation>L'éditeur courant ne contient pas un fichier Python. Annulation...</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2067" /> - <source>Add Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2068" /> <source>Select the devices to be added:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2117" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1606" /> <source>Plus any modules on the filesystem.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2169" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1658" /> <source>Package '{0}' was installed successfully.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2184" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1673" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <source>Press to check for connected devices</source> - <translation>Cliquer pour vérifier les matériels connectés</translation> + <source>Press to detect connected devices and repopulate the device selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> + <source>Press to edit the list of configured WebREPL connections.</source> + <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> @@ -51562,6 +51832,37 @@ <source>Press to open a chart window to display data receive from the selected device</source> <translation type="unfinished" /> </message> + <message numerus="yes"> + <source>%n supported device(s) detected.</source> + <translation type="vanished"> + <numerusform>%n matériel supporté détecté.</numerusform> + <numerusform>%n matériels supportés détectés.</numerusform> + </translation> + </message> + <message> + <source>No supported devices detected.</source> + <translation type="vanished">Pas de matériel supporté détecté.</translation> + </message> + <message> + <source>Clear</source> + <translation type="vanished">Effacer</translation> + </message> + <message> + <source>Copy</source> + <translation type="vanished">Copier</translation> + </message> + <message> + <source>Paste</source> + <translation type="vanished">Coller</translation> + </message> + <message> + <source>Select All</source> + <translation type="vanished">Tout sélectionner</translation> + </message> + <message> + <source>Press to check for connected devices</source> + <translation type="vanished">Cliquer pour vérifier les matériels connectés</translation> + </message> <message> <source>Open Python File</source> <translation type="vanished">Ouvrir un fichier Python</translation> @@ -51737,29 +52038,29 @@ <translation>Le script est vide. Annulation.</translation> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="569" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="571" /> <source>MicroPython Firmware for BBC micro:bit V1</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="601" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="588" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="573" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="603" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="590" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="575" /> <source>DAPLink Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="580" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="582" /> <source>MicroPython Firmware for BBC micro:bit V2</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="584" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="586" /> <source>CircuitPython Firmware for BBC micro:bit V2</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="597" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="599" /> <source>MicroPython Firmware</source> <translation type="unfinished" /> </message> @@ -59027,18 +59328,18 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1815" /> + <location filename="../Preferences/__init__.py" line="1817" /> <source>Export Preferences</source> <translation>Export des préférences</translation> </message> <message> + <location filename="../Preferences/__init__.py" line="1846" /> + <location filename="../Preferences/__init__.py" line="1819" /> + <source>Properties File (*.ini);;All Files (*)</source> + <translation>Fichier propriétés (*.ini);;Tous les fichiers (*)</translation> + </message> + <message> <location filename="../Preferences/__init__.py" line="1844" /> - <location filename="../Preferences/__init__.py" line="1817" /> - <source>Properties File (*.ini);;All Files (*)</source> - <translation>Fichier propriétés (*.ini);;Tous les fichiers (*)</translation> - </message> - <message> - <location filename="../Preferences/__init__.py" line="1842" /> <source>Import Preferences</source> <translation>Import des préférences</translation> </message> @@ -69476,88 +69777,88 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="364" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="365" /> <source>MicroPython Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="368" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="369" /> <source>Pimoroni Pico Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="371" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="372" /> <source>CircuitPython Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="375" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="376" /> <source>CircuitPython Libraries</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="427" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="428" /> <source>Set Country</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="983" /> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="618" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="978" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="617" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1093" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1088" /> <source>Pico Wireless does not support setting the IPv4 parameters of the WiFi access point.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1168" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1161" /> <source>Pico Wireless does not support reporting of connected clients.</source> <translation type="unfinished" /> </message> <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1248" /> + <source>Active</source> + <translation type="unfinished">Actif</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1249" /> + <source>Connected</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1252" /> + <source>Status</source> + <translation type="unfinished">Etat (status)</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1256" /> + <source>Hostname</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1257" /> + <source>IPv4 Address</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1258" /> + <source>Netmask</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1259" /> - <source>Active</source> - <translation type="unfinished">Actif</translation> + <source>Gateway</source> + <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1260" /> - <source>Connected</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1263" /> - <source>Status</source> - <translation type="unfinished">Etat (status)</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1267" /> - <source>Hostname</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1268" /> - <source>IPv4 Address</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1269" /> - <source>Netmask</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1270" /> - <source>Gateway</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1271" /> <source>DNS</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1272" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1261" /> <source>MAC-Address</source> <translation type="unfinished" /> </message> @@ -70507,19 +70808,19 @@ <translation>Remplacer tout</translation> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1045" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1046" /> <location filename="../QScintilla/SearchReplaceWidget.py" line="597" /> <location filename="../QScintilla/SearchReplaceWidget.py" line="559" /> <source>'{0}' was not found.</source> <translation>'{0}' n'a pas été trouvé.</translation> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1198" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1199" /> <source>Replaced {0} occurrences.</source> <translation>{0} occurrences remplacées.</translation> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1204" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1205" /> <source>Nothing replaced because '{0}' was not found.</source> <translation>Rien de remplacé car '{0}' n'a pas été trouvé.</translation> </message> @@ -83730,7 +84031,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="315" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> <location filename="../MicroPython/Devices/TeensyDevices.py" line="154" /> <source>Flash MicroPython Firmware</source> <translation type="unfinished" /> @@ -83771,17 +84072,17 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="317" /> <source><p>Teensy 4.0 and Teensy 4.1 are flashed using the 'Teensy Loader' application. Make sure you downloaded the MicroPython or CircuitPython .hex file.</p><p>See <a href="{0}">the PJRC Teensy web site</a> for details.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="338" /> - <source>Start 'Teensy Loader'</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/Devices/TeensyDevices.py" line="339" /> + <source>Start 'Teensy Loader'</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="340" /> <source><p>The 'Teensy Loader' application <b>teensy</b> could not be started. Ensure it is in the application search path or start it manually.</p></source> <translation type="unfinished" /> </message>
--- a/src/eric7/i18n/eric7_it.ts Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/i18n/eric7_it.ts Thu May 04 17:58:52 2023 +0200 @@ -1794,77 +1794,77 @@ <context> <name>BaseDevice</name> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="196" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="199" /> <source>Device Data Not Available</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="197" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="200" /> <source><p>The device data is not available. Try to connect to the device again. Aborting...</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="250" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="253" /> <source>Unsupported Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="260" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="263" /> <source>REPL is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="279" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="282" /> <source>Plotter is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="298" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="301" /> <source>Running scripts is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="317" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="320" /> <source>File Manager is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="372" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="375" /> <source>Select Device Directory</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="373" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="376" /> <source>Select the directory for the connected device:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="519" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="528" /> <source>Detected an error without indications.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1464" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1473" /> <source>Operation not supported.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>Yes</source> <translation type="unfinished">Si</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>No</source> <translation type="unfinished">No</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>yes</source> <translation type="unfinished">si</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>no</source> <translation type="unfinished">no</translation> </message> @@ -4223,14 +4223,14 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1128" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1126" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="865" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1577" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1500" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1567" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1490" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1040" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="961" /> <source>The device volume is not available.</source> @@ -4243,94 +4243,94 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1539" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1529" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1005" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="977" /> <source><p>The file <b>{0}</b> exists already. Shall it be replaced?</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1546" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1536" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1012" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="984" /> <source>Aborted</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1195" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1193" /> <source>CircuitPython does not support setting the IPv4 parameters of the WiFi access point.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1266" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1262" /> <source>CircuitPython does not support reporting of connected clients.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1675" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1663" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1342" /> <source>Active</source> <translation type="unfinished">Attivo</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1681" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1351" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1669" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1343" /> <source>Connected</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1352" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1344" /> <source>IPv4 Address</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1353" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1345" /> <source>Netmask</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1354" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1346" /> <source>Gateway</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1355" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1347" /> <source>DNS</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1677" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1356" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1665" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1348" /> <source>MAC-Address</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1357" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1349" /> <source>Chip Type</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1358" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> <source>max. Sockets</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1538" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1528" /> <source>Write Connect Script</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1676" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1664" /> <source>Name</source> <translation type="unfinished">Nome</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1679" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1667" /> <source>Address Type</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1682" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1670" /> <source>Advertising</source> <translation type="unfinished" /> </message> @@ -20665,8 +20665,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1506" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1490" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1498" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1482" /> <location filename="../MicroPython/Devices/EspDevices.py" line="196" /> <source>Erase Flash</source> <translation type="unfinished" /> @@ -20677,7 +20677,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1591" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1583" /> <location filename="../MicroPython/Devices/EspDevices.py" line="203" /> <source>Flash Additional Firmware</source> <translation type="unfinished" /> @@ -20728,8 +20728,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1590" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1549" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1582" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1541" /> <location filename="../MicroPython/Devices/EspDevices.py" line="363" /> <source>'esptool write_flash' Output</source> <translation type="unfinished" /> @@ -20795,68 +20795,68 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="980" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="978" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1209" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1201" /> <source>Active</source> <translation type="unfinished">Attivo</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1210" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1202" /> <source>Name</source> <translation type="unfinished">Nome</translation> </message> <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1203" /> + <source>MAC-Address</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1206" /> + <source>Address Type</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Public</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Random</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> - <source>MAC-Address</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1214" /> - <source>Address Type</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Public</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Random</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> <source>Rx-Buffer</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> <source>{0} Bytes</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> <source>MTU</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1491" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1483" /> <source>Shall the flash of the selected device really be erased?</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1505" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1497" /> <source>'esptool erase_flash' Output</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1550" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1542" /> <source>Flash µPy/CPy Firmware</source> <translation type="unfinished" /> </message> @@ -50537,15 +50537,16 @@ </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Serial Link</source> + <source>Device Communication</source> <translation type="unfinished" /> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Timeout for Serial Link Communication:</source> - <translation type="unfinished" /> - </message> - <message> + <source>Serial Link Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Enter the timout value</source> <translation type="unfinished" /> @@ -50553,11 +50554,22 @@ <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source> s</source> <translation type="unfinished"> s</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>WebRepl Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>Device Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Select to synchronize the time after connection is established</source> <translation type="unfinished" /> </message> @@ -50650,8 +50662,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="354" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="337" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="364" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="347" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Press to show the password</source> @@ -50993,8 +51005,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="350" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="333" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="360" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="343" /> <source>Press to hide the password</source> <translation type="unfinished" /> </message> @@ -51008,38 +51020,298 @@ </message> </context> <context> + <name>MicroPythonReplEdit</name> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="322" /> + <source>Clear</source> + <translation type="unfinished">Pulisci</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="327" /> + <source>Copy</source> + <translation type="unfinished">Copia</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="333" /> + <source>Paste</source> + <translation type="unfinished">Incolla</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="340" /> + <source>Select All</source> + <translation type="unfinished">Seleziona tutti</translation> + </message> + </context> + <context> + <name>MicroPythonWebreplConnectionDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="97" /> + <source>Press to hide the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="101" /> + <source>Press to show the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>WebREPL Connection</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished">Host:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished">Porta:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished">Password:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplDeviceInterface</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="80" /> + <source>WebREPL Password</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="81" /> + <source>Enter the WebREPL password:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="100" /> + <source>WebREPL Login</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="101" /> + <source>The login to the selected device 'webrepl' failed. The given password may be incorrect.</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlAddEditDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>WebREPL URL</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Name:</source> + <translation type="unfinished">Nome:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a unique name for the WebREPL connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Description:</source> + <translation type="unfinished">Descrizione:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a short description to be shown in the selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished">Host:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished">Porta:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished">Password:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlsConfigDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="133" /> + <source>Remove Selected WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="134" /> + <source>Shall the selected WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="150" /> + <source>Remove All WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="151" /> + <source>Shall all WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Name</source> + <translation type="unfinished">Nome</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Description</source> + <translation type="unfinished">Descrizione</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>URL</source> + <translation type="unfinished">URL</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to add a new entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Add...</source> + <translation type="unfinished">Aggiungi...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to edit the selected entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Edit...</source> + <translation type="unfinished">Modifica...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove the selected entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove</source> + <translation type="unfinished">Rimuovi</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove all entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove All</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source><b>Note:</b> The name of an entry must be unique amongst the list.</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>MicroPythonWidget</name> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="247" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="109" /> <source>MicroPython Menu</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="306" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="145" /> <source><h3>The QtSerialPort package is not available.<br/>MicroPython support is deactivated.</h3></source> <translation type="unfinished" /> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="347" /> - <source>%n supported device(s) detected.</source> + <location filename="../MicroPython/MicroPythonWidget.py" line="173" /> + <source>%n supported serial device(s) detected.</source> <translation type="unfinished"> <numerusform /> - <numerusform /> </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="361" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="187" /> <source>{0} - {1} ({2})</source> <comment>board name, description, port name</comment> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="381" /> - <source>No supported devices detected.</source> + <location filename="../MicroPython/MicroPythonWidget.py" line="210" /> + <source>No supported serial devices detected.</source> <translation type="unfinished" /> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="385" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="214" /> <source> %n unknown device(s) for manual selection.</source> <translation type="unfinished"> @@ -51048,70 +51320,63 @@ </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="392" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="221" /> <source>Manual Selection</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="427" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="232" /> + <source>WebREPL (manual)</source> + <translation type="unfinished" /> + </message> + <message numerus="yes"> + <location filename="../MicroPython/MicroPythonWidget.py" line="251" /> + <source> +%n WebREPL connection(s) defined.</source> + <translation type="unfinished"> + <numerusform /> + </translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="311" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="282" /> <source>Unknown MicroPython Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="428" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="283" /> <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:{1}"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="440" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="295" /> <source>{0} (0x{1:04x}/0x{2:04x})</source> <comment>description, VId, PId</comment> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="457" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="312" /> <source>Would you like to add them to the list of manually configured devices?</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="592" /> - <source>Clear</source> - <translation type="unfinished">Pulisci</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="597" /> - <source>Copy</source> - <translation type="unfinished">Copia</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="603" /> - <source>Paste</source> - <translation type="unfinished">Incolla</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="610" /> - <source>Select All</source> - <translation type="unfinished">Seleziona tutti</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="636" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="451" /> <source>Press to disconnect the current device</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="641" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> <source>Press to connect the selected device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="673" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="488" /> <source>No device attached</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="674" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="489" /> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -51120,353 +51385,358 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="703" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="518" /> <source>Start REPL</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="704" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="519" /> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1232" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1221" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="716" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="705" /> <source>Serial Device Connect</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="706" /> <source><p>The device at serial port <b>{0}</b> does not respond. It may not have a MicroPython firmware flashed.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1233" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="717" /> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1291" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1282" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1273" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="780" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="771" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="762" /> <source>Run Script</source> <translation type="unfinished">Esegui Script</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1274" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="763" /> <source>There is no editor open. Abort...</source> <translation type="unfinished" /> </message> <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="772" /> + <source>The current editor does not contain a script. Abort...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="781" /> + <source><p>Cannot run script.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="817" /> + <source>Start Chart</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="818" /> + <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="833" /> + <source>µPy Chart</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="850" /> + <source>Unsaved Chart Data</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="851" /> + <source>The chart contains unsaved data.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="899" /> + <source>Start File Manager</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="900" /> + <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="920" /> + <source>µPy Files</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="985" /> + <source>Downloads</source> + <translation type="unfinished">Downloads</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1032" /> + <source>Show Version</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1035" /> + <source>Show Implementation</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038" /> + <source>Show Board Data</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1043" /> + <source>Synchronize Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1046" /> + <source>Show Device Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1048" /> + <source>Show Local Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051" /> + <source>Show Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1055" /> + <source>Show Builtin Modules</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1059" /> + <source>Install Package</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1672" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1669" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1063" /> + <source>Install Packages</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1448" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1073" /> + <source>Compile Python File</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1472" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1463" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1077" /> + <source>Compile Current Editor</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1098" /> + <source>Download Firmware</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1105" /> + <source>Show Documentation</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1108" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1109" /> + <source>Flash UF2 Device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1112" /> + <source>Manage Unknown Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1115" /> + <source>Ignored Serial Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118" /> + <source>Configure</source> + <translation type="unfinished">Configura</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1127" /> + <source><h3>Device Version Information</h3></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1138" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1134" /> + <source>Device Version Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1139" /> + <source>No version information available.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1163" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1155" /> + <source>unknown</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169" /> + <source> ({0})</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1185" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1176" /> + <source>Device Implementation Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1177" /> + <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186" /> + <source>No device implementation information available.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1225" /> + <source><p>The time of the connected device was synchronized with the local time.</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1247" /> + <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1255" /> + <source><h3>Device Date and Time</h3><p>{0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1271" /> + <source>Device Date and Time</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1283" /> - <source>The current editor does not contain a script. Abort...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1292" /> - <source><p>Cannot run script.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1328" /> - <source>Start Chart</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1329" /> - <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1344" /> - <source>µPy Chart</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1361" /> - <source>Unsaved Chart Data</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1362" /> - <source>The chart contains unsaved data.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1410" /> - <source>Start File Manager</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1411" /> - <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431" /> - <source>µPy Files</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1496" /> - <source>Downloads</source> - <translation type="unfinished">Downloads</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1543" /> - <source>Show Version</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> - <source>Show Implementation</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1549" /> - <source>Show Board Data</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1735" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1554" /> - <source>Synchronize Time</source> + <source>Local Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1284" /> + <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1325" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308" /> + <source>Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1309" /> + <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1326" /> + <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1350" /> + <source>Error handling device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1351" /> + <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1393" /> + <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1419" /> + <source>Python Files (*.py);;All Files (*)</source> + <translation type="unfinished">File Python (*.py);;Tutti i File (*)</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1429" /> + <source>The Python file <b>{0}</b> does not exist. Aborting...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1438" /> + <source>'mpy-cross' Output</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1464" /> + <source>The current editor does not contain a Python file. Aborting...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1556" /> + <source>Add Unknown Devices</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1557" /> - <source>Show Device Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1559" /> - <source>Show Local Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> - <source>Show Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> - <source>Show Builtin Modules</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2144" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1578" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1570" /> - <source>Install Package</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2183" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2180" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1574" /> - <source>Install Packages</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1959" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1584" /> - <source>Compile Python File</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1983" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1974" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1588" /> - <source>Compile Current Editor</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1609" /> - <source>Download Firmware</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> - <source>Show Documentation</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1619" /> - <source>Convert To UF2</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1620" /> - <source>Flash UF2 Device</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1623" /> - <source>Manage Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> - <source>Ignored Serial Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1629" /> - <source>Configure</source> - <translation type="unfinished">Configura</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> - <source><h3>Device Version Information</h3></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1649" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1645" /> - <source>Device Version Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1650" /> - <source>No version information available.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1666" /> - <source>unknown</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1680" /> - <source> ({0})</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1696" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1687" /> - <source>Device Implementation Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1688" /> - <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1697" /> - <source>No device implementation information available.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1736" /> - <source><p>The time of the connected device was synchronized with the local time.</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1758" /> - <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1766" /> - <source><h3>Device Date and Time</h3><p>{0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> - <source>Device Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1794" /> - <source>Local Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1795" /> - <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1836" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1819" /> - <source>Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1820" /> - <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1837" /> - <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1861" /> - <source>Error handling device</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1862" /> - <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1904" /> - <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1930" /> - <source>Python Files (*.py);;All Files (*)</source> - <translation type="unfinished">File Python (*.py);;Tutti i File (*)</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1940" /> - <source>The Python file <b>{0}</b> does not exist. Aborting...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1949" /> - <source>'mpy-cross' Output</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1975" /> - <source>The current editor does not contain a Python file. Aborting...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2067" /> - <source>Add Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2068" /> <source>Select the devices to be added:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2117" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1606" /> <source>Plus any modules on the filesystem.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2169" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1658" /> <source>Package '{0}' was installed successfully.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2184" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1673" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <source>Press to check for connected devices</source> + <source>Press to detect connected devices and repopulate the device selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> + <source>Press to edit the list of configured WebREPL connections.</source> <translation type="unfinished" /> </message> <message> @@ -51489,6 +51759,29 @@ <source>Press to open a chart window to display data receive from the selected device</source> <translation type="unfinished" /> </message> + <message numerus="yes"> + <source>%n supported device(s) detected.</source> + <translation type="vanished"> + <numerusform /> + <numerusform /> + </translation> + </message> + <message> + <source>Clear</source> + <translation type="vanished">Pulisci</translation> + </message> + <message> + <source>Copy</source> + <translation type="vanished">Copia</translation> + </message> + <message> + <source>Paste</source> + <translation type="vanished">Incolla</translation> + </message> + <message> + <source>Select All</source> + <translation type="vanished">Seleziona tutti</translation> + </message> </context> <context> <name>MicrobitDevice</name> @@ -51652,29 +51945,29 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="569" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="571" /> <source>MicroPython Firmware for BBC micro:bit V1</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="601" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="588" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="573" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="603" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="590" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="575" /> <source>DAPLink Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="580" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="582" /> <source>MicroPython Firmware for BBC micro:bit V2</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="584" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="586" /> <source>CircuitPython Firmware for BBC micro:bit V2</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="597" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="599" /> <source>MicroPython Firmware</source> <translation type="unfinished" /> </message> @@ -58893,18 +59186,18 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1815" /> + <location filename="../Preferences/__init__.py" line="1817" /> <source>Export Preferences</source> <translation>Esporta Preferenze</translation> </message> <message> + <location filename="../Preferences/__init__.py" line="1846" /> + <location filename="../Preferences/__init__.py" line="1819" /> + <source>Properties File (*.ini);;All Files (*)</source> + <translation>File proprietà (*.ini);;Tutti i file(*)</translation> + </message> + <message> <location filename="../Preferences/__init__.py" line="1844" /> - <location filename="../Preferences/__init__.py" line="1817" /> - <source>Properties File (*.ini);;All Files (*)</source> - <translation>File proprietà (*.ini);;Tutti i file(*)</translation> - </message> - <message> - <location filename="../Preferences/__init__.py" line="1842" /> <source>Import Preferences</source> <translation>Importa Preferenze</translation> </message> @@ -69285,88 +69578,88 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="364" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="365" /> <source>MicroPython Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="368" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="369" /> <source>Pimoroni Pico Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="371" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="372" /> <source>CircuitPython Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="375" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="376" /> <source>CircuitPython Libraries</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="427" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="428" /> <source>Set Country</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="983" /> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="618" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="978" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="617" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1093" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1088" /> <source>Pico Wireless does not support setting the IPv4 parameters of the WiFi access point.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1168" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1161" /> <source>Pico Wireless does not support reporting of connected clients.</source> <translation type="unfinished" /> </message> <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1248" /> + <source>Active</source> + <translation type="unfinished">Attivo</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1249" /> + <source>Connected</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1252" /> + <source>Status</source> + <translation type="unfinished">Stato</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1256" /> + <source>Hostname</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1257" /> + <source>IPv4 Address</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1258" /> + <source>Netmask</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1259" /> - <source>Active</source> - <translation type="unfinished">Attivo</translation> + <source>Gateway</source> + <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1260" /> - <source>Connected</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1263" /> - <source>Status</source> - <translation type="unfinished">Stato</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1267" /> - <source>Hostname</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1268" /> - <source>IPv4 Address</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1269" /> - <source>Netmask</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1270" /> - <source>Gateway</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1271" /> <source>DNS</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1272" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1261" /> <source>MAC-Address</source> <translation type="unfinished" /> </message> @@ -70292,19 +70585,19 @@ <translation type="unfinished" /> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1045" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1046" /> <location filename="../QScintilla/SearchReplaceWidget.py" line="597" /> <location filename="../QScintilla/SearchReplaceWidget.py" line="559" /> <source>'{0}' was not found.</source> <translation>'{0}' non è stato trovato.</translation> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1198" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1199" /> <source>Replaced {0} occurrences.</source> <translation>Sostituite {0} ricorrenze.</translation> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1204" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1205" /> <source>Nothing replaced because '{0}' was not found.</source> <translation>Nessuna sostituzione perché '{0}' non è stato trovato.</translation> </message> @@ -83466,7 +83759,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="315" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> <location filename="../MicroPython/Devices/TeensyDevices.py" line="154" /> <source>Flash MicroPython Firmware</source> <translation type="unfinished" /> @@ -83507,17 +83800,17 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="317" /> <source><p>Teensy 4.0 and Teensy 4.1 are flashed using the 'Teensy Loader' application. Make sure you downloaded the MicroPython or CircuitPython .hex file.</p><p>See <a href="{0}">the PJRC Teensy web site</a> for details.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="338" /> - <source>Start 'Teensy Loader'</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/Devices/TeensyDevices.py" line="339" /> + <source>Start 'Teensy Loader'</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="340" /> <source><p>The 'Teensy Loader' application <b>teensy</b> could not be started. Ensure it is in the application search path or start it manually.</p></source> <translation type="unfinished" /> </message>
--- a/src/eric7/i18n/eric7_pt.ts Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/i18n/eric7_pt.ts Thu May 04 17:58:52 2023 +0200 @@ -1804,77 +1804,77 @@ <context> <name>BaseDevice</name> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="196" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="199" /> <source>Device Data Not Available</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="197" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="200" /> <source><p>The device data is not available. Try to connect to the device again. Aborting...</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="250" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="253" /> <source>Unsupported Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="260" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="263" /> <source>REPL is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="279" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="282" /> <source>Plotter is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="298" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="301" /> <source>Running scripts is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="317" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="320" /> <source>File Manager is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="372" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="375" /> <source>Select Device Directory</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="373" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="376" /> <source>Select the directory for the connected device:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="519" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="528" /> <source>Detected an error without indications.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1464" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1473" /> <source>Operation not supported.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>Yes</source> <translation type="unfinished">Sim</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>No</source> <translation type="unfinished">Não</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>yes</source> <translation type="unfinished">sim</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>no</source> <translation type="unfinished">não</translation> </message> @@ -4229,14 +4229,14 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1128" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1126" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="865" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1577" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1500" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1567" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1490" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1040" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="961" /> <source>The device volume is not available.</source> @@ -4249,94 +4249,94 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1539" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1529" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1005" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="977" /> <source><p>The file <b>{0}</b> exists already. Shall it be replaced?</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1546" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1536" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1012" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="984" /> <source>Aborted</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1195" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1193" /> <source>CircuitPython does not support setting the IPv4 parameters of the WiFi access point.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1266" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1262" /> <source>CircuitPython does not support reporting of connected clients.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1675" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1663" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1342" /> <source>Active</source> <translation type="unfinished">Ativo</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1681" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1351" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1669" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1343" /> <source>Connected</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1352" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1344" /> <source>IPv4 Address</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1353" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1345" /> <source>Netmask</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1354" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1346" /> <source>Gateway</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1355" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1347" /> <source>DNS</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1677" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1356" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1665" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1348" /> <source>MAC-Address</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1357" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1349" /> <source>Chip Type</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1358" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> <source>max. Sockets</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1538" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1528" /> <source>Write Connect Script</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1676" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1664" /> <source>Name</source> <translation type="unfinished">Nome</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1679" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1667" /> <source>Address Type</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1682" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1670" /> <source>Advertising</source> <translation type="unfinished" /> </message> @@ -20683,8 +20683,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1506" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1490" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1498" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1482" /> <location filename="../MicroPython/Devices/EspDevices.py" line="196" /> <source>Erase Flash</source> <translation type="unfinished" /> @@ -20695,7 +20695,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1591" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1583" /> <location filename="../MicroPython/Devices/EspDevices.py" line="203" /> <source>Flash Additional Firmware</source> <translation type="unfinished" /> @@ -20746,8 +20746,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1590" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1549" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1582" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1541" /> <location filename="../MicroPython/Devices/EspDevices.py" line="363" /> <source>'esptool write_flash' Output</source> <translation type="unfinished" /> @@ -20813,68 +20813,68 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="980" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="978" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1209" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1201" /> <source>Active</source> <translation type="unfinished">Ativo</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1210" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1202" /> <source>Name</source> <translation type="unfinished">Nome</translation> </message> <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1203" /> + <source>MAC-Address</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1206" /> + <source>Address Type</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Public</source> + <translation type="unfinished">Público</translation> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Random</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> - <source>MAC-Address</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1214" /> - <source>Address Type</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Public</source> - <translation type="unfinished">Público</translation> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Random</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> <source>Rx-Buffer</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> <source>{0} Bytes</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> <source>MTU</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1491" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1483" /> <source>Shall the flash of the selected device really be erased?</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1505" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1497" /> <source>'esptool erase_flash' Output</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1550" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1542" /> <source>Flash µPy/CPy Firmware</source> <translation type="unfinished" /> </message> @@ -50531,15 +50531,16 @@ </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Serial Link</source> + <source>Device Communication</source> <translation type="unfinished" /> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Timeout for Serial Link Communication:</source> - <translation type="unfinished" /> - </message> - <message> + <source>Serial Link Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Enter the timout value</source> <translation type="unfinished" /> @@ -50547,11 +50548,22 @@ <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source> s</source> <translation type="unfinished" /> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>WebRepl Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>Device Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Select to synchronize the time after connection is established</source> <translation type="unfinished" /> </message> @@ -50644,8 +50656,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="354" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="337" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="364" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="347" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Press to show the password</source> @@ -50987,8 +50999,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="350" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="333" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="360" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="343" /> <source>Press to hide the password</source> <translation type="unfinished" /> </message> @@ -51002,38 +51014,298 @@ </message> </context> <context> + <name>MicroPythonReplEdit</name> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="322" /> + <source>Clear</source> + <translation type="unfinished">Limpar</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="327" /> + <source>Copy</source> + <translation type="unfinished">Copiar</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="333" /> + <source>Paste</source> + <translation type="unfinished">Colar</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="340" /> + <source>Select All</source> + <translation type="unfinished">Selecionar Tudo</translation> + </message> + </context> + <context> + <name>MicroPythonWebreplConnectionDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="97" /> + <source>Press to hide the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="101" /> + <source>Press to show the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>WebREPL Connection</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished">Anfitrião:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished">Porto:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished">Senha:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplDeviceInterface</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="80" /> + <source>WebREPL Password</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="81" /> + <source>Enter the WebREPL password:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="100" /> + <source>WebREPL Login</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="101" /> + <source>The login to the selected device 'webrepl' failed. The given password may be incorrect.</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlAddEditDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>WebREPL URL</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Name:</source> + <translation type="unfinished">Nome:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a unique name for the WebREPL connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Description:</source> + <translation type="unfinished">Descrição:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a short description to be shown in the selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished">Anfitrião:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished">Porto:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished">Senha:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlsConfigDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="133" /> + <source>Remove Selected WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="134" /> + <source>Shall the selected WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="150" /> + <source>Remove All WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="151" /> + <source>Shall all WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Name</source> + <translation type="unfinished">Nome</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Description</source> + <translation type="unfinished">Descrição</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>URL</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to add a new entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Add...</source> + <translation type="unfinished">Adicionar...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to edit the selected entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Edit...</source> + <translation type="unfinished">Editar...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove the selected entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove</source> + <translation type="unfinished">Retirar</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove all entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove All</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source><b>Note:</b> The name of an entry must be unique amongst the list.</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>MicroPythonWidget</name> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="247" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="109" /> <source>MicroPython Menu</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="306" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="145" /> <source><h3>The QtSerialPort package is not available.<br/>MicroPython support is deactivated.</h3></source> <translation type="unfinished" /> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="347" /> - <source>%n supported device(s) detected.</source> + <location filename="../MicroPython/MicroPythonWidget.py" line="173" /> + <source>%n supported serial device(s) detected.</source> <translation type="unfinished"> <numerusform /> - <numerusform /> </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="361" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="187" /> <source>{0} - {1} ({2})</source> <comment>board name, description, port name</comment> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="381" /> - <source>No supported devices detected.</source> + <location filename="../MicroPython/MicroPythonWidget.py" line="210" /> + <source>No supported serial devices detected.</source> <translation type="unfinished" /> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="385" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="214" /> <source> %n unknown device(s) for manual selection.</source> <translation type="unfinished"> @@ -51042,70 +51314,63 @@ </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="392" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="221" /> <source>Manual Selection</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="427" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="232" /> + <source>WebREPL (manual)</source> + <translation type="unfinished" /> + </message> + <message numerus="yes"> + <location filename="../MicroPython/MicroPythonWidget.py" line="251" /> + <source> +%n WebREPL connection(s) defined.</source> + <translation type="unfinished"> + <numerusform /> + </translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="311" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="282" /> <source>Unknown MicroPython Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="428" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="283" /> <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:{1}"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="440" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="295" /> <source>{0} (0x{1:04x}/0x{2:04x})</source> <comment>description, VId, PId</comment> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="457" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="312" /> <source>Would you like to add them to the list of manually configured devices?</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="592" /> - <source>Clear</source> - <translation type="unfinished">Limpar</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="597" /> - <source>Copy</source> - <translation type="unfinished">Copiar</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="603" /> - <source>Paste</source> - <translation type="unfinished">Colar</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="610" /> - <source>Select All</source> - <translation type="unfinished">Selecionar Tudo</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="636" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="451" /> <source>Press to disconnect the current device</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="641" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> <source>Press to connect the selected device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="673" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="488" /> <source>No device attached</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="674" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="489" /> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -51114,353 +51379,358 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="703" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="518" /> <source>Start REPL</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="704" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="519" /> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1232" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1221" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="716" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="705" /> <source>Serial Device Connect</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="706" /> <source><p>The device at serial port <b>{0}</b> does not respond. It may not have a MicroPython firmware flashed.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1233" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="717" /> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1291" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1282" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1273" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="780" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="771" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="762" /> <source>Run Script</source> <translation type="unfinished">Executar Script</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1274" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="763" /> <source>There is no editor open. Abort...</source> <translation type="unfinished" /> </message> <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="772" /> + <source>The current editor does not contain a script. Abort...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="781" /> + <source><p>Cannot run script.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="817" /> + <source>Start Chart</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="818" /> + <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="833" /> + <source>µPy Chart</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="850" /> + <source>Unsaved Chart Data</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="851" /> + <source>The chart contains unsaved data.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="899" /> + <source>Start File Manager</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="900" /> + <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="920" /> + <source>µPy Files</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="985" /> + <source>Downloads</source> + <translation type="unfinished">Descargas</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1032" /> + <source>Show Version</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1035" /> + <source>Show Implementation</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038" /> + <source>Show Board Data</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1043" /> + <source>Synchronize Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1046" /> + <source>Show Device Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1048" /> + <source>Show Local Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051" /> + <source>Show Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1055" /> + <source>Show Builtin Modules</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1059" /> + <source>Install Package</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1672" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1669" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1063" /> + <source>Install Packages</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1448" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1073" /> + <source>Compile Python File</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1472" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1463" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1077" /> + <source>Compile Current Editor</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1098" /> + <source>Download Firmware</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1105" /> + <source>Show Documentation</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1108" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1109" /> + <source>Flash UF2 Device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1112" /> + <source>Manage Unknown Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1115" /> + <source>Ignored Serial Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118" /> + <source>Configure</source> + <translation type="unfinished">Configurar</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1127" /> + <source><h3>Device Version Information</h3></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1138" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1134" /> + <source>Device Version Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1139" /> + <source>No version information available.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1163" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1155" /> + <source>unknown</source> + <translation type="unfinished">desconhecido</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169" /> + <source> ({0})</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1185" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1176" /> + <source>Device Implementation Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1177" /> + <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186" /> + <source>No device implementation information available.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1225" /> + <source><p>The time of the connected device was synchronized with the local time.</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1247" /> + <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1255" /> + <source><h3>Device Date and Time</h3><p>{0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1271" /> + <source>Device Date and Time</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1283" /> - <source>The current editor does not contain a script. Abort...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1292" /> - <source><p>Cannot run script.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1328" /> - <source>Start Chart</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1329" /> - <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1344" /> - <source>µPy Chart</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1361" /> - <source>Unsaved Chart Data</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1362" /> - <source>The chart contains unsaved data.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1410" /> - <source>Start File Manager</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1411" /> - <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431" /> - <source>µPy Files</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1496" /> - <source>Downloads</source> - <translation type="unfinished">Descargas</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1543" /> - <source>Show Version</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> - <source>Show Implementation</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1549" /> - <source>Show Board Data</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1735" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1554" /> - <source>Synchronize Time</source> + <source>Local Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1284" /> + <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1325" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308" /> + <source>Date and Time</source> + <translation type="unfinished">Data e Hora</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1309" /> + <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1326" /> + <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1350" /> + <source>Error handling device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1351" /> + <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1393" /> + <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1419" /> + <source>Python Files (*.py);;All Files (*)</source> + <translation type="unfinished">Ficheiros Python (*.py);;Ficheiros Todos (*)</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1429" /> + <source>The Python file <b>{0}</b> does not exist. Aborting...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1438" /> + <source>'mpy-cross' Output</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1464" /> + <source>The current editor does not contain a Python file. Aborting...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1556" /> + <source>Add Unknown Devices</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1557" /> - <source>Show Device Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1559" /> - <source>Show Local Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> - <source>Show Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> - <source>Show Builtin Modules</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2144" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1578" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1570" /> - <source>Install Package</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2183" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2180" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1574" /> - <source>Install Packages</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1959" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1584" /> - <source>Compile Python File</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1983" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1974" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1588" /> - <source>Compile Current Editor</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1609" /> - <source>Download Firmware</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> - <source>Show Documentation</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1619" /> - <source>Convert To UF2</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1620" /> - <source>Flash UF2 Device</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1623" /> - <source>Manage Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> - <source>Ignored Serial Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1629" /> - <source>Configure</source> - <translation type="unfinished">Configurar</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> - <source><h3>Device Version Information</h3></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1649" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1645" /> - <source>Device Version Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1650" /> - <source>No version information available.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1666" /> - <source>unknown</source> - <translation type="unfinished">desconhecido</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1680" /> - <source> ({0})</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1696" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1687" /> - <source>Device Implementation Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1688" /> - <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1697" /> - <source>No device implementation information available.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1736" /> - <source><p>The time of the connected device was synchronized with the local time.</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1758" /> - <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1766" /> - <source><h3>Device Date and Time</h3><p>{0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> - <source>Device Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1794" /> - <source>Local Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1795" /> - <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1836" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1819" /> - <source>Date and Time</source> - <translation type="unfinished">Data e Hora</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1820" /> - <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1837" /> - <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1861" /> - <source>Error handling device</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1862" /> - <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1904" /> - <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1930" /> - <source>Python Files (*.py);;All Files (*)</source> - <translation type="unfinished">Ficheiros Python (*.py);;Ficheiros Todos (*)</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1940" /> - <source>The Python file <b>{0}</b> does not exist. Aborting...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1949" /> - <source>'mpy-cross' Output</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1975" /> - <source>The current editor does not contain a Python file. Aborting...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2067" /> - <source>Add Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2068" /> <source>Select the devices to be added:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2117" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1606" /> <source>Plus any modules on the filesystem.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2169" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1658" /> <source>Package '{0}' was installed successfully.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2184" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1673" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <source>Press to check for connected devices</source> + <source>Press to detect connected devices and repopulate the device selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> + <source>Press to edit the list of configured WebREPL connections.</source> <translation type="unfinished" /> </message> <message> @@ -51483,6 +51753,29 @@ <source>Press to open a chart window to display data receive from the selected device</source> <translation type="unfinished" /> </message> + <message numerus="yes"> + <source>%n supported device(s) detected.</source> + <translation type="vanished"> + <numerusform /> + <numerusform /> + </translation> + </message> + <message> + <source>Clear</source> + <translation type="vanished">Limpar</translation> + </message> + <message> + <source>Copy</source> + <translation type="vanished">Copiar</translation> + </message> + <message> + <source>Paste</source> + <translation type="vanished">Colar</translation> + </message> + <message> + <source>Select All</source> + <translation type="vanished">Selecionar Tudo</translation> + </message> </context> <context> <name>MicrobitDevice</name> @@ -51646,29 +51939,29 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="569" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="571" /> <source>MicroPython Firmware for BBC micro:bit V1</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="601" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="588" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="573" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="603" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="590" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="575" /> <source>DAPLink Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="580" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="582" /> <source>MicroPython Firmware for BBC micro:bit V2</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="584" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="586" /> <source>CircuitPython Firmware for BBC micro:bit V2</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="597" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="599" /> <source>MicroPython Firmware</source> <translation type="unfinished" /> </message> @@ -58879,18 +59172,18 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1815" /> + <location filename="../Preferences/__init__.py" line="1817" /> <source>Export Preferences</source> <translation>Exportar Preferências</translation> </message> <message> + <location filename="../Preferences/__init__.py" line="1846" /> + <location filename="../Preferences/__init__.py" line="1819" /> + <source>Properties File (*.ini);;All Files (*)</source> + <translation>Ficheiro de Propriedades (*.ini);;Ficheiros Todos (*)</translation> + </message> + <message> <location filename="../Preferences/__init__.py" line="1844" /> - <location filename="../Preferences/__init__.py" line="1817" /> - <source>Properties File (*.ini);;All Files (*)</source> - <translation>Ficheiro de Propriedades (*.ini);;Ficheiros Todos (*)</translation> - </message> - <message> - <location filename="../Preferences/__init__.py" line="1842" /> <source>Import Preferences</source> <translation>Importar Preferências</translation> </message> @@ -69139,88 +69432,88 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="364" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="365" /> <source>MicroPython Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="368" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="369" /> <source>Pimoroni Pico Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="371" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="372" /> <source>CircuitPython Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="375" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="376" /> <source>CircuitPython Libraries</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="427" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="428" /> <source>Set Country</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="983" /> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="618" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="978" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="617" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1093" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1088" /> <source>Pico Wireless does not support setting the IPv4 parameters of the WiFi access point.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1168" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1161" /> <source>Pico Wireless does not support reporting of connected clients.</source> <translation type="unfinished" /> </message> <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1248" /> + <source>Active</source> + <translation type="unfinished">Ativo</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1249" /> + <source>Connected</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1252" /> + <source>Status</source> + <translation type="unfinished">Estado</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1256" /> + <source>Hostname</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1257" /> + <source>IPv4 Address</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1258" /> + <source>Netmask</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1259" /> - <source>Active</source> - <translation type="unfinished">Ativo</translation> + <source>Gateway</source> + <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1260" /> - <source>Connected</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1263" /> - <source>Status</source> - <translation type="unfinished">Estado</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1267" /> - <source>Hostname</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1268" /> - <source>IPv4 Address</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1269" /> - <source>Netmask</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1270" /> - <source>Gateway</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1271" /> <source>DNS</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1272" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1261" /> <source>MAC-Address</source> <translation type="unfinished" /> </message> @@ -70150,19 +70443,19 @@ <translation type="unfinished" /> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1045" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1046" /> <location filename="../QScintilla/SearchReplaceWidget.py" line="597" /> <location filename="../QScintilla/SearchReplaceWidget.py" line="559" /> <source>'{0}' was not found.</source> <translation type="unfinished" /> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1198" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1199" /> <source>Replaced {0} occurrences.</source> <translation type="unfinished" /> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1204" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1205" /> <source>Nothing replaced because '{0}' was not found.</source> <translation type="unfinished" /> </message> @@ -83276,7 +83569,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="315" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> <location filename="../MicroPython/Devices/TeensyDevices.py" line="154" /> <source>Flash MicroPython Firmware</source> <translation type="unfinished" /> @@ -83317,17 +83610,17 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="317" /> <source><p>Teensy 4.0 and Teensy 4.1 are flashed using the 'Teensy Loader' application. Make sure you downloaded the MicroPython or CircuitPython .hex file.</p><p>See <a href="{0}">the PJRC Teensy web site</a> for details.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="338" /> - <source>Start 'Teensy Loader'</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/Devices/TeensyDevices.py" line="339" /> + <source>Start 'Teensy Loader'</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="340" /> <source><p>The 'Teensy Loader' application <b>teensy</b> could not be started. Ensure it is in the application search path or start it manually.</p></source> <translation type="unfinished" /> </message>
--- a/src/eric7/i18n/eric7_ru.ts Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/i18n/eric7_ru.ts Thu May 04 17:58:52 2023 +0200 @@ -1730,77 +1730,77 @@ <context> <name>BaseDevice</name> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="196" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="199" /> <source>Device Data Not Available</source> <translation>Данные устройства недоступны</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="197" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="200" /> <source><p>The device data is not available. Try to connect to the device again. Aborting...</p></source> <translation><p>Данные устройства недоступны. Попробуйте снова подключиться к устройству. Прерывание...</p></translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="250" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="253" /> <source>Unsupported Device</source> <translation>Неподдерживаемое устройство</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="260" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="263" /> <source>REPL is not supported by this device.</source> <translation>REPL не поддерживается этим устройством.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="279" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="282" /> <source>Plotter is not supported by this device.</source> <translation>Плоттер не поддерживается этим устройством.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="298" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="301" /> <source>Running scripts is not supported by this device.</source> <translation>Выполнение скриптов не поддерживается этим устройством.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="317" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="320" /> <source>File Manager is not supported by this device.</source> <translation>Менеджер файлов не поддерживается этим устройством.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="372" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="375" /> <source>Select Device Directory</source> <translation>Выберите директорию устройства</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="373" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="376" /> <source>Select the directory for the connected device:</source> <translation>Выберите директорию для подсоединенного устройства:</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="519" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="528" /> <source>Detected an error without indications.</source> <translation>Обнаружена неиндексированная ошибка.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1464" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1473" /> <source>Operation not supported.</source> <translation>Операция не поддерживается.</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>Yes</source> <translation>Да</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>No</source> <translation>Нет</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>yes</source> <translation>да</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>no</source> <translation>нет</translation> </message> @@ -4158,14 +4158,14 @@ <translation>Выберите путь к подмонтированному устройству:</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1128" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1126" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="865" /> <source>unknown ({0})</source> <translation>неизвестная ({0})</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1577" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1500" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1567" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1490" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1040" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="961" /> <source>The device volume is not available.</source> @@ -4178,94 +4178,94 @@ <translation>Записать учетные данные WiFi</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1539" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1529" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1005" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="977" /> <source><p>The file <b>{0}</b> exists already. Shall it be replaced?</p></source> <translation><p>Файл <b>{0}</b> уже существует. Заменить?</p></translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1546" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1536" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1012" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="984" /> <source>Aborted</source> <translation>Прервано</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1195" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1193" /> <source>CircuitPython does not support setting the IPv4 parameters of the WiFi access point.</source> <translation>CircuitPython не поддерживает настройку параметров IPv4 точки доступа WiFi.</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1266" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1262" /> <source>CircuitPython does not support reporting of connected clients.</source> <translation>CircuitPython не поддерживает создание отчетов о подключенных клиентах.</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1675" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1663" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1342" /> <source>Active</source> <translation>Активно</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1681" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1351" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1669" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1343" /> <source>Connected</source> <translation>Подключено</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1352" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1344" /> <source>IPv4 Address</source> <translation /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1353" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1345" /> <source>Netmask</source> <translation>Сетевая маска</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1354" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1346" /> <source>Gateway</source> <translation>Шлюз</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1355" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1347" /> <source>DNS</source> <translation>DNS</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1677" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1356" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1665" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1348" /> <source>MAC-Address</source> <translation>MAC-адрес</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1357" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1349" /> <source>Chip Type</source> <translation>Тип чипа</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1358" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> <source>max. Sockets</source> <translation>макс. сокетов</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1538" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1528" /> <source>Write Connect Script</source> <translation>Записать сценарий подключения</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1676" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1664" /> <source>Name</source> <translation>Имя</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1679" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1667" /> <source>Address Type</source> <translation>Тип адреса</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1682" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1670" /> <source>Advertising</source> <translation>Оповещение</translation> </message> @@ -20576,8 +20576,8 @@ <translation>Показать версии MicroPython</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1506" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1490" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1498" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1482" /> <location filename="../MicroPython/Devices/EspDevices.py" line="196" /> <source>Erase Flash</source> <translation>Очистить Flash-память</translation> @@ -20588,7 +20588,7 @@ <translation>Прошить микрокод MicroPython</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1591" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1583" /> <location filename="../MicroPython/Devices/EspDevices.py" line="203" /> <source>Flash Additional Firmware</source> <translation>Прошить дополнительный микрокод</translation> @@ -20639,8 +20639,8 @@ <translation>Вывод команды 'esptool read_flash'</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1590" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1549" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1582" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1541" /> <location filename="../MicroPython/Devices/EspDevices.py" line="363" /> <source>'esptool write_flash' Output</source> <translation>Вывод команды 'esptool write_flash'</translation> @@ -20706,68 +20706,68 @@ <translation>Ошибка удаления учетных данных: {0}</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="980" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="978" /> <source>unknown ({0})</source> <translation>неизвестная ({0})</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1209" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1201" /> <source>Active</source> <translation>Активно</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1210" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1202" /> <source>Name</source> <translation>Имя</translation> </message> <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1203" /> + <source>MAC-Address</source> + <translation>MAC-адрес</translation> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1206" /> + <source>Address Type</source> + <translation>Тип адреса</translation> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Public</source> + <translation>Публичный</translation> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Random</source> + <translation>Случайный</translation> + </message> + <message> <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> - <source>MAC-Address</source> - <translation>MAC-адрес</translation> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1214" /> - <source>Address Type</source> - <translation>Тип адреса</translation> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Public</source> - <translation>Публичный</translation> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Random</source> - <translation>Случайный</translation> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> <source>Rx-Buffer</source> <translation>Rx-буфер</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> <source>{0} Bytes</source> <translation>{0} байт</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> <source>MTU</source> <translation>MTU</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1491" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1483" /> <source>Shall the flash of the selected device really be erased?</source> <translation>Действительно ли flash-память выбранного устройства должна быть очищена?</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1505" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1497" /> <source>'esptool erase_flash' Output</source> <translation>Вывод команды 'esptool erase_flash'</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1550" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1542" /> <source>Flash µPy/CPy Firmware</source> <translation>Прошить микропрограмму µPy/CPy</translation> </message> @@ -50368,15 +50368,16 @@ </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Serial Link</source> - <translation>Последовательный канал</translation> + <source>Device Communication</source> + <translation type="unfinished" /> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Timeout for Serial Link Communication:</source> - <translation>Задержка соединения по последовательному каналу:</translation> - </message> - <message> + <source>Serial Link Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Enter the timout value</source> <translation>Задайте значение времени ожидания</translation> @@ -50384,11 +50385,22 @@ <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source> s</source> <translation> с</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>WebRepl Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>Device Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Select to synchronize the time after connection is established</source> <translation>Разрешить синхронизировать время после установки соединения</translation> </message> @@ -50481,8 +50493,8 @@ <translation>Введите сетевой пароль</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="354" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="337" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="364" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="347" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Press to show the password</source> @@ -50824,11 +50836,19 @@ <translation>открыто</translation> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="350" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="333" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="360" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="343" /> <source>Press to hide the password</source> <translation>Скрыть пароль</translation> </message> + <message> + <source>Serial Link</source> + <translation type="vanished">Последовательный канал</translation> + </message> + <message> + <source>Timeout for Serial Link Communication:</source> + <translation type="vanished">Задержка соединения по последовательному каналу:</translation> + </message> </context> <context> <name>MicroPythonProgressInfoDialog</name> @@ -50839,39 +50859,298 @@ </message> </context> <context> + <name>MicroPythonReplEdit</name> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="322" /> + <source>Clear</source> + <translation type="unfinished">Очистить</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="327" /> + <source>Copy</source> + <translation type="unfinished">Копировать</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="333" /> + <source>Paste</source> + <translation type="unfinished">Вставить</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="340" /> + <source>Select All</source> + <translation type="unfinished">Выделить всё</translation> + </message> + </context> + <context> + <name>MicroPythonWebreplConnectionDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="97" /> + <source>Press to hide the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="101" /> + <source>Press to show the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>WebREPL Connection</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished">Хост:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished">Порт:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished">Пароль:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished">Тип устройства:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished">Выберите тип устройства</translation> + </message> + </context> + <context> + <name>MicroPythonWebreplDeviceInterface</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="80" /> + <source>WebREPL Password</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="81" /> + <source>Enter the WebREPL password:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="100" /> + <source>WebREPL Login</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="101" /> + <source>The login to the selected device 'webrepl' failed. The given password may be incorrect.</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlAddEditDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>WebREPL URL</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Name:</source> + <translation type="unfinished">Имя:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a unique name for the WebREPL connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Description:</source> + <translation type="unfinished">Описание:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a short description to be shown in the selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished">Хост:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished">Порт:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished">Пароль:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished">Тип устройства:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished">Выберите тип устройства</translation> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlsConfigDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="133" /> + <source>Remove Selected WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="134" /> + <source>Shall the selected WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="150" /> + <source>Remove All WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="151" /> + <source>Shall all WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Name</source> + <translation type="unfinished">Имя</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Description</source> + <translation type="unfinished">Описание</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>URL</source> + <translation type="unfinished">URL</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to add a new entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Add...</source> + <translation type="unfinished">Добавить...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to edit the selected entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Edit...</source> + <translation type="unfinished">Правка...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove the selected entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove</source> + <translation type="unfinished">Удалить</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove all entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove All</source> + <translation type="unfinished">Удалить все</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source><b>Note:</b> The name of an entry must be unique amongst the list.</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>MicroPythonWidget</name> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="247" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="109" /> <source>MicroPython Menu</source> <translation>Меню MicroPython</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="306" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="145" /> <source><h3>The QtSerialPort package is not available.<br/>MicroPython support is deactivated.</h3></source> <translation><h3>Пакет QtSerialPort недоступен.<br/>Поддержка MicroPython деактивирована.</h3></translation> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="347" /> - <source>%n supported device(s) detected.</source> - <translation> - <numerusform>Обнаружено %n поддерживаемое устройство.</numerusform> - <numerusform>Обнаружено %n поддерживаемых устройства.</numerusform> - <numerusform>Обнаружено %n поддерживаемых устройств.</numerusform> + <location filename="../MicroPython/MicroPythonWidget.py" line="173" /> + <source>%n supported serial device(s) detected.</source> + <translation type="unfinished"> + <numerusform /> </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="361" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="187" /> <source>{0} - {1} ({2})</source> <comment>board name, description, port name</comment> <translation>{0} - {1} ({2})</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="381" /> - <source>No supported devices detected.</source> - <translation>Не обнаружены поддерживаемые устройства.</translation> + <location filename="../MicroPython/MicroPythonWidget.py" line="210" /> + <source>No supported serial devices detected.</source> + <translation type="unfinished" /> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="385" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="214" /> <source> %n unknown device(s) for manual selection.</source> <translation> @@ -50884,70 +51163,63 @@ </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="392" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="221" /> <source>Manual Selection</source> <translation>Ручной выбор</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="427" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="232" /> + <source>WebREPL (manual)</source> + <translation type="unfinished" /> + </message> + <message numerus="yes"> + <location filename="../MicroPython/MicroPythonWidget.py" line="251" /> + <source> +%n WebREPL connection(s) defined.</source> + <translation type="unfinished"> + <numerusform /> + </translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="311" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="282" /> <source>Unknown MicroPython Device</source> <translation>Неизвестное устройство MicroPython</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="428" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="283" /> <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:{1}"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> <translation><p>Обнаружены следующие неизвестные последовательные устройства</p><ul><li>{0}</li></ul><p>Если это плата MicroPython, то сообщите о ней вместе с названием платы и кратким описанием по адресу <a href="mailto:{1}"> the eric bug reporting</a>.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="440" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="295" /> <source>{0} (0x{1:04x}/0x{2:04x})</source> <comment>description, VId, PId</comment> <translation>{0} (0x{1:04x}/0x{2:04x})</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="457" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="312" /> <source>Would you like to add them to the list of manually configured devices?</source> <translation>Хотите добавить их в список вручную настроенных устройств?</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="592" /> - <source>Clear</source> - <translation>Очистить</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="597" /> - <source>Copy</source> - <translation>Копировать</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="603" /> - <source>Paste</source> - <translation>Вставить</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="610" /> - <source>Select All</source> - <translation>Выделить всё</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="636" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="451" /> <source>Press to disconnect the current device</source> <translation>Отключить выбранное устройство</translation> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="641" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> <source>Press to connect the selected device</source> <translation>Подключить выбранное устройство</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="673" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="488" /> <source>No device attached</source> <translation>Устройство не подключено</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="674" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="489" /> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -50960,354 +51232,359 @@ И, наконец, нажмите кнопку перезагрузки устройства и подождите несколько секунд, прежде чем повторить попытку.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="703" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="518" /> <source>Start REPL</source> <translation>Запустить REPL</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="704" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="519" /> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation><p>Не удается запустить REPL.</p><p>Причина:</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1232" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1221" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="716" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="705" /> <source>Serial Device Connect</source> <translation>Подсоединение последовательного устройства</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="706" /> <source><p>The device at serial port <b>{0}</b> does not respond. It may not have a MicroPython firmware flashed.</p></source> <translation><p>Устройство не отвечает через последовательный порт <b>{0}</b>. Возможно на нем не установлена прошивка MicroPython.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1233" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="717" /> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation><p>Не удается соединиться с устройством через последовательный порт <b>{0}</b>.</p></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1291" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1282" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1273" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="780" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="771" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="762" /> <source>Run Script</source> <translation>Выполнить скрипт</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1274" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="763" /> <source>There is no editor open. Abort...</source> <translation>Редактор не открыт. Прерывание...</translation> </message> <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="772" /> + <source>The current editor does not contain a script. Abort...</source> + <translation>Текущий редактор не содержит скрипт. Прервать...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="781" /> + <source><p>Cannot run script.</p><p>Reason: {0}</p></source> + <translation><p>Не удается выполнить скрипт.</p><p>Причина: {0}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="817" /> + <source>Start Chart</source> + <translation>Построить диаграмму</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="818" /> + <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> + <translation><p>Не удается построить диаграмму.</p><p>Причина: {0}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="833" /> + <source>µPy Chart</source> + <translation>µPy диаграммы</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="850" /> + <source>Unsaved Chart Data</source> + <translation>Несохраненные данные диаграммы</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="851" /> + <source>The chart contains unsaved data.</source> + <translation>Диаграмма содержит несохраненные данные.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="899" /> + <source>Start File Manager</source> + <translation>Запустить менеджер файлов</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="900" /> + <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> + <translation><p>Не удается запустить менеджер файлов.</p><p>Причина: {0}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="920" /> + <source>µPy Files</source> + <translation>µPy файлы</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="985" /> + <source>Downloads</source> + <translation>Загрузить микрокод / библиотеки</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1032" /> + <source>Show Version</source> + <translation>Показать версию</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1035" /> + <source>Show Implementation</source> + <translation>Показать исполнение</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038" /> + <source>Show Board Data</source> + <translation>Показать данные платы</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1043" /> + <source>Synchronize Time</source> + <translation>Синхронизировать время</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1046" /> + <source>Show Device Time</source> + <translation>Показать время устройства</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1048" /> + <source>Show Local Time</source> + <translation>Показать локальное время</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051" /> + <source>Show Time</source> + <translation>Показать время</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1055" /> + <source>Show Builtin Modules</source> + <translation>Показать встроенные модули</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1059" /> + <source>Install Package</source> + <translation>Установить пакет</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1672" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1669" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1063" /> + <source>Install Packages</source> + <translation>Установить пакеты</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1448" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1073" /> + <source>Compile Python File</source> + <translation>Компилировать файл Python</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1472" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1463" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1077" /> + <source>Compile Current Editor</source> + <translation>Компилировать текущий редактор</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1098" /> + <source>Download Firmware</source> + <translation>Загрузить микрокод</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1105" /> + <source>Show Documentation</source> + <translation>Просмотр документации</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1108" /> + <source>Convert To UF2</source> + <translation>Преобразовать в UF2</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1109" /> + <source>Flash UF2 Device</source> + <translation>Прошивка UF2-устройств</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1112" /> + <source>Manage Unknown Devices</source> + <translation>Менеджер неизвестных устройств</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1115" /> + <source>Ignored Serial Devices</source> + <translation>Проигнорированные последовательные устройства</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118" /> + <source>Configure</source> + <translation>Настройки</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1127" /> + <source><h3>Device Version Information</h3></source> + <translation><h3>Информация о версии устройства</h3></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1138" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1134" /> + <source>Device Version Information</source> + <translation>Информация о версии устройства</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1139" /> + <source>No version information available.</source> + <translation>Информация о версии недоступна.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1163" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1155" /> + <source>unknown</source> + <translation>unknown</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169" /> + <source> ({0})</source> + <translation> ({0})</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1185" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1176" /> + <source>Device Implementation Information</source> + <translation>Информация о исполнении устройства</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1177" /> + <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> + <translation><h3>Информация о реализации устройства</h3><p>Это устройство содержит <b>{0} {1}</b>.</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186" /> + <source>No device implementation information available.</source> + <translation>Информация о реализации устройства отсутствует.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1225" /> + <source><p>The time of the connected device was synchronized with the local time.</p></source> + <translation><p>Время подключенного устройства было синхронизировано с локальным временем.</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1247" /> + <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation><h3>Дата и время устройства</h3><table><tr><td><b>Дата</b></td><td>{0}</td></tr><tr><td><b>Время</b></td><td>{1}</td></tr></table></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1255" /> + <source><h3>Device Date and Time</h3><p>{0}</p></source> + <translation><h3>Дата и время устройства</h3><p>{0}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1271" /> + <source>Device Date and Time</source> + <translation>Дата и время устройства</translation> + </message> + <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1283" /> - <source>The current editor does not contain a script. Abort...</source> - <translation>Текущий редактор не содержит скрипт. Прервать...</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1292" /> - <source><p>Cannot run script.</p><p>Reason: {0}</p></source> - <translation><p>Не удается выполнить скрипт.</p><p>Причина: {0}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1328" /> - <source>Start Chart</source> - <translation>Построить диаграмму</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1329" /> - <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> - <translation><p>Не удается построить диаграмму.</p><p>Причина: {0}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1344" /> - <source>µPy Chart</source> - <translation>µPy диаграммы</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1361" /> - <source>Unsaved Chart Data</source> - <translation>Несохраненные данные диаграммы</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1362" /> - <source>The chart contains unsaved data.</source> - <translation>Диаграмма содержит несохраненные данные.</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1410" /> - <source>Start File Manager</source> - <translation>Запустить менеджер файлов</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1411" /> - <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> - <translation><p>Не удается запустить менеджер файлов.</p><p>Причина: {0}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431" /> - <source>µPy Files</source> - <translation>µPy файлы</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1496" /> - <source>Downloads</source> - <translation>Загрузить микрокод / библиотеки</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1543" /> - <source>Show Version</source> - <translation>Показать версию</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> - <source>Show Implementation</source> - <translation>Показать исполнение</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1549" /> - <source>Show Board Data</source> - <translation>Показать данные платы</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1735" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1554" /> - <source>Synchronize Time</source> - <translation>Синхронизировать время</translation> + <source>Local Date and Time</source> + <translation>Локальные дата и время</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1284" /> + <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation><h3>Локальные дата и время</h3><table><tr><td><b>Дата</b></td><td>{0}</td></tr><tr><td><b>Время</b></td><td>{1}</td></tr></table></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1325" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308" /> + <source>Date and Time</source> + <translation>Дата и время</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1309" /> + <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> + <translation><table><tr><th></th><th>Дата и время локальные</th><th>Дата и время устройства</th></tr><tr><td><b>Дата </b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Время </b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1326" /> + <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> + <translation><table><tr><th>Дата и время локальные</th><th>Дата и время устройства</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1350" /> + <source>Error handling device</source> + <translation>Ошибка при работе с устройством</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1351" /> + <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> + <translation><p>Произошла ошибка при работе с подключаемым устройством.</p><p>Метод: {0}</p><p>Сообщение: {1}</p></translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1393" /> + <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> + <translation>Кросс-компилятор MicroPython <b>mpy-cross</b> не найден. Убедитесь, что он находится в пути поиска, или настройте его на странице конфигурации MicroPython.</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1419" /> + <source>Python Files (*.py);;All Files (*)</source> + <translation>Файлы Python (*.py);;Все файлы (*)</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1429" /> + <source>The Python file <b>{0}</b> does not exist. Aborting...</source> + <translation>Файл Python <b>{0}</b> не существует. Отмена...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1438" /> + <source>'mpy-cross' Output</source> + <translation>Вывод команды 'mpy-cross'</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1464" /> + <source>The current editor does not contain a Python file. Aborting...</source> + <translation>Текущий редактор не содержит файл Python. Отмена...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1556" /> + <source>Add Unknown Devices</source> + <translation>Добавить неизвестное устройство</translation> </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1557" /> - <source>Show Device Time</source> - <translation>Показать время устройства</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1559" /> - <source>Show Local Time</source> - <translation>Показать локальное время</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> - <source>Show Time</source> - <translation>Показать время</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> - <source>Show Builtin Modules</source> - <translation>Показать встроенные модули</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2144" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1578" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1570" /> - <source>Install Package</source> - <translation>Установить пакет</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2183" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2180" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1574" /> - <source>Install Packages</source> - <translation>Установить пакеты</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1959" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1584" /> - <source>Compile Python File</source> - <translation>Компилировать файл Python</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1983" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1974" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1588" /> - <source>Compile Current Editor</source> - <translation>Компилировать текущий редактор</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1609" /> - <source>Download Firmware</source> - <translation>Загрузить микрокод</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> - <source>Show Documentation</source> - <translation>Просмотр документации</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1619" /> - <source>Convert To UF2</source> - <translation>Преобразовать в UF2</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1620" /> - <source>Flash UF2 Device</source> - <translation>Прошивка UF2-устройств</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1623" /> - <source>Manage Unknown Devices</source> - <translation>Менеджер неизвестных устройств</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> - <source>Ignored Serial Devices</source> - <translation>Проигнорированные последовательные устройства</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1629" /> - <source>Configure</source> - <translation>Настройки</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> - <source><h3>Device Version Information</h3></source> - <translation><h3>Информация о версии устройства</h3></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1649" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1645" /> - <source>Device Version Information</source> - <translation>Информация о версии устройства</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1650" /> - <source>No version information available.</source> - <translation>Информация о версии недоступна.</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1666" /> - <source>unknown</source> - <translation>unknown</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1680" /> - <source> ({0})</source> - <translation> ({0})</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1696" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1687" /> - <source>Device Implementation Information</source> - <translation>Информация о исполнении устройства</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1688" /> - <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> - <translation><h3>Информация о реализации устройства</h3><p>Это устройство содержит <b>{0} {1}</b>.</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1697" /> - <source>No device implementation information available.</source> - <translation>Информация о реализации устройства отсутствует.</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1736" /> - <source><p>The time of the connected device was synchronized with the local time.</p></source> - <translation><p>Время подключенного устройства было синхронизировано с локальным временем.</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1758" /> - <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation><h3>Дата и время устройства</h3><table><tr><td><b>Дата</b></td><td>{0}</td></tr><tr><td><b>Время</b></td><td>{1}</td></tr></table></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1766" /> - <source><h3>Device Date and Time</h3><p>{0}</p></source> - <translation><h3>Дата и время устройства</h3><p>{0}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> - <source>Device Date and Time</source> - <translation>Дата и время устройства</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1794" /> - <source>Local Date and Time</source> - <translation>Локальные дата и время</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1795" /> - <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation><h3>Локальные дата и время</h3><table><tr><td><b>Дата</b></td><td>{0}</td></tr><tr><td><b>Время</b></td><td>{1}</td></tr></table></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1836" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1819" /> - <source>Date and Time</source> - <translation>Дата и время</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1820" /> - <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> - <translation><table><tr><th></th><th>Дата и время локальные</th><th>Дата и время устройства</th></tr><tr><td><b>Дата </b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Время </b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1837" /> - <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> - <translation><table><tr><th>Дата и время локальные</th><th>Дата и время устройства</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1861" /> - <source>Error handling device</source> - <translation>Ошибка при работе с устройством</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1862" /> - <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> - <translation><p>Произошла ошибка при работе с подключаемым устройством.</p><p>Метод: {0}</p><p>Сообщение: {1}</p></translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1904" /> - <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> - <translation>Кросс-компилятор MicroPython <b>mpy-cross</b> не найден. Убедитесь, что он находится в пути поиска, или настройте его на странице конфигурации MicroPython.</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1930" /> - <source>Python Files (*.py);;All Files (*)</source> - <translation>Файлы Python (*.py);;Все файлы (*)</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1940" /> - <source>The Python file <b>{0}</b> does not exist. Aborting...</source> - <translation>Файл Python <b>{0}</b> не существует. Отмена...</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1949" /> - <source>'mpy-cross' Output</source> - <translation>Вывод команды 'mpy-cross'</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1975" /> - <source>The current editor does not contain a Python file. Aborting...</source> - <translation>Текущий редактор не содержит файл Python. Отмена...</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2067" /> - <source>Add Unknown Devices</source> - <translation>Добавить неизвестное устройство</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2068" /> <source>Select the devices to be added:</source> <translation>Выборите устройства для добавления:</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2117" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1606" /> <source>Plus any modules on the filesystem.</source> <translation>Плюс любые модули в файловой системе.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2169" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1658" /> <source>Package '{0}' was installed successfully.</source> <translation>Пакет '{0}' успешно установлен.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2184" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1673" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation>Введите через пробел пакеты для установки:</translation> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <source>Press to check for connected devices</source> - <translation>Проверить подключенные устройства</translation> + <source>Press to detect connected devices and repopulate the device selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> + <source>Press to edit the list of configured WebREPL connections.</source> + <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> @@ -51329,6 +51606,38 @@ <source>Press to open a chart window to display data receive from the selected device</source> <translation>Открыть окно для отображения данных, полученных с выбранного устройства</translation> </message> + <message numerus="yes"> + <source>%n supported device(s) detected.</source> + <translation type="vanished"> + <numerusform>Обнаружено %n поддерживаемое устройство.</numerusform> + <numerusform>Обнаружено %n поддерживаемых устройства.</numerusform> + <numerusform>Обнаружено %n поддерживаемых устройств.</numerusform> + </translation> + </message> + <message> + <source>No supported devices detected.</source> + <translation type="vanished">Не обнаружены поддерживаемые устройства.</translation> + </message> + <message> + <source>Clear</source> + <translation type="vanished">Очистить</translation> + </message> + <message> + <source>Copy</source> + <translation type="vanished">Копировать</translation> + </message> + <message> + <source>Paste</source> + <translation type="vanished">Вставить</translation> + </message> + <message> + <source>Select All</source> + <translation type="vanished">Выделить всё</translation> + </message> + <message> + <source>Press to check for connected devices</source> + <translation type="vanished">Проверить подключенные устройства</translation> + </message> </context> <context> <name>MicrobitDevice</name> @@ -51493,29 +51802,29 @@ <translation>Скрипт пуст. Прерывание.</translation> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="569" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="571" /> <source>MicroPython Firmware for BBC micro:bit V1</source> <translation>Микрокод MicroPython для BBC micro:bit V1</translation> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="601" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="588" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="573" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="603" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="590" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="575" /> <source>DAPLink Firmware</source> <translation>Микрокод DAPLink</translation> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="580" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="582" /> <source>MicroPython Firmware for BBC micro:bit V2</source> <translation>Микрокод MicroPython для BBC micro:bit V2</translation> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="584" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="586" /> <source>CircuitPython Firmware for BBC micro:bit V2</source> <translation>Микрокод CircuitPython для BBC micro:bit V2</translation> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="597" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="599" /> <source>MicroPython Firmware</source> <translation>Микрокод MicroPython</translation> </message> @@ -58746,18 +59055,18 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1815" /> + <location filename="../Preferences/__init__.py" line="1817" /> <source>Export Preferences</source> <translation>Экспорт Preferences</translation> </message> <message> + <location filename="../Preferences/__init__.py" line="1846" /> + <location filename="../Preferences/__init__.py" line="1819" /> + <source>Properties File (*.ini);;All Files (*)</source> + <translation>Файлы Preferences (*.ini);;Все файлы (*)</translation> + </message> + <message> <location filename="../Preferences/__init__.py" line="1844" /> - <location filename="../Preferences/__init__.py" line="1817" /> - <source>Properties File (*.ini);;All Files (*)</source> - <translation>Файлы Preferences (*.ini);;Все файлы (*)</translation> - </message> - <message> - <location filename="../Preferences/__init__.py" line="1842" /> <source>Import Preferences</source> <translation>Импорт Preferences</translation> </message> @@ -68966,88 +69275,88 @@ <translation>Версия MicroPython</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="364" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="365" /> <source>MicroPython Firmware</source> <translation>Микрокод MicroPython</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="368" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="369" /> <source>Pimoroni Pico Firmware</source> <translation>Микрокод Pimoroni Pico</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="371" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="372" /> <source>CircuitPython Firmware</source> <translation>Микрокод CircuitPython</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="375" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="376" /> <source>CircuitPython Libraries</source> <translation>Библиотеки CircuitPython</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="427" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="428" /> <source>Set Country</source> <translation>Определить страну</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="983" /> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="618" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="978" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="617" /> <source>unknown ({0})</source> <translation>неизвестная ({0})</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1093" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1088" /> <source>Pico Wireless does not support setting the IPv4 parameters of the WiFi access point.</source> <translation>Pico Wireless не поддерживает настройку параметров IPv4 точки доступа WiFi.</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1168" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1161" /> <source>Pico Wireless does not support reporting of connected clients.</source> <translation>Pico Wireless не поддерживает создание отчетов о подключенных клиентах.</translation> </message> <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1248" /> + <source>Active</source> + <translation>Активно</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1249" /> + <source>Connected</source> + <translation>Подключено</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1252" /> + <source>Status</source> + <translation>Статус</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1256" /> + <source>Hostname</source> + <translation>Имя хоста</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1257" /> + <source>IPv4 Address</source> + <translation>IPv4-адрес</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1258" /> + <source>Netmask</source> + <translation>Сетевая маска</translation> + </message> + <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1259" /> - <source>Active</source> - <translation>Активно</translation> + <source>Gateway</source> + <translation>Шлюз</translation> </message> <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1260" /> - <source>Connected</source> - <translation>Подключено</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1263" /> - <source>Status</source> - <translation>Статус</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1267" /> - <source>Hostname</source> - <translation>Имя хоста</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1268" /> - <source>IPv4 Address</source> - <translation>IPv4-адрес</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1269" /> - <source>Netmask</source> - <translation>Сетевая маска</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1270" /> - <source>Gateway</source> - <translation>Шлюз</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1271" /> <source>DNS</source> <translation>DNS</translation> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1272" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1261" /> <source>MAC-Address</source> <translation>MAC-адрес</translation> </message> @@ -83188,7 +83497,7 @@ <translation>Инструкция прошивки MicroPython</translation> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="315" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> <location filename="../MicroPython/Devices/TeensyDevices.py" line="154" /> <source>Flash MicroPython Firmware</source> <translation>Прошить микрокод MicroPython</translation> @@ -83229,17 +83538,17 @@ <translation>Версия MicroPython</translation> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="317" /> <source><p>Teensy 4.0 and Teensy 4.1 are flashed using the 'Teensy Loader' application. Make sure you downloaded the MicroPython or CircuitPython .hex file.</p><p>See <a href="{0}">the PJRC Teensy web site</a> for details.</p></source> <translation><p>Teensy 4.0 и Teensy 4.1 прошиваются с помощью приложения 'Teensy Loader'. Убедитесь, что вы загрузили .hex-файл MicroPython или CircuitPython.</p><p>Подробности см. на веб-сайте PJRC Teensy <a href="{0}"></a>.</p></translation> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="338" /> - <source>Start 'Teensy Loader'</source> - <translation>Запустить 'Teensy Loader'</translation> - </message> - <message> <location filename="../MicroPython/Devices/TeensyDevices.py" line="339" /> + <source>Start 'Teensy Loader'</source> + <translation>Запустить 'Teensy Loader'</translation> + </message> + <message> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="340" /> <source><p>The 'Teensy Loader' application <b>teensy</b> could not be started. Ensure it is in the application search path or start it manually.</p></source> <translation><p>Не удалось запустить приложение 'Teensy Loader' <b>teensy</b>. Убедитесь, что он указан в пути поиска приложений, или запустите его вручную.</p></translation> </message>
--- a/src/eric7/i18n/eric7_tr.ts Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/i18n/eric7_tr.ts Thu May 04 17:58:52 2023 +0200 @@ -1791,77 +1791,77 @@ <context> <name>BaseDevice</name> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="196" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="199" /> <source>Device Data Not Available</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="197" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="200" /> <source><p>The device data is not available. Try to connect to the device again. Aborting...</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="250" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="253" /> <source>Unsupported Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="260" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="263" /> <source>REPL is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="279" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="282" /> <source>Plotter is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="298" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="301" /> <source>Running scripts is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="317" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="320" /> <source>File Manager is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="372" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="375" /> <source>Select Device Directory</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="373" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="376" /> <source>Select the directory for the connected device:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="519" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="528" /> <source>Detected an error without indications.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1464" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1473" /> <source>Operation not supported.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>Yes</source> <translation type="unfinished">Evet</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>No</source> <translation type="unfinished">Hayır</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>yes</source> <translation type="unfinished">evet</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>no</source> <translation type="unfinished">no</translation> </message> @@ -4215,14 +4215,14 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1128" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1126" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="865" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1577" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1500" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1567" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1490" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1040" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="961" /> <source>The device volume is not available.</source> @@ -4235,94 +4235,94 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1539" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1529" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1005" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="977" /> <source><p>The file <b>{0}</b> exists already. Shall it be replaced?</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1546" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1536" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1012" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="984" /> <source>Aborted</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1195" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1193" /> <source>CircuitPython does not support setting the IPv4 parameters of the WiFi access point.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1266" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1262" /> <source>CircuitPython does not support reporting of connected clients.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1675" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1663" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1342" /> <source>Active</source> <translation type="unfinished">Aktif</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1681" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1351" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1669" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1343" /> <source>Connected</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1352" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1344" /> <source>IPv4 Address</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1353" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1345" /> <source>Netmask</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1354" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1346" /> <source>Gateway</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1355" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1347" /> <source>DNS</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1677" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1356" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1665" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1348" /> <source>MAC-Address</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1357" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1349" /> <source>Chip Type</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1358" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> <source>max. Sockets</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1538" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1528" /> <source>Write Connect Script</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1676" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1664" /> <source>Name</source> <translation type="unfinished">Adı</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1679" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1667" /> <source>Address Type</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1682" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1670" /> <source>Advertising</source> <translation type="unfinished" /> </message> @@ -20600,8 +20600,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1506" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1490" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1498" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1482" /> <location filename="../MicroPython/Devices/EspDevices.py" line="196" /> <source>Erase Flash</source> <translation type="unfinished" /> @@ -20612,7 +20612,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1591" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1583" /> <location filename="../MicroPython/Devices/EspDevices.py" line="203" /> <source>Flash Additional Firmware</source> <translation type="unfinished" /> @@ -20663,8 +20663,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1590" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1549" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1582" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1541" /> <location filename="../MicroPython/Devices/EspDevices.py" line="363" /> <source>'esptool write_flash' Output</source> <translation type="unfinished" /> @@ -20730,68 +20730,68 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="980" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="978" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1209" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1201" /> <source>Active</source> <translation type="unfinished">Aktif</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1210" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1202" /> <source>Name</source> <translation type="unfinished">Adı</translation> </message> <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1203" /> + <source>MAC-Address</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1206" /> + <source>Address Type</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Public</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Random</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> - <source>MAC-Address</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1214" /> - <source>Address Type</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Public</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Random</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> <source>Rx-Buffer</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> <source>{0} Bytes</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> <source>MTU</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1491" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1483" /> <source>Shall the flash of the selected device really be erased?</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1505" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1497" /> <source>'esptool erase_flash' Output</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1550" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1542" /> <source>Flash µPy/CPy Firmware</source> <translation type="unfinished" /> </message> @@ -50403,15 +50403,16 @@ </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Serial Link</source> + <source>Device Communication</source> <translation type="unfinished" /> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Timeout for Serial Link Communication:</source> - <translation type="unfinished" /> - </message> - <message> + <source>Serial Link Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Enter the timout value</source> <translation type="unfinished" /> @@ -50419,11 +50420,22 @@ <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source> s</source> <translation type="unfinished" /> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>WebRepl Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>Device Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Select to synchronize the time after connection is established</source> <translation type="unfinished" /> </message> @@ -50516,8 +50528,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="354" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="337" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="364" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="347" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Press to show the password</source> @@ -50859,8 +50871,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="350" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="333" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="360" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="343" /> <source>Press to hide the password</source> <translation type="unfinished" /> </message> @@ -50874,38 +50886,298 @@ </message> </context> <context> + <name>MicroPythonReplEdit</name> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="322" /> + <source>Clear</source> + <translation type="unfinished">Temizle</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="327" /> + <source>Copy</source> + <translation type="unfinished">Kopyala</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="333" /> + <source>Paste</source> + <translation type="unfinished">Yapıştır</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="340" /> + <source>Select All</source> + <translation type="unfinished">Hepsini Seç</translation> + </message> + </context> + <context> + <name>MicroPythonWebreplConnectionDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="97" /> + <source>Press to hide the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="101" /> + <source>Press to show the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>WebREPL Connection</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished">Sunucu:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished">Bağlantı Noktası:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished">Parola:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplDeviceInterface</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="80" /> + <source>WebREPL Password</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="81" /> + <source>Enter the WebREPL password:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="100" /> + <source>WebREPL Login</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="101" /> + <source>The login to the selected device 'webrepl' failed. The given password may be incorrect.</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlAddEditDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>WebREPL URL</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Name:</source> + <translation type="unfinished">Adı:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a unique name for the WebREPL connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Description:</source> + <translation type="unfinished">Açıklama:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a short description to be shown in the selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished">Sunucu:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished">Bağlantı Noktası:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished">Parola:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlsConfigDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="133" /> + <source>Remove Selected WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="134" /> + <source>Shall the selected WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="150" /> + <source>Remove All WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="151" /> + <source>Shall all WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Name</source> + <translation type="unfinished">Adı</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Description</source> + <translation type="unfinished">Açıklama</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>URL</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to add a new entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Add...</source> + <translation type="unfinished">Ekle...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to edit the selected entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Edit...</source> + <translation type="unfinished">Düzenle...</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove the selected entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove</source> + <translation type="unfinished">Kaldır</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove all entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove All</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source><b>Note:</b> The name of an entry must be unique amongst the list.</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>MicroPythonWidget</name> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="247" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="109" /> <source>MicroPython Menu</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="306" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="145" /> <source><h3>The QtSerialPort package is not available.<br/>MicroPython support is deactivated.</h3></source> <translation type="unfinished" /> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="347" /> - <source>%n supported device(s) detected.</source> + <location filename="../MicroPython/MicroPythonWidget.py" line="173" /> + <source>%n supported serial device(s) detected.</source> <translation type="unfinished"> <numerusform /> - <numerusform /> </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="361" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="187" /> <source>{0} - {1} ({2})</source> <comment>board name, description, port name</comment> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="381" /> - <source>No supported devices detected.</source> + <location filename="../MicroPython/MicroPythonWidget.py" line="210" /> + <source>No supported serial devices detected.</source> <translation type="unfinished" /> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="385" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="214" /> <source> %n unknown device(s) for manual selection.</source> <translation type="unfinished"> @@ -50914,70 +51186,63 @@ </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="392" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="221" /> <source>Manual Selection</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="427" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="232" /> + <source>WebREPL (manual)</source> + <translation type="unfinished" /> + </message> + <message numerus="yes"> + <location filename="../MicroPython/MicroPythonWidget.py" line="251" /> + <source> +%n WebREPL connection(s) defined.</source> + <translation type="unfinished"> + <numerusform /> + </translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="311" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="282" /> <source>Unknown MicroPython Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="428" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="283" /> <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:{1}"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="440" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="295" /> <source>{0} (0x{1:04x}/0x{2:04x})</source> <comment>description, VId, PId</comment> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="457" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="312" /> <source>Would you like to add them to the list of manually configured devices?</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="592" /> - <source>Clear</source> - <translation type="unfinished">Temizle</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="597" /> - <source>Copy</source> - <translation type="unfinished">Kopyala</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="603" /> - <source>Paste</source> - <translation type="unfinished">Yapıştır</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="610" /> - <source>Select All</source> - <translation type="unfinished">Hepsini Seç</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="636" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="451" /> <source>Press to disconnect the current device</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="641" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> <source>Press to connect the selected device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="673" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="488" /> <source>No device attached</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="674" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="489" /> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -50986,353 +51251,358 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="703" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="518" /> <source>Start REPL</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="704" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="519" /> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1232" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1221" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="716" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="705" /> <source>Serial Device Connect</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="706" /> <source><p>The device at serial port <b>{0}</b> does not respond. It may not have a MicroPython firmware flashed.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1233" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="717" /> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1291" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1282" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1273" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="780" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="771" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="762" /> <source>Run Script</source> <translation type="unfinished">Betiği Çalıştır</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1274" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="763" /> <source>There is no editor open. Abort...</source> <translation type="unfinished" /> </message> <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="772" /> + <source>The current editor does not contain a script. Abort...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="781" /> + <source><p>Cannot run script.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="817" /> + <source>Start Chart</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="818" /> + <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="833" /> + <source>µPy Chart</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="850" /> + <source>Unsaved Chart Data</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="851" /> + <source>The chart contains unsaved data.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="899" /> + <source>Start File Manager</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="900" /> + <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="920" /> + <source>µPy Files</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="985" /> + <source>Downloads</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1032" /> + <source>Show Version</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1035" /> + <source>Show Implementation</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038" /> + <source>Show Board Data</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1043" /> + <source>Synchronize Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1046" /> + <source>Show Device Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1048" /> + <source>Show Local Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051" /> + <source>Show Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1055" /> + <source>Show Builtin Modules</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1059" /> + <source>Install Package</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1672" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1669" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1063" /> + <source>Install Packages</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1448" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1073" /> + <source>Compile Python File</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1472" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1463" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1077" /> + <source>Compile Current Editor</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1098" /> + <source>Download Firmware</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1105" /> + <source>Show Documentation</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1108" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1109" /> + <source>Flash UF2 Device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1112" /> + <source>Manage Unknown Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1115" /> + <source>Ignored Serial Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118" /> + <source>Configure</source> + <translation type="unfinished">Yapılandırma</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1127" /> + <source><h3>Device Version Information</h3></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1138" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1134" /> + <source>Device Version Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1139" /> + <source>No version information available.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1163" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1155" /> + <source>unknown</source> + <translation type="unfinished">bilinmeyen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169" /> + <source> ({0})</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1185" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1176" /> + <source>Device Implementation Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1177" /> + <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186" /> + <source>No device implementation information available.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1225" /> + <source><p>The time of the connected device was synchronized with the local time.</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1247" /> + <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1255" /> + <source><h3>Device Date and Time</h3><p>{0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1271" /> + <source>Device Date and Time</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1283" /> - <source>The current editor does not contain a script. Abort...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1292" /> - <source><p>Cannot run script.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1328" /> - <source>Start Chart</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1329" /> - <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1344" /> - <source>µPy Chart</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1361" /> - <source>Unsaved Chart Data</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1362" /> - <source>The chart contains unsaved data.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1410" /> - <source>Start File Manager</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1411" /> - <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431" /> - <source>µPy Files</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1496" /> - <source>Downloads</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1543" /> - <source>Show Version</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> - <source>Show Implementation</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1549" /> - <source>Show Board Data</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1735" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1554" /> - <source>Synchronize Time</source> + <source>Local Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1284" /> + <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1325" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308" /> + <source>Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1309" /> + <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1326" /> + <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1350" /> + <source>Error handling device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1351" /> + <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1393" /> + <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1419" /> + <source>Python Files (*.py);;All Files (*)</source> + <translation type="unfinished">Python Dosyaları (*.py);;Tüm Dosyalar (*)</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1429" /> + <source>The Python file <b>{0}</b> does not exist. Aborting...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1438" /> + <source>'mpy-cross' Output</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1464" /> + <source>The current editor does not contain a Python file. Aborting...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1556" /> + <source>Add Unknown Devices</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1557" /> - <source>Show Device Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1559" /> - <source>Show Local Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> - <source>Show Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> - <source>Show Builtin Modules</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2144" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1578" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1570" /> - <source>Install Package</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2183" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2180" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1574" /> - <source>Install Packages</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1959" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1584" /> - <source>Compile Python File</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1983" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1974" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1588" /> - <source>Compile Current Editor</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1609" /> - <source>Download Firmware</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> - <source>Show Documentation</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1619" /> - <source>Convert To UF2</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1620" /> - <source>Flash UF2 Device</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1623" /> - <source>Manage Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> - <source>Ignored Serial Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1629" /> - <source>Configure</source> - <translation type="unfinished">Yapılandırma</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> - <source><h3>Device Version Information</h3></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1649" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1645" /> - <source>Device Version Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1650" /> - <source>No version information available.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1666" /> - <source>unknown</source> - <translation type="unfinished">bilinmeyen</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1680" /> - <source> ({0})</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1696" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1687" /> - <source>Device Implementation Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1688" /> - <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1697" /> - <source>No device implementation information available.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1736" /> - <source><p>The time of the connected device was synchronized with the local time.</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1758" /> - <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1766" /> - <source><h3>Device Date and Time</h3><p>{0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> - <source>Device Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1794" /> - <source>Local Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1795" /> - <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1836" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1819" /> - <source>Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1820" /> - <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1837" /> - <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1861" /> - <source>Error handling device</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1862" /> - <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1904" /> - <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1930" /> - <source>Python Files (*.py);;All Files (*)</source> - <translation type="unfinished">Python Dosyaları (*.py);;Tüm Dosyalar (*)</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1940" /> - <source>The Python file <b>{0}</b> does not exist. Aborting...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1949" /> - <source>'mpy-cross' Output</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1975" /> - <source>The current editor does not contain a Python file. Aborting...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2067" /> - <source>Add Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2068" /> <source>Select the devices to be added:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2117" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1606" /> <source>Plus any modules on the filesystem.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2169" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1658" /> <source>Package '{0}' was installed successfully.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2184" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1673" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <source>Press to check for connected devices</source> + <source>Press to detect connected devices and repopulate the device selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> + <source>Press to edit the list of configured WebREPL connections.</source> <translation type="unfinished" /> </message> <message> @@ -51355,6 +51625,29 @@ <source>Press to open a chart window to display data receive from the selected device</source> <translation type="unfinished" /> </message> + <message numerus="yes"> + <source>%n supported device(s) detected.</source> + <translation type="vanished"> + <numerusform /> + <numerusform /> + </translation> + </message> + <message> + <source>Clear</source> + <translation type="vanished">Temizle</translation> + </message> + <message> + <source>Copy</source> + <translation type="vanished">Kopyala</translation> + </message> + <message> + <source>Paste</source> + <translation type="vanished">Yapıştır</translation> + </message> + <message> + <source>Select All</source> + <translation type="vanished">Hepsini Seç</translation> + </message> </context> <context> <name>MicrobitDevice</name> @@ -51518,29 +51811,29 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="569" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="571" /> <source>MicroPython Firmware for BBC micro:bit V1</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="601" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="588" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="573" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="603" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="590" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="575" /> <source>DAPLink Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="580" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="582" /> <source>MicroPython Firmware for BBC micro:bit V2</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="584" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="586" /> <source>CircuitPython Firmware for BBC micro:bit V2</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="597" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="599" /> <source>MicroPython Firmware</source> <translation type="unfinished" /> </message> @@ -58749,18 +59042,18 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1815" /> + <location filename="../Preferences/__init__.py" line="1817" /> <source>Export Preferences</source> <translation>Seçenekleri Dışa Aktar</translation> </message> <message> + <location filename="../Preferences/__init__.py" line="1846" /> + <location filename="../Preferences/__init__.py" line="1819" /> + <source>Properties File (*.ini);;All Files (*)</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../Preferences/__init__.py" line="1844" /> - <location filename="../Preferences/__init__.py" line="1817" /> - <source>Properties File (*.ini);;All Files (*)</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../Preferences/__init__.py" line="1842" /> <source>Import Preferences</source> <translation>Seçenekleri İçe Aktar</translation> </message> @@ -69051,88 +69344,88 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="364" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="365" /> <source>MicroPython Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="368" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="369" /> <source>Pimoroni Pico Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="371" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="372" /> <source>CircuitPython Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="375" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="376" /> <source>CircuitPython Libraries</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="427" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="428" /> <source>Set Country</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="983" /> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="618" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="978" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="617" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1093" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1088" /> <source>Pico Wireless does not support setting the IPv4 parameters of the WiFi access point.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1168" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1161" /> <source>Pico Wireless does not support reporting of connected clients.</source> <translation type="unfinished" /> </message> <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1248" /> + <source>Active</source> + <translation type="unfinished">Aktif</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1249" /> + <source>Connected</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1252" /> + <source>Status</source> + <translation type="unfinished">Durum</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1256" /> + <source>Hostname</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1257" /> + <source>IPv4 Address</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1258" /> + <source>Netmask</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1259" /> - <source>Active</source> - <translation type="unfinished">Aktif</translation> + <source>Gateway</source> + <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1260" /> - <source>Connected</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1263" /> - <source>Status</source> - <translation type="unfinished">Durum</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1267" /> - <source>Hostname</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1268" /> - <source>IPv4 Address</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1269" /> - <source>Netmask</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1270" /> - <source>Gateway</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1271" /> <source>DNS</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1272" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1261" /> <source>MAC-Address</source> <translation type="unfinished" /> </message> @@ -70058,19 +70351,19 @@ <translation type="unfinished" /> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1045" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1046" /> <location filename="../QScintilla/SearchReplaceWidget.py" line="597" /> <location filename="../QScintilla/SearchReplaceWidget.py" line="559" /> <source>'{0}' was not found.</source> <translation>'{0}' bulunamadı.</translation> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1198" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1199" /> <source>Replaced {0} occurrences.</source> <translation type="unfinished" /> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1204" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1205" /> <source>Nothing replaced because '{0}' was not found.</source> <translation type="unfinished" /> </message> @@ -83189,7 +83482,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="315" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> <location filename="../MicroPython/Devices/TeensyDevices.py" line="154" /> <source>Flash MicroPython Firmware</source> <translation type="unfinished" /> @@ -83230,17 +83523,17 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="317" /> <source><p>Teensy 4.0 and Teensy 4.1 are flashed using the 'Teensy Loader' application. Make sure you downloaded the MicroPython or CircuitPython .hex file.</p><p>See <a href="{0}">the PJRC Teensy web site</a> for details.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="338" /> - <source>Start 'Teensy Loader'</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/Devices/TeensyDevices.py" line="339" /> + <source>Start 'Teensy Loader'</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="340" /> <source><p>The 'Teensy Loader' application <b>teensy</b> could not be started. Ensure it is in the application search path or start it manually.</p></source> <translation type="unfinished" /> </message>
--- a/src/eric7/i18n/eric7_zh_CN.ts Tue May 02 11:39:09 2023 +0200 +++ b/src/eric7/i18n/eric7_zh_CN.ts Thu May 04 17:58:52 2023 +0200 @@ -1819,77 +1819,77 @@ <context> <name>BaseDevice</name> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="196" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="199" /> <source>Device Data Not Available</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="197" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="200" /> <source><p>The device data is not available. Try to connect to the device again. Aborting...</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="250" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="253" /> <source>Unsupported Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="260" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="263" /> <source>REPL is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="279" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="282" /> <source>Plotter is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="298" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="301" /> <source>Running scripts is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="317" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="320" /> <source>File Manager is not supported by this device.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="372" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="375" /> <source>Select Device Directory</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="373" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="376" /> <source>Select the directory for the connected device:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="519" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="528" /> <source>Detected an error without indications.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1464" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1473" /> <source>Operation not supported.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>Yes</source> <translation type="unfinished">是</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1781" /> <source>No</source> <translation type="unfinished">否</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>yes</source> <translation type="unfinished">是</translation> </message> <message> - <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" /> + <location filename="../MicroPython/Devices/DeviceBase.py" line="1783" /> <source>no</source> <translation type="unfinished">否</translation> </message> @@ -4249,14 +4249,14 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1128" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1126" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="865" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1577" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1500" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1567" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1490" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1040" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="961" /> <source>The device volume is not available.</source> @@ -4269,94 +4269,94 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1539" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1529" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1005" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="977" /> <source><p>The file <b>{0}</b> exists already. Shall it be replaced?</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1546" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1536" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1012" /> <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="984" /> <source>Aborted</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1195" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1193" /> <source>CircuitPython does not support setting the IPv4 parameters of the WiFi access point.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1266" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1262" /> <source>CircuitPython does not support reporting of connected clients.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1675" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1663" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1342" /> <source>Active</source> <translation type="unfinished">活动的</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1681" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1351" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1669" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1343" /> <source>Connected</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1352" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1344" /> <source>IPv4 Address</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1353" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1345" /> <source>Netmask</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1354" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1346" /> <source>Gateway</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1355" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1347" /> <source>DNS</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1677" /> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1356" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1665" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1348" /> <source>MAC-Address</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1357" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1349" /> <source>Chip Type</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1358" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" /> <source>max. Sockets</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1538" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1528" /> <source>Write Connect Script</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1676" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1664" /> <source>Name</source> <translation type="unfinished">名称</translation> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1679" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1667" /> <source>Address Type</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1682" /> + <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1670" /> <source>Advertising</source> <translation type="unfinished" /> </message> @@ -20676,8 +20676,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1506" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1490" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1498" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1482" /> <location filename="../MicroPython/Devices/EspDevices.py" line="196" /> <source>Erase Flash</source> <translation type="unfinished" /> @@ -20688,7 +20688,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1591" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1583" /> <location filename="../MicroPython/Devices/EspDevices.py" line="203" /> <source>Flash Additional Firmware</source> <translation type="unfinished" /> @@ -20739,8 +20739,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1590" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1549" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1582" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1541" /> <location filename="../MicroPython/Devices/EspDevices.py" line="363" /> <source>'esptool write_flash' Output</source> <translation type="unfinished" /> @@ -20806,68 +20806,68 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="980" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="978" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1209" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1201" /> <source>Active</source> <translation type="unfinished">活动的</translation> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1210" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1202" /> <source>Name</source> <translation type="unfinished">名称</translation> </message> <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1203" /> + <source>MAC-Address</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1206" /> + <source>Address Type</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Public</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/EspDevices.py" line="1207" /> + <source>Random</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> - <source>MAC-Address</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1214" /> - <source>Address Type</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Public</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1215" /> - <source>Random</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> <source>Rx-Buffer</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> - <location filename="../MicroPython/Devices/EspDevices.py" line="1219" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1211" /> <source>{0} Bytes</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1221" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1213" /> <source>MTU</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1491" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1483" /> <source>Shall the flash of the selected device really be erased?</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1505" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1497" /> <source>'esptool erase_flash' Output</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/EspDevices.py" line="1550" /> + <location filename="../MicroPython/Devices/EspDevices.py" line="1542" /> <source>Flash µPy/CPy Firmware</source> <translation type="unfinished" /> </message> @@ -50509,15 +50509,16 @@ </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Serial Link</source> + <source>Device Communication</source> <translation type="unfinished" /> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> - <source>Timeout for Serial Link Communication:</source> - <translation type="unfinished" /> - </message> - <message> + <source>Serial Link Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Enter the timout value</source> <translation type="unfinished" /> @@ -50525,11 +50526,22 @@ <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source> s</source> <translation type="unfinished"> 秒</translation> </message> <message> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>WebRepl Timeout:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> + <source>Device Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Select to synchronize the time after connection is established</source> <translation type="unfinished" /> </message> @@ -50622,8 +50634,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="354" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="337" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="364" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="347" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" /> <source>Press to show the password</source> @@ -50965,8 +50977,8 @@ <translation type="unfinished" /> </message> <message> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="350" /> - <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="333" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="360" /> + <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="343" /> <source>Press to hide the password</source> <translation type="unfinished" /> </message> @@ -50980,37 +50992,298 @@ </message> </context> <context> + <name>MicroPythonReplEdit</name> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="322" /> + <source>Clear</source> + <translation type="unfinished">清除</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="327" /> + <source>Copy</source> + <translation type="unfinished">复制</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="333" /> + <source>Paste</source> + <translation type="unfinished">粘贴</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonReplWidget.py" line="340" /> + <source>Select All</source> + <translation type="unfinished">全选</translation> + </message> + </context> + <context> + <name>MicroPythonWebreplConnectionDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="97" /> + <source>Press to hide the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="101" /> + <source>Press to show the password.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>WebREPL Connection</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished">主机:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished">端口:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished">密码:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplDeviceInterface</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="80" /> + <source>WebREPL Password</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="81" /> + <source>Enter the WebREPL password:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="100" /> + <source>WebREPL Login</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="101" /> + <source>The login to the selected device 'webrepl' failed. The given password may be incorrect.</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlAddEditDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>WebREPL URL</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Name:</source> + <translation type="unfinished">名称:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a unique name for the WebREPL connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Description:</source> + <translation type="unfinished">描述:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter a short description to be shown in the selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Host:</source> + <translation type="unfinished">主机:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the host name or IPv4 address of the device.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Port:</source> + <translation type="unfinished">端口:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the port of the WebREPL (empty for default port 8266).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Password:</source> + <translation type="unfinished">密码:</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Enter the password for this device connection.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Device Type:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" /> + <source>Select the device type</source> + <translation type="unfinished" /> + </message> + </context> + <context> + <name>MicroPythonWebreplUrlsConfigDialog</name> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="133" /> + <source>Remove Selected WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="134" /> + <source>Shall the selected WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="150" /> + <source>Remove All WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="151" /> + <source>Shall all WebREPL URLs really be removed?</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>WebREPL URLs</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Name</source> + <translation type="unfinished">名称</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Description</source> + <translation type="unfinished">描述</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>URL</source> + <translation type="unfinished">URL</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to add a new entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Add...</source> + <translation type="unfinished">添加…</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to edit the selected entry.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Edit...</source> + <translation type="unfinished">编辑…</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove the selected entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove</source> + <translation type="unfinished">移除</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Press to remove all entries.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source>Remove All</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" /> + <source><b>Note:</b> The name of an entry must be unique amongst the list.</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>MicroPythonWidget</name> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="247" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="109" /> <source>MicroPython Menu</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="306" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="145" /> <source><h3>The QtSerialPort package is not available.<br/>MicroPython support is deactivated.</h3></source> <translation type="unfinished" /> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="347" /> - <source>%n supported device(s) detected.</source> + <location filename="../MicroPython/MicroPythonWidget.py" line="173" /> + <source>%n supported serial device(s) detected.</source> <translation type="unfinished"> <numerusform /> </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="361" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="187" /> <source>{0} - {1} ({2})</source> <comment>board name, description, port name</comment> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="381" /> - <source>No supported devices detected.</source> + <location filename="../MicroPython/MicroPythonWidget.py" line="210" /> + <source>No supported serial devices detected.</source> <translation type="unfinished" /> </message> <message numerus="yes"> - <location filename="../MicroPython/MicroPythonWidget.py" line="385" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="214" /> <source> %n unknown device(s) for manual selection.</source> <translation type="unfinished"> @@ -51018,70 +51291,63 @@ </translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="392" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="221" /> <source>Manual Selection</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="427" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="232" /> + <source>WebREPL (manual)</source> + <translation type="unfinished" /> + </message> + <message numerus="yes"> + <location filename="../MicroPython/MicroPythonWidget.py" line="251" /> + <source> +%n WebREPL connection(s) defined.</source> + <translation type="unfinished"> + <numerusform /> + </translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="311" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="282" /> <source>Unknown MicroPython Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="428" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="283" /> <source><p>Detected these unknown serial devices</p><ul><li>{0}</li></ul><p>Please report them together with the board name and a short description to <a href="mailto:{1}"> the eric bug reporting address</a> if it is a MicroPython board.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="440" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="295" /> <source>{0} (0x{1:04x}/0x{2:04x})</source> <comment>description, VId, PId</comment> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="457" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="312" /> <source>Would you like to add them to the list of manually configured devices?</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="592" /> - <source>Clear</source> - <translation type="unfinished">清除</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="597" /> - <source>Copy</source> - <translation type="unfinished">复制</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="603" /> - <source>Paste</source> - <translation type="unfinished">粘贴</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="610" /> - <source>Select All</source> - <translation type="unfinished">全选</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="636" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="451" /> <source>Press to disconnect the current device</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="641" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="456" /> <source>Press to connect the selected device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="673" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="488" /> <source>No device attached</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="674" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="489" /> <source>Please ensure the device is plugged into your computer and selected. It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work. @@ -51090,353 +51356,358 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="703" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="518" /> <source>Start REPL</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="704" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="519" /> <source><p>The REPL cannot be started.</p><p>Reason: {0}</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1232" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1221" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="716" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="705" /> <source>Serial Device Connect</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1222" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="706" /> <source><p>The device at serial port <b>{0}</b> does not respond. It may not have a MicroPython firmware flashed.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1233" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="717" /> <source><p>Cannot connect to device at serial port <b>{0}</b>.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1291" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1282" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1273" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="780" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="771" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="762" /> <source>Run Script</source> <translation type="unfinished">运行脚本</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1274" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="763" /> <source>There is no editor open. Abort...</source> <translation type="unfinished" /> </message> <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="772" /> + <source>The current editor does not contain a script. Abort...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="781" /> + <source><p>Cannot run script.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="817" /> + <source>Start Chart</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="818" /> + <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="833" /> + <source>µPy Chart</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="850" /> + <source>Unsaved Chart Data</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="851" /> + <source>The chart contains unsaved data.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="899" /> + <source>Start File Manager</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="900" /> + <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="920" /> + <source>µPy Files</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="985" /> + <source>Downloads</source> + <translation type="unfinished">下载</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1032" /> + <source>Show Version</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1035" /> + <source>Show Implementation</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1038" /> + <source>Show Board Data</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1224" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1043" /> + <source>Synchronize Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1046" /> + <source>Show Device Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1048" /> + <source>Show Local Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1051" /> + <source>Show Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1055" /> + <source>Show Builtin Modules</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1067" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1059" /> + <source>Install Package</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1672" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1669" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1063" /> + <source>Install Packages</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1448" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1073" /> + <source>Compile Python File</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1472" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1463" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1077" /> + <source>Compile Current Editor</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1098" /> + <source>Download Firmware</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1105" /> + <source>Show Documentation</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1108" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1109" /> + <source>Flash UF2 Device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1112" /> + <source>Manage Unknown Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1115" /> + <source>Ignored Serial Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1118" /> + <source>Configure</source> + <translation type="unfinished">配置</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1127" /> + <source><h3>Device Version Information</h3></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1138" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1134" /> + <source>Device Version Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1139" /> + <source>No version information available.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1163" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1155" /> + <source>unknown</source> + <translation type="unfinished">未知</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1169" /> + <source> ({0})</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1185" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1176" /> + <source>Device Implementation Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1177" /> + <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1186" /> + <source>No device implementation information available.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1225" /> + <source><p>The time of the connected device was synchronized with the local time.</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1247" /> + <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1255" /> + <source><h3>Device Date and Time</h3><p>{0}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1271" /> + <source>Device Date and Time</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1283" /> - <source>The current editor does not contain a script. Abort...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1292" /> - <source><p>Cannot run script.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1328" /> - <source>Start Chart</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1329" /> - <source><p>The Chart cannot be started.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1344" /> - <source>µPy Chart</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1361" /> - <source>Unsaved Chart Data</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1362" /> - <source>The chart contains unsaved data.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1410" /> - <source>Start File Manager</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1411" /> - <source><p>The File Manager cannot be started.</p><p>Reason: {0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1431" /> - <source>µPy Files</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1496" /> - <source>Downloads</source> - <translation type="unfinished">下载</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1543" /> - <source>Show Version</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> - <source>Show Implementation</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1549" /> - <source>Show Board Data</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1735" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1554" /> - <source>Synchronize Time</source> + <source>Local Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1284" /> + <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1325" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1308" /> + <source>Date and Time</source> + <translation type="unfinished">日期和时间</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1309" /> + <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1326" /> + <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1350" /> + <source>Error handling device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1351" /> + <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1393" /> + <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1419" /> + <source>Python Files (*.py);;All Files (*)</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1429" /> + <source>The Python file <b>{0}</b> does not exist. Aborting...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1438" /> + <source>'mpy-cross' Output</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1464" /> + <source>The current editor does not contain a Python file. Aborting...</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1556" /> + <source>Add Unknown Devices</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1557" /> - <source>Show Device Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1559" /> - <source>Show Local Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> - <source>Show Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> - <source>Show Builtin Modules</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2144" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1578" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1570" /> - <source>Install Package</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2183" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2180" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1574" /> - <source>Install Packages</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1959" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1584" /> - <source>Compile Python File</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1983" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1974" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1588" /> - <source>Compile Current Editor</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1609" /> - <source>Download Firmware</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> - <source>Show Documentation</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1619" /> - <source>Convert To UF2</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1620" /> - <source>Flash UF2 Device</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1623" /> - <source>Manage Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> - <source>Ignored Serial Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1629" /> - <source>Configure</source> - <translation type="unfinished">配置</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> - <source><h3>Device Version Information</h3></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1649" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1645" /> - <source>Device Version Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1650" /> - <source>No version information available.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1666" /> - <source>unknown</source> - <translation type="unfinished">未知</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1680" /> - <source> ({0})</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1696" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1687" /> - <source>Device Implementation Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1688" /> - <source><h3>Device Implementation Information</h3><p>This device contains <b>{0} {1}{2}</b>.</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1697" /> - <source>No device implementation information available.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1736" /> - <source><p>The time of the connected device was synchronized with the local time.</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1758" /> - <source><h3>Device Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1766" /> - <source><h3>Device Date and Time</h3><p>{0}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> - <source>Device Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1794" /> - <source>Local Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1795" /> - <source><h3>Local Date and Time</h3><table><tr><td><b>Date</b></td><td>{0}</td></tr><tr><td><b>Time</b></td><td>{1}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1836" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1819" /> - <source>Date and Time</source> - <translation type="unfinished">日期和时间</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1820" /> - <source><table><tr><th></th><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td><b>Date</b></td><td align='center'>{0}</td><td align='center'>{2}</td></tr><tr><td><b>Time</b></td><td align='center'>{1}</td><td align='center'>{3}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1837" /> - <source><table><tr><th>Local Date and Time</th><th>Device Date and Time</th></tr><tr><td align='center'>{0} {1}</td><td align='center'>{2}</td></tr></table></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1861" /> - <source>Error handling device</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1862" /> - <source><p>There was an error communicating with the connected device.</p><p>Method: {0}</p><p>Message: {1}</p></source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1904" /> - <source>The MicroPython cross compiler <b>mpy-cross</b> cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1930" /> - <source>Python Files (*.py);;All Files (*)</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1940" /> - <source>The Python file <b>{0}</b> does not exist. Aborting...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1949" /> - <source>'mpy-cross' Output</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1975" /> - <source>The current editor does not contain a Python file. Aborting...</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2067" /> - <source>Add Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2068" /> <source>Select the devices to be added:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2117" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1606" /> <source>Plus any modules on the filesystem.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2169" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1658" /> <source>Package '{0}' was installed successfully.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2184" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1673" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> - <source>Press to check for connected devices</source> + <source>Press to detect connected devices and repopulate the device selector.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.ui" line="0" /> + <source>Press to edit the list of configured WebREPL connections.</source> <translation type="unfinished" /> </message> <message> @@ -51459,6 +51730,28 @@ <source>Press to open a chart window to display data receive from the selected device</source> <translation type="unfinished" /> </message> + <message numerus="yes"> + <source>%n supported device(s) detected.</source> + <translation type="vanished"> + <numerusform /> + </translation> + </message> + <message> + <source>Clear</source> + <translation type="vanished">清除</translation> + </message> + <message> + <source>Copy</source> + <translation type="vanished">复制</translation> + </message> + <message> + <source>Paste</source> + <translation type="vanished">粘贴</translation> + </message> + <message> + <source>Select All</source> + <translation type="vanished">全选</translation> + </message> </context> <context> <name>MicrobitDevice</name> @@ -51622,29 +51915,29 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="569" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="571" /> <source>MicroPython Firmware for BBC micro:bit V1</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="601" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="588" /> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="573" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="603" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="590" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="575" /> <source>DAPLink Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="580" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="582" /> <source>MicroPython Firmware for BBC micro:bit V2</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="584" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="586" /> <source>CircuitPython Firmware for BBC micro:bit V2</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/MicrobitDevices.py" line="597" /> + <location filename="../MicroPython/Devices/MicrobitDevices.py" line="599" /> <source>MicroPython Firmware</source> <translation type="unfinished" /> </message> @@ -58878,18 +59171,18 @@ <context> <name>Preferences</name> <message> - <location filename="../Preferences/__init__.py" line="1815" /> + <location filename="../Preferences/__init__.py" line="1817" /> <source>Export Preferences</source> <translation>导出首选项</translation> </message> <message> + <location filename="../Preferences/__init__.py" line="1846" /> + <location filename="../Preferences/__init__.py" line="1819" /> + <source>Properties File (*.ini);;All Files (*)</source> + <translation>属性文件 (*.ini);;所有文件 (*)</translation> + </message> + <message> <location filename="../Preferences/__init__.py" line="1844" /> - <location filename="../Preferences/__init__.py" line="1817" /> - <source>Properties File (*.ini);;All Files (*)</source> - <translation>属性文件 (*.ini);;所有文件 (*)</translation> - </message> - <message> - <location filename="../Preferences/__init__.py" line="1842" /> <source>Import Preferences</source> <translation>导入首选项</translation> </message> @@ -69301,88 +69594,88 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="364" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="365" /> <source>MicroPython Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="368" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="369" /> <source>Pimoroni Pico Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="371" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="372" /> <source>CircuitPython Firmware</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="375" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="376" /> <source>CircuitPython Libraries</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="427" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="428" /> <source>Set Country</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="983" /> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="618" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="978" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="617" /> <source>unknown ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1093" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1088" /> <source>Pico Wireless does not support setting the IPv4 parameters of the WiFi access point.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1168" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1161" /> <source>Pico Wireless does not support reporting of connected clients.</source> <translation type="unfinished" /> </message> <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1248" /> + <source>Active</source> + <translation type="unfinished">活动的</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1249" /> + <source>Connected</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1252" /> + <source>Status</source> + <translation type="unfinished">状态</translation> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1256" /> + <source>Hostname</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1257" /> + <source>IPv4 Address</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1258" /> + <source>Netmask</source> + <translation type="unfinished" /> + </message> + <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1259" /> - <source>Active</source> - <translation type="unfinished">活动的</translation> + <source>Gateway</source> + <translation type="unfinished" /> </message> <message> <location filename="../MicroPython/Devices/RP2040Devices.py" line="1260" /> - <source>Connected</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1263" /> - <source>Status</source> - <translation type="unfinished">状态</translation> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1267" /> - <source>Hostname</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1268" /> - <source>IPv4 Address</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1269" /> - <source>Netmask</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1270" /> - <source>Gateway</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1271" /> <source>DNS</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/RP2040Devices.py" line="1272" /> + <location filename="../MicroPython/Devices/RP2040Devices.py" line="1261" /> <source>MAC-Address</source> <translation type="unfinished" /> </message> @@ -70316,19 +70609,19 @@ <translation>替换全部</translation> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1045" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1046" /> <location filename="../QScintilla/SearchReplaceWidget.py" line="597" /> <location filename="../QScintilla/SearchReplaceWidget.py" line="559" /> <source>'{0}' was not found.</source> <translation>“{0}”未找到。</translation> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1198" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1199" /> <source>Replaced {0} occurrences.</source> <translation type="unfinished" /> </message> <message> - <location filename="../QScintilla/SearchReplaceWidget.py" line="1204" /> + <location filename="../QScintilla/SearchReplaceWidget.py" line="1205" /> <source>Nothing replaced because '{0}' was not found.</source> <translation type="unfinished" /> </message> @@ -83513,7 +83806,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="315" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> <location filename="../MicroPython/Devices/TeensyDevices.py" line="154" /> <source>Flash MicroPython Firmware</source> <translation type="unfinished" /> @@ -83554,17 +83847,17 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" /> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="317" /> <source><p>Teensy 4.0 and Teensy 4.1 are flashed using the 'Teensy Loader' application. Make sure you downloaded the MicroPython or CircuitPython .hex file.</p><p>See <a href="{0}">the PJRC Teensy web site</a> for details.</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/Devices/TeensyDevices.py" line="338" /> - <source>Start 'Teensy Loader'</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/Devices/TeensyDevices.py" line="339" /> + <source>Start 'Teensy Loader'</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/Devices/TeensyDevices.py" line="340" /> <source><p>The 'Teensy Loader' application <b>teensy</b> could not be started. Ensure it is in the application search path or start it manually.</p></source> <translation type="unfinished" /> </message>