Fri, 17 Mar 2023 19:10:33 +0100
MicroPython
- Added a dialog to enter the parameters to convert a .hex or .bin firmware file to UF2.
--- a/docs/changelog.md Fri Mar 17 11:29:09 2023 +0100 +++ b/docs/changelog.md Fri Mar 17 19:10:33 2023 +0100 @@ -12,6 +12,8 @@ - Added support for Ethernet enabled boards. - Added support for synchronizing the board time via NTP for network enabled boards. + - Added a dialog to enter the parameters to convert a .hex or .bin firmware + file to UF2. - Third Party packages - Upgraded eradicate to version 2.2.0. - Upgraded pipdeptree to version 2.5.2.
--- a/eric7.epj Fri Mar 17 11:29:09 2023 +0100 +++ b/eric7.epj Fri Mar 17 19:10:33 2023 +0100 @@ -63,7 +63,7 @@ "CopyrightMinFileSize": 0, "DocstringType": "eric_black", "EnabledCheckerCategories": "C, D, E, I, M, N, Y, W", - "ExcludeFiles": "*/ThirdParty/*, */coverage/*, */Ui_*.py, */Examples/*, */pycodestyle.py,*/pyflakes/checker.py,*/mccabe.py,*/eradicate.py,*/ast_unparse.py,*/piplicenses.py,*/pipdeptree.py,*/MCUScripts/*", + "ExcludeFiles": "*/ThirdParty/*, */coverage/*, */Ui_*.py, */Examples/*, */pycodestyle.py,*/pyflakes/checker.py,*/mccabe.py,*/eradicate.py,*/ast_unparse.py,*/piplicenses.py,*/pipdeptree.py,*/MCUScripts/*,*/MicroPython/Tools/*", "ExcludeMessages": "C101,E203,E265,E266,E305,E402,M201,M301,M302,M303,M304,M305,M306,M307,M308,M311,M312,M313,M314,M315,M321,M701,M702,M811,M834,N802,N803,N807,N808,N821,W293,W503,Y401,Y402", "FixCodes": "", "FixIssues": false, @@ -339,6 +339,7 @@ "src/eric7/MicroPython/BluetoothDialogs/BluetoothStatusDialog.ui", "src/eric7/MicroPython/BoardDataDialog.ui", "src/eric7/MicroPython/ConnectionSelectionDialog.ui", + "src/eric7/MicroPython/ConvertToUF2Dialog.ui", "src/eric7/MicroPython/Devices/CircuitPythonUpdater/RequirementsDialog.ui", "src/eric7/MicroPython/Devices/CircuitPythonUpdater/ShowBundlesDialog.ui", "src/eric7/MicroPython/Devices/CircuitPythonUpdater/ShowInstalledDialog.ui", @@ -839,6 +840,7 @@ "src/eric7/IconEditor/cursors/eraser-cursor.xpm", "src/eric7/IconEditor/cursors/fill-cursor.xpm", "src/eric7/IconEditor/cursors/paintbrush-cursor.xpm", + "src/eric7/MicroPython/Tools/uf2families.json", "src/eric7/Plugins/UiExtensionPlugins/Translator/icons/engines/deepl-dark.svg", "src/eric7/Plugins/UiExtensionPlugins/Translator/icons/engines/deepl-light.svg", "src/eric7/Plugins/UiExtensionPlugins/Translator/icons/engines/googlev1.svg", @@ -991,7 +993,7 @@ "OTHERTOOLSPARMS": { "Black": { "exclude": "/(\\.direnv|\\.eggs|\\.git|\\.hg|\\.mypy_cache|\\.nox|\\.tox|\\.venv|venv|\\.svn|\\.ipynb_checkpoints|_build|buck-out|build|dist|__pypackages__)/", - "extend-exclude": "/(\n\tExamples/\n\t| ThirdParty/\n\t| coverage/\n | MCUScripts/\n\t| Ui_.*\\.py\n\t| pycodestyle\\.py\n\t| pyflakes/checker\\.py\n\t| mccabe\\.py\n\t| eradicate\\.py\n\t| ast_unparse\\.py\n\t| piplicenses\\.py\n\t| pipdeptree\\.py\n)", + "extend-exclude": "/(\n\tExamples/\n\t| ThirdParty/\n\t| coverage/\n | MCUScripts/\n | MicroPython/Tools/\n\t| Ui_.*\\.py\n\t| pycodestyle\\.py\n\t| pyflakes/checker\\.py\n\t| mccabe\\.py\n\t| eradicate\\.py\n\t| ast_unparse\\.py\n\t| piplicenses\\.py\n\t| pipdeptree\\.py\n)", "force-exclude": "", "line-length": 88, "skip-magic-trailing-comma": false, @@ -1019,6 +1021,7 @@ "*/ThirdParty/*", "*/coverage/*", "*/MCUScripts/*", + "*/MicroPython/Tools/*", "*/Ui_*.py", "*/pycodestyle.py", "*/pyflakes/checker.py", @@ -1303,6 +1306,7 @@ "src/eric7/MicroPython/BluetoothDialogs/__init__.py", "src/eric7/MicroPython/BoardDataDialog.py", "src/eric7/MicroPython/ConnectionSelectionDialog.py", + "src/eric7/MicroPython/ConvertToUF2Dialog.py", "src/eric7/MicroPython/Devices/CircuitPythonDevices.py", "src/eric7/MicroPython/Devices/CircuitPythonUpdater/CircuitPythonUpdaterInterface.py", "src/eric7/MicroPython/Devices/CircuitPythonUpdater/CircupFunctions.py", @@ -1348,6 +1352,8 @@ "src/eric7/MicroPython/MipPackageDialog.py", "src/eric7/MicroPython/NtpParametersDialog.py", "src/eric7/MicroPython/ShowModulesDialog.py", + "src/eric7/MicroPython/Tools/__init__.py", + "src/eric7/MicroPython/Tools/uf2conv.py", "src/eric7/MicroPython/UF2FlashDialog.py", "src/eric7/MicroPython/UnknownDevicesDialog.py", "src/eric7/MicroPython/WifiDialogs/WifiApConfigDialog.py",
--- a/src/eric7/APIs/Python3/eric7.api Fri Mar 17 11:29:09 2023 +0100 +++ b/src/eric7/APIs/Python3/eric7.api Fri Mar 17 19:10:33 2023 +0100 @@ -2588,6 +2588,12 @@ eric7.MicroPython.ConnectionSelectionDialog.ConnectionSelectionDialog.on_deviceTypeComboBox_currentTextChanged?4(txt) eric7.MicroPython.ConnectionSelectionDialog.ConnectionSelectionDialog.on_portNameComboBox_currentTextChanged?4(txt) eric7.MicroPython.ConnectionSelectionDialog.ConnectionSelectionDialog?1(ports, currentPort, currentType, parent=None) +eric7.MicroPython.ConvertToUF2Dialog.ConvertToUF2Dialog.ConvertScript?7 +eric7.MicroPython.ConvertToUF2Dialog.ConvertToUF2Dialog.FamiliesFile?7 +eric7.MicroPython.ConvertToUF2Dialog.ConvertToUF2Dialog.on_convertButton_clicked?4() +eric7.MicroPython.ConvertToUF2Dialog.ConvertToUF2Dialog.on_familiesComboBox_currentTextChanged?4(family) +eric7.MicroPython.ConvertToUF2Dialog.ConvertToUF2Dialog.on_firmwarePicker_textChanged?4(firmware) +eric7.MicroPython.ConvertToUF2Dialog.ConvertToUF2Dialog?1(parent=None) eric7.MicroPython.Devices.CircuitPythonDevices.CircuitPythonDevice.DeviceVolumeName?7 eric7.MicroPython.Devices.CircuitPythonDevices.CircuitPythonDevice.activateBluetoothInterface?4() eric7.MicroPython.Devices.CircuitPythonDevices.CircuitPythonDevice.addDeviceMenuEntries?4(menu) @@ -3059,6 +3065,29 @@ eric7.MicroPython.ShowModulesDialog.ShowModulesDialog.getSelection?4() eric7.MicroPython.ShowModulesDialog.ShowModulesDialog.on_modulesList_itemChanged?4(item) eric7.MicroPython.ShowModulesDialog.ShowModulesDialog?1(modulesList, selectionMode=False, info="", parent=None) +eric7.MicroPython.Tools.uf2conv.Block.encode?4(blockno, numblocks) +eric7.MicroPython.Tools.uf2conv.Block?1(addr) +eric7.MicroPython.Tools.uf2conv.INFO_FILE?7 +eric7.MicroPython.Tools.uf2conv.UF2_MAGIC_END?7 +eric7.MicroPython.Tools.uf2conv.UF2_MAGIC_START0?7 +eric7.MicroPython.Tools.uf2conv.UF2_MAGIC_START1?7 +eric7.MicroPython.Tools.uf2conv.appstartaddr?7 +eric7.MicroPython.Tools.uf2conv.board_id?4(path) +eric7.MicroPython.Tools.uf2conv.convert_from_hex_to_uf2?4(buf) +eric7.MicroPython.Tools.uf2conv.convert_from_uf2?4(buf) +eric7.MicroPython.Tools.uf2conv.convert_to_carray?4(file_content) +eric7.MicroPython.Tools.uf2conv.convert_to_uf2?4(file_content) +eric7.MicroPython.Tools.uf2conv.error?4(msg) +eric7.MicroPython.Tools.uf2conv.familyid?7 +eric7.MicroPython.Tools.uf2conv.get_drives?4() +eric7.MicroPython.Tools.uf2conv.has_info?4(d) +eric7.MicroPython.Tools.uf2conv.is_hex?4(buf) +eric7.MicroPython.Tools.uf2conv.is_uf2?4(buf) +eric7.MicroPython.Tools.uf2conv.list_drives?4() +eric7.MicroPython.Tools.uf2conv.load_families?4() +eric7.MicroPython.Tools.uf2conv.main?4() +eric7.MicroPython.Tools.uf2conv.to_str?4(b) +eric7.MicroPython.Tools.uf2conv.write_file?4(name, buf) eric7.MicroPython.UF2FlashDialog.SupportedUF2Boards?7 eric7.MicroPython.UF2FlashDialog.UF2FlashDialog.DeviceTypeRole?7 eric7.MicroPython.UF2FlashDialog.UF2FlashDialog.DeviceVidPidRole?7
--- a/src/eric7/APIs/Python3/eric7.bas Fri Mar 17 11:29:09 2023 +0100 +++ b/src/eric7/APIs/Python3/eric7.bas Fri Mar 17 19:10:33 2023 +0100 @@ -130,6 +130,7 @@ ConfigurationWindow EricMainWindow Connection QTcpSocket ConnectionSelectionDialog QDialog Ui_ConnectionSelectionDialog +ConvertToUF2Dialog QDialog Ui_ConvertToUF2Dialog CookieExceptionsModel QAbstractTableModel CookieJar QNetworkCookieJar CookiesConfigurationDialog QDialog Ui_CookiesConfigurationDialog
--- a/src/eric7/Documentation/Help/source.qhp Fri Mar 17 11:29:09 2023 +0100 +++ b/src/eric7/Documentation/Help/source.qhp Fri Mar 17 19:10:33 2023 +0100 @@ -303,6 +303,9 @@ <section title="eric7.MicroPython.EthernetDialogs.IPv4AddressDialog" ref="eric7.MicroPython.EthernetDialogs.IPv4AddressDialog.html" /> <section title="eric7.MicroPython.EthernetDialogs.WiznetUtilities" ref="eric7.MicroPython.EthernetDialogs.WiznetUtilities.html" /> </section> + <section title="eric7.MicroPython.Tools" ref="index-eric7.MicroPython.Tools.html"> + <section title="eric7.MicroPython.Tools.uf2conv" ref="eric7.MicroPython.Tools.uf2conv.html" /> + </section> <section title="eric7.MicroPython.WifiDialogs" ref="index-eric7.MicroPython.WifiDialogs.html"> <section title="eric7.MicroPython.WifiDialogs.WifiApConfigDialog" ref="eric7.MicroPython.WifiDialogs.WifiApConfigDialog.html" /> <section title="eric7.MicroPython.WifiDialogs.WifiApStationsDialog" ref="eric7.MicroPython.WifiDialogs.WifiApStationsDialog.html" /> @@ -315,6 +318,7 @@ <section title="eric7.MicroPython.AddEditDevicesDialog" ref="eric7.MicroPython.AddEditDevicesDialog.html" /> <section title="eric7.MicroPython.BoardDataDialog" ref="eric7.MicroPython.BoardDataDialog.html" /> <section title="eric7.MicroPython.ConnectionSelectionDialog" ref="eric7.MicroPython.ConnectionSelectionDialog.html" /> + <section title="eric7.MicroPython.ConvertToUF2Dialog" ref="eric7.MicroPython.ConvertToUF2Dialog.html" /> <section title="eric7.MicroPython.IgnoredDevicesDialog" ref="eric7.MicroPython.IgnoredDevicesDialog.html" /> <section title="eric7.MicroPython.MicroPythonDeviceInterface" ref="eric7.MicroPython.MicroPythonDeviceInterface.html" /> <section title="eric7.MicroPython.MicroPythonFileManager" ref="eric7.MicroPython.MicroPythonFileManager.html" /> @@ -2236,6 +2240,9 @@ <keyword name="BlackReport.path_ignored" id="BlackReport.path_ignored" ref="eric7.CodeFormatting.BlackFormattingDialog.html#BlackReport.path_ignored" /> <keyword name="BlackStatistics" id="BlackStatistics" ref="eric7.CodeFormatting.BlackFormattingDialog.html#BlackStatistics" /> <keyword name="BlackUtilities (Module)" id="BlackUtilities (Module)" ref="eric7.CodeFormatting.BlackUtilities.html" /> + <keyword name="Block" id="Block" ref="eric7.MicroPython.Tools.uf2conv.html#Block" /> + <keyword name="Block (Constructor)" id="Block (Constructor)" ref="eric7.MicroPython.Tools.uf2conv.html#Block.__init__" /> + <keyword name="Block.encode" id="Block.encode" ref="eric7.MicroPython.Tools.uf2conv.html#Block.encode" /> <keyword name="BluetoothAdvertisement" id="BluetoothAdvertisement" ref="eric7.MicroPython.BluetoothDialogs.BluetoothAdvertisement.html#BluetoothAdvertisement" /> <keyword name="BluetoothAdvertisement (Constructor)" id="BluetoothAdvertisement (Constructor)" ref="eric7.MicroPython.BluetoothDialogs.BluetoothAdvertisement.html#BluetoothAdvertisement.__init__" /> <keyword name="BluetoothAdvertisement (Module)" id="BluetoothAdvertisement (Module)" ref="eric7.MicroPython.BluetoothDialogs.BluetoothAdvertisement.html" /> @@ -3508,6 +3515,17 @@ <keyword name="ConnectionSelectionDialog.getData" id="ConnectionSelectionDialog.getData" ref="eric7.MicroPython.ConnectionSelectionDialog.html#ConnectionSelectionDialog.getData" /> <keyword name="ConnectionSelectionDialog.on_deviceTypeComboBox_currentTextChanged" id="ConnectionSelectionDialog.on_deviceTypeComboBox_currentTextChanged" ref="eric7.MicroPython.ConnectionSelectionDialog.html#ConnectionSelectionDialog.on_deviceTypeComboBox_currentTextChanged" /> <keyword name="ConnectionSelectionDialog.on_portNameComboBox_currentTextChanged" id="ConnectionSelectionDialog.on_portNameComboBox_currentTextChanged" ref="eric7.MicroPython.ConnectionSelectionDialog.html#ConnectionSelectionDialog.on_portNameComboBox_currentTextChanged" /> + <keyword name="ConvertToUF2Dialog" id="ConvertToUF2Dialog" ref="eric7.MicroPython.ConvertToUF2Dialog.html#ConvertToUF2Dialog" /> + <keyword name="ConvertToUF2Dialog (Constructor)" id="ConvertToUF2Dialog (Constructor)" ref="eric7.MicroPython.ConvertToUF2Dialog.html#ConvertToUF2Dialog.__init__" /> + <keyword name="ConvertToUF2Dialog (Module)" id="ConvertToUF2Dialog (Module)" ref="eric7.MicroPython.ConvertToUF2Dialog.html" /> + <keyword name="ConvertToUF2Dialog.__conversionFinished" id="ConvertToUF2Dialog.__conversionFinished" ref="eric7.MicroPython.ConvertToUF2Dialog.html#ConvertToUF2Dialog.__conversionFinished" /> + <keyword name="ConvertToUF2Dialog.__populateFamilyComboBox" id="ConvertToUF2Dialog.__populateFamilyComboBox" ref="eric7.MicroPython.ConvertToUF2Dialog.html#ConvertToUF2Dialog.__populateFamilyComboBox" /> + <keyword name="ConvertToUF2Dialog.__readError" id="ConvertToUF2Dialog.__readError" ref="eric7.MicroPython.ConvertToUF2Dialog.html#ConvertToUF2Dialog.__readError" /> + <keyword name="ConvertToUF2Dialog.__readOutput" id="ConvertToUF2Dialog.__readOutput" ref="eric7.MicroPython.ConvertToUF2Dialog.html#ConvertToUF2Dialog.__readOutput" /> + <keyword name="ConvertToUF2Dialog.__updateConvertButton" id="ConvertToUF2Dialog.__updateConvertButton" ref="eric7.MicroPython.ConvertToUF2Dialog.html#ConvertToUF2Dialog.__updateConvertButton" /> + <keyword name="ConvertToUF2Dialog.on_convertButton_clicked" id="ConvertToUF2Dialog.on_convertButton_clicked" ref="eric7.MicroPython.ConvertToUF2Dialog.html#ConvertToUF2Dialog.on_convertButton_clicked" /> + <keyword name="ConvertToUF2Dialog.on_familiesComboBox_currentTextChanged" id="ConvertToUF2Dialog.on_familiesComboBox_currentTextChanged" ref="eric7.MicroPython.ConvertToUF2Dialog.html#ConvertToUF2Dialog.on_familiesComboBox_currentTextChanged" /> + <keyword name="ConvertToUF2Dialog.on_firmwarePicker_textChanged" id="ConvertToUF2Dialog.on_firmwarePicker_textChanged" ref="eric7.MicroPython.ConvertToUF2Dialog.html#ConvertToUF2Dialog.on_firmwarePicker_textChanged" /> <keyword name="CookieExceptionsModel" id="CookieExceptionsModel" ref="eric7.WebBrowser.CookieJar.CookieExceptionsModel.html#CookieExceptionsModel" /> <keyword name="CookieExceptionsModel (Constructor)" id="CookieExceptionsModel (Constructor)" ref="eric7.WebBrowser.CookieJar.CookieExceptionsModel.html#CookieExceptionsModel.__init__" /> <keyword name="CookieExceptionsModel (Module)" id="CookieExceptionsModel (Module)" ref="eric7.WebBrowser.CookieJar.CookieExceptionsModel.html" /> @@ -10884,6 +10902,7 @@ <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.__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" /> @@ -16808,6 +16827,7 @@ <keyword name="ToolGroupConfigurationDialog.on_newButton_clicked" id="ToolGroupConfigurationDialog.on_newButton_clicked" ref="eric7.Preferences.ToolGroupConfigurationDialog.html#ToolGroupConfigurationDialog.on_newButton_clicked" /> <keyword name="ToolGroupConfigurationDialog.on_upButton_clicked" id="ToolGroupConfigurationDialog.on_upButton_clicked" ref="eric7.Preferences.ToolGroupConfigurationDialog.html#ToolGroupConfigurationDialog.on_upButton_clicked" /> <keyword name="Toolbox (Package)" id="Toolbox (Package)" ref="index-eric7.Toolbox.html" /> + <keyword name="Tools (Package)" id="Tools (Package)" ref="index-eric7.MicroPython.Tools.html" /> <keyword name="Tools (Package)" id="Tools (Package)" ref="index-eric7.Tools.html" /> <keyword name="Tools (Package)" id="Tools (Package)" ref="index-eric7.WebBrowser.Tools.html" /> <keyword name="Translation" id="Translation" ref="eric7.Tools.TRPreviewer.html#Translation" /> @@ -19145,6 +19165,7 @@ <keyword name="blackListCalls (Module)" id="blackListCalls (Module)" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListCalls.html" /> <keyword name="blackListImports (Module)" id="blackListImports (Module)" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.blackListImports.html" /> <keyword name="blank_lines" id="blank_lines" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#blank_lines" /> + <keyword name="board_id" id="board_id" ref="eric7.MicroPython.Tools.uf2conv.html#board_id" /> <keyword name="break_after_binary_operator" id="break_after_binary_operator" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#break_after_binary_operator" /> <keyword name="break_before_binary_operator" id="break_before_binary_operator" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#break_before_binary_operator" /> <keyword name="calculateEndline" id="calculateEndline" ref="eric7.Utilities.ClassBrowsers.pyclbr.html#calculateEndline" /> @@ -19222,6 +19243,10 @@ <keyword name="continued_indentation" id="continued_indentation" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#continued_indentation" /> <keyword name="convertLineEnds" id="convertLineEnds" ref="eric7.Utilities.__init__.html#convertLineEnds" /> <keyword name="convertPasswords" id="convertPasswords" ref="eric7.Preferences.__init__.html#convertPasswords" /> + <keyword name="convert_from_hex_to_uf2" id="convert_from_hex_to_uf2" ref="eric7.MicroPython.Tools.uf2conv.html#convert_from_hex_to_uf2" /> + <keyword name="convert_from_uf2" id="convert_from_uf2" ref="eric7.MicroPython.Tools.uf2conv.html#convert_from_uf2" /> + <keyword name="convert_to_carray" id="convert_to_carray" ref="eric7.MicroPython.Tools.uf2conv.html#convert_to_carray" /> + <keyword name="convert_to_uf2" id="convert_to_uf2" ref="eric7.MicroPython.Tools.uf2conv.html#convert_to_uf2" /> <keyword name="copyDesktopFile" id="copyDesktopFile" ref="eric7.eric7_post_install.html#copyDesktopFile" /> <keyword name="copyLinuxMetaData" id="copyLinuxMetaData" ref="eric7.eric7_post_install.html#copyLinuxMetaData" /> <keyword name="copyMetaFile" id="copyMetaFile" ref="eric7.eric7_post_install.html#copyMetaFile" /> @@ -19474,6 +19499,7 @@ <keyword name="eric7_virtualenv (Module)" id="eric7_virtualenv (Module)" ref="eric7.eric7_virtualenv.html" /> <keyword name="eric7config (Module)" id="eric7config (Module)" ref="eric7.eric7config.html" /> <keyword name="eric7dbgstub (Module)" id="eric7dbgstub (Module)" ref="eric7.DebugClients.Python.eric7dbgstub.html" /> + <keyword name="error" id="error" ref="eric7.MicroPython.Tools.uf2conv.html#error" /> <keyword name="escape_entities" id="escape_entities" ref="eric7.Utilities.__init__.html#escape_entities" /> <keyword name="escape_uentities" id="escape_uentities" ref="eric7.Utilities.__init__.html#escape_uentities" /> <keyword name="escapedBytesRepresentation" id="escapedBytesRepresentation" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#escapedBytesRepresentation" /> @@ -19749,6 +19775,7 @@ <keyword name="get_class_members" id="get_class_members" ref="eric7.DebugClients.Python.FlexCompleter.html#get_class_members" /> <keyword name="get_coding" id="get_coding" ref="eric7.Utilities.__init__.html#get_coding" /> <keyword name="get_codingBytes" id="get_codingBytes" ref="eric7.Utilities.__init__.html#get_codingBytes" /> + <keyword name="get_drives" id="get_drives" ref="eric7.MicroPython.Tools.uf2conv.html#get_drives" /> <keyword name="get_installed_distributions" id="get_installed_distributions" ref="eric7.PipInterface.pipdeptree.html#get_installed_distributions" /> <keyword name="get_output_fields" id="get_output_fields" ref="eric7.PipInterface.piplicenses.html#get_output_fields" /> <keyword name="get_packages" id="get_packages" ref="eric7.PipInterface.piplicenses.html#get_packages" /> @@ -19769,6 +19796,7 @@ <keyword name="hasEnvironmentEntry" id="hasEnvironmentEntry" ref="eric7.SystemUtilities.OSUtilities.html#hasEnvironmentEntry" /> <keyword name="hasEric6Configuration" id="hasEric6Configuration" ref="eric7.Preferences.__init__.html#hasEric6Configuration" /> <keyword name="hasShell" id="hasShell" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.injectionShell.html#hasShell" /> + <keyword name="has_info" id="has_info" ref="eric7.MicroPython.Tools.uf2conv.html#has_info" /> <keyword name="hashPassword" id="hashPassword" ref="eric7.Utilities.crypto.py3PBKDF2.html#hashPassword" /> <keyword name="hashPasswordTuple" id="hashPasswordTuple" ref="eric7.Utilities.crypto.py3PBKDF2.html#hashPasswordTuple" /> <keyword name="hg (Module)" id="hg (Module)" ref="eric7.Plugins.VcsPlugins.vcsMercurial.hg.html" /> @@ -19847,7 +19875,9 @@ <keyword name="isWaylandSession" id="isWaylandSession" ref="eric7.SystemUtilities.DesktopUtilities.html#isWaylandSession" /> <keyword name="isWindowsPlatform" id="isWindowsPlatform" ref="eric7.DebugClients.Python.DebugUtilities.html#isWindowsPlatform" /> <keyword name="isWindowsPlatform" id="isWindowsPlatform" ref="eric7.SystemUtilities.OSUtilities.html#isWindowsPlatform" /> + <keyword name="is_hex" id="is_hex" ref="eric7.MicroPython.Tools.uf2conv.html#is_hex" /> <keyword name="is_string_literal" id="is_string_literal" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.pycodestyle.html#is_string_literal" /> + <keyword name="is_uf2" id="is_uf2" ref="eric7.MicroPython.Tools.uf2conv.html#is_uf2" /> <keyword name="isinpath" id="isinpath" ref="eric7.SystemUtilities.FileSystemUtilities.html#isinpath" /> <keyword name="jinja2Templates (Module)" id="jinja2Templates (Module)" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.jinja2Templates.html" /> <keyword name="joinext" id="joinext" ref="eric7.SystemUtilities.FileSystemUtilities.html#joinext" /> @@ -19864,9 +19894,12 @@ <keyword name="linerange_fix" id="linerange_fix" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Security.SecurityUtils.html#linerange_fix" /> <keyword name="linesep" id="linesep" ref="eric7.Utilities.__init__.html#linesep" /> <keyword name="linestarts" id="linestarts" ref="eric7.UI.PythonDisViewer.html#linestarts" /> + <keyword name="list_drives" id="list_drives" ref="eric7.MicroPython.Tools.uf2conv.html#list_drives" /> <keyword name="listdirStat" id="listdirStat" ref="eric7.MicroPython.MicroPythonFileSystemUtilities.html#listdirStat" /> <keyword name="loadTranslatorForLocale" id="loadTranslatorForLocale" ref="eric7.Toolbox.Startup.html#loadTranslatorForLocale" /> <keyword name="loadTranslators" id="loadTranslators" ref="eric7.Toolbox.Startup.html#loadTranslators" /> + <keyword name="load_families" id="load_families" ref="eric7.MicroPython.Tools.uf2conv.html#load_families" /> + <keyword name="main" id="main" ref="eric7.MicroPython.Tools.uf2conv.html#main" /> <keyword name="main" id="main" ref="eric7.PipInterface.pipdeptree.html#main" /> <keyword name="main" id="main" ref="eric7.PipInterface.piplicenses.html#main" /> <keyword name="main" id="main" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Miscellaneous.eradicate.html#main" /> @@ -20168,6 +20201,7 @@ <keyword name="toNativeSeparators" id="toNativeSeparators" ref="eric7.SystemUtilities.FileSystemUtilities.html#toNativeSeparators" /> <keyword name="toSecondLevelDomain" id="toSecondLevelDomain" ref="eric7.WebBrowser.AdBlock.AdBlockRule.html#toSecondLevelDomain" /> <keyword name="toString" id="toString" ref="eric7.Plugins.WizardPlugins.SetupWizard.SetupCfgUtilities.html#toString" /> + <keyword name="to_str" id="to_str" ref="eric7.MicroPython.Tools.uf2conv.html#to_str" /> <keyword name="tomlCheckSyntax (Module)" id="tomlCheckSyntax (Module)" ref="eric7.Plugins.CheckerPlugins.SyntaxChecker.tomlCheckSyntax.html" /> <keyword name="tomlSyntaxBatchCheck" id="tomlSyntaxBatchCheck" ref="eric7.Plugins.CheckerPlugins.SyntaxChecker.tomlCheckSyntax.html#tomlSyntaxBatchCheck" /> <keyword name="tomlSyntaxCheck" id="tomlSyntaxCheck" ref="eric7.Plugins.CheckerPlugins.SyntaxChecker.tomlCheckSyntax.html#tomlSyntaxCheck" /> @@ -20186,6 +20220,7 @@ <keyword name="translations (Module)" id="translations (Module)" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.translations.html" /> <keyword name="tryCompile" id="tryCompile" ref="eric7.UI.PythonDisViewer.html#tryCompile" /> <keyword name="tryExcept (Module)" id="tryExcept (Module)" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.tryExcept.html" /> + <keyword name="uf2conv (Module)" id="uf2conv (Module)" ref="eric7.MicroPython.Tools.uf2conv.html" /> <keyword name="uiStartUp" id="uiStartUp" ref="eric7.eric7_ide.html#uiStartUp" /> <keyword name="uic (Module)" id="uic (Module)" ref="eric7.Utilities.uic.html" /> <keyword name="unescape_uentities" id="unescape_uentities" ref="eric7.Utilities.__init__.html#unescape_uentities" /> @@ -20232,6 +20267,7 @@ <keyword name="workerTask" id="workerTask" ref="eric7.Plugins.CheckerPlugins.SyntaxChecker.tomlCheckSyntax.html#workerTask" /> <keyword name="workerTask" id="workerTask" ref="eric7.Plugins.CheckerPlugins.SyntaxChecker.yamlCheckSyntax.html#workerTask" /> <keyword name="writeEncodedFile" id="writeEncodedFile" ref="eric7.Utilities.__init__.html#writeEncodedFile" /> + <keyword name="write_file" id="write_file" ref="eric7.MicroPython.Tools.uf2conv.html#write_file" /> <keyword name="yamlCheckSyntax (Module)" id="yamlCheckSyntax (Module)" ref="eric7.Plugins.CheckerPlugins.SyntaxChecker.yamlCheckSyntax.html" /> <keyword name="yamlLoad (Module)" id="yamlLoad (Module)" ref="eric7.Plugins.CheckerPlugins.CodeStyleChecker.Security.Checks.yamlLoad.html" /> <keyword name="yamlSyntaxBatchCheck" id="yamlSyntaxBatchCheck" ref="eric7.Plugins.CheckerPlugins.SyntaxChecker.yamlCheckSyntax.html#yamlSyntaxBatchCheck" /> @@ -20453,6 +20489,7 @@ <file>eric7.MicroPython.BluetoothDialogs.BluetoothStatusDialog.html</file> <file>eric7.MicroPython.BoardDataDialog.html</file> <file>eric7.MicroPython.ConnectionSelectionDialog.html</file> + <file>eric7.MicroPython.ConvertToUF2Dialog.html</file> <file>eric7.MicroPython.Devices.CircuitPythonDevices.html</file> <file>eric7.MicroPython.Devices.CircuitPythonUpdater.CircuitPythonUpdaterInterface.html</file> <file>eric7.MicroPython.Devices.CircuitPythonUpdater.CircupFunctions.html</file> @@ -20486,6 +20523,7 @@ <file>eric7.MicroPython.MipPackageDialog.html</file> <file>eric7.MicroPython.NtpParametersDialog.html</file> <file>eric7.MicroPython.ShowModulesDialog.html</file> + <file>eric7.MicroPython.Tools.uf2conv.html</file> <file>eric7.MicroPython.UF2FlashDialog.html</file> <file>eric7.MicroPython.UnknownDevicesDialog.html</file> <file>eric7.MicroPython.WifiDialogs.WifiApConfigDialog.html</file> @@ -21474,6 +21512,7 @@ <file>index-eric7.MicroPython.Devices.EspDialogs.html</file> <file>index-eric7.MicroPython.Devices.html</file> <file>index-eric7.MicroPython.EthernetDialogs.html</file> + <file>index-eric7.MicroPython.Tools.html</file> <file>index-eric7.MicroPython.WifiDialogs.html</file> <file>index-eric7.MicroPython.html</file> <file>index-eric7.MultiProject.html</file>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.ConvertToUF2Dialog.html Fri Mar 17 19:10:33 2023 +0100 @@ -0,0 +1,198 @@ +<!DOCTYPE html> +<html><head> +<title>eric7.MicroPython.ConvertToUF2Dialog</title> +<meta charset="UTF-8"> +<link rel="stylesheet" href="styles.css"> +</head> +<body> +<a NAME="top" ID="top"></a> +<h1>eric7.MicroPython.ConvertToUF2Dialog</h1> + +<p> +Module implementing a dialog to convert a .hex or .bin firmware file to .uf2. +</p> +<h3>Global Attributes</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> + +<table> + +<tr> +<td><a href="#ConvertToUF2Dialog">ConvertToUF2Dialog</a></td> +<td>Class implementing a dialog to convert a .hex or .bin firmware file to .uf2.</td> +</tr> +</table> +<h3>Functions</h3> + +<table> +<tr><td>None</td></tr> +</table> +<hr /> +<hr /> +<a NAME="ConvertToUF2Dialog" ID="ConvertToUF2Dialog"></a> +<h2>ConvertToUF2Dialog</h2> + +<p> + Class implementing a dialog to convert a .hex or .bin firmware file to .uf2. +</p> +<h3>Derived from</h3> +QDialog, Ui_ConvertToUF2Dialog +<h3>Class Attributes</h3> + +<table> +<tr><td>ConvertScript</td></tr><tr><td>FamiliesFile</td></tr> +</table> +<h3>Class Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> + +<table> + +<tr> +<td><a href="#ConvertToUF2Dialog.__init__">ConvertToUF2Dialog</a></td> +<td>Constructor</td> +</tr> +<tr> +<td><a href="#ConvertToUF2Dialog.__conversionFinished">__conversionFinished</a></td> +<td>Private slot handling the end of the conversion process.</td> +</tr> +<tr> +<td><a href="#ConvertToUF2Dialog.__populateFamilyComboBox">__populateFamilyComboBox</a></td> +<td>Private method to populate the chip family combo box with values read from 'uf2families.json' file.</td> +</tr> +<tr> +<td><a href="#ConvertToUF2Dialog.__readError">__readError</a></td> +<td>Private slot to read the standard error channel of the conversion process.</td> +</tr> +<tr> +<td><a href="#ConvertToUF2Dialog.__readOutput">__readOutput</a></td> +<td>Private slot to read the standard output channel of the conversion process.</td> +</tr> +<tr> +<td><a href="#ConvertToUF2Dialog.__updateConvertButton">__updateConvertButton</a></td> +<td>Private method to set the enabled status of the 'Convert' button.</td> +</tr> +<tr> +<td><a href="#ConvertToUF2Dialog.on_convertButton_clicked">on_convertButton_clicked</a></td> +<td>Private slot activating the conversion process.</td> +</tr> +<tr> +<td><a href="#ConvertToUF2Dialog.on_familiesComboBox_currentTextChanged">on_familiesComboBox_currentTextChanged</a></td> +<td>Private slot handling the selection of a chip family.</td> +</tr> +<tr> +<td><a href="#ConvertToUF2Dialog.on_firmwarePicker_textChanged">on_firmwarePicker_textChanged</a></td> +<td>Private slot handling a change of the firmware file name.</td> +</tr> +</table> +<h3>Static Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> + +<a NAME="ConvertToUF2Dialog.__init__" ID="ConvertToUF2Dialog.__init__"></a> +<h4>ConvertToUF2Dialog (Constructor)</h4> +<b>ConvertToUF2Dialog</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="ConvertToUF2Dialog.__conversionFinished" ID="ConvertToUF2Dialog.__conversionFinished"></a> +<h4>ConvertToUF2Dialog.__conversionFinished</h4> +<b>__conversionFinished</b>(<i>exitCode, exitStatus</i>) + +<p> + Private slot handling the end of the conversion process. +</p> +<dl> + +<dt><i>exitCode</i> (int)</dt> +<dd> +exit code of the process +</dd> +<dt><i>exitStatus</i> (QProcess.ExitStatus)</dt> +<dd> +exit status of the process +</dd> +</dl> +<a NAME="ConvertToUF2Dialog.__populateFamilyComboBox" ID="ConvertToUF2Dialog.__populateFamilyComboBox"></a> +<h4>ConvertToUF2Dialog.__populateFamilyComboBox</h4> +<b>__populateFamilyComboBox</b>(<i></i>) + +<p> + Private method to populate the chip family combo box with values read from + 'uf2families.json' file. +</p> +<a NAME="ConvertToUF2Dialog.__readError" ID="ConvertToUF2Dialog.__readError"></a> +<h4>ConvertToUF2Dialog.__readError</h4> +<b>__readError</b>(<i></i>) + +<p> + Private slot to read the standard error channel of the conversion process. +</p> +<a NAME="ConvertToUF2Dialog.__readOutput" ID="ConvertToUF2Dialog.__readOutput"></a> +<h4>ConvertToUF2Dialog.__readOutput</h4> +<b>__readOutput</b>(<i></i>) + +<p> + Private slot to read the standard output channel of the conversion process. +</p> +<a NAME="ConvertToUF2Dialog.__updateConvertButton" ID="ConvertToUF2Dialog.__updateConvertButton"></a> +<h4>ConvertToUF2Dialog.__updateConvertButton</h4> +<b>__updateConvertButton</b>(<i></i>) + +<p> + Private method to set the enabled status of the 'Convert' button. +</p> +<a NAME="ConvertToUF2Dialog.on_convertButton_clicked" ID="ConvertToUF2Dialog.on_convertButton_clicked"></a> +<h4>ConvertToUF2Dialog.on_convertButton_clicked</h4> +<b>on_convertButton_clicked</b>(<i></i>) + +<p> + Private slot activating the conversion process. +</p> +<a NAME="ConvertToUF2Dialog.on_familiesComboBox_currentTextChanged" ID="ConvertToUF2Dialog.on_familiesComboBox_currentTextChanged"></a> +<h4>ConvertToUF2Dialog.on_familiesComboBox_currentTextChanged</h4> +<b>on_familiesComboBox_currentTextChanged</b>(<i>family</i>) + +<p> + Private slot handling the selection of a chip family. +</p> +<dl> + +<dt><i>family</i> (str)</dt> +<dd> +name of the selected chip family +</dd> +</dl> +<a NAME="ConvertToUF2Dialog.on_firmwarePicker_textChanged" ID="ConvertToUF2Dialog.on_firmwarePicker_textChanged"></a> +<h4>ConvertToUF2Dialog.on_firmwarePicker_textChanged</h4> +<b>on_firmwarePicker_textChanged</b>(<i>firmware</i>) + +<p> + Private slot handling a change of the firmware file name. +</p> +<dl> + +<dt><i>firmware</i> (str)</dt> +<dd> +name of the firmware file +</dd> +</dl> +<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 Fri Mar 17 11:29:09 2023 +0100 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.MicroPythonWidget.html Fri Mar 17 19:10:33 2023 +0100 @@ -96,6 +96,10 @@ <td>Private method to connect to the selected device.</td> </tr> <tr> +<td><a href="#MicroPythonWidget.__convertToUF2">__convertToUF2</a></td> +<td>Private slot to convert a non-UF2 MicroPython firmware file to UF2.</td> +</tr> +<tr> <td><a href="#MicroPythonWidget.__crossCompile">__crossCompile</a></td> <td>Private method to cross compile a Python file to a .mpy file.</td> </tr> @@ -384,6 +388,13 @@ automatically </dd> </dl> +<a NAME="MicroPythonWidget.__convertToUF2" ID="MicroPythonWidget.__convertToUF2"></a> +<h4>MicroPythonWidget.__convertToUF2</h4> +<b>__convertToUF2</b>(<i></i>) + +<p> + Private slot to convert a non-UF2 MicroPython firmware file to UF2. +</p> <a NAME="MicroPythonWidget.__crossCompile" ID="MicroPythonWidget.__crossCompile"></a> <h4>MicroPythonWidget.__crossCompile</h4> <b>__crossCompile</b>(<i>pythonFile="", title=""</i>)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/Documentation/Source/eric7.MicroPython.Tools.uf2conv.html Fri Mar 17 19:10:33 2023 +0100 @@ -0,0 +1,241 @@ +<!DOCTYPE html> +<html><head> +<title>eric7.MicroPython.Tools.uf2conv</title> +<meta charset="UTF-8"> +<link rel="stylesheet" href="styles.css"> +</head> +<body> +<a NAME="top" ID="top"></a> +<h1>eric7.MicroPython.Tools.uf2conv</h1> + +<h3>Global Attributes</h3> + +<table> +<tr><td>INFO_FILE</td></tr><tr><td>UF2_MAGIC_END</td></tr><tr><td>UF2_MAGIC_START0</td></tr><tr><td>UF2_MAGIC_START1</td></tr><tr><td>appstartaddr</td></tr><tr><td>familyid</td></tr> +</table> +<h3>Classes</h3> + +<table> + +<tr> +<td><a href="#Block">Block</a></td> +<td></td> +</tr> +</table> +<h3>Functions</h3> + +<table> + +<tr> +<td><a href="#board_id">board_id</a></td> +<td></td> +</tr> +<tr> +<td><a href="#convert_from_hex_to_uf2">convert_from_hex_to_uf2</a></td> +<td></td> +</tr> +<tr> +<td><a href="#convert_from_uf2">convert_from_uf2</a></td> +<td></td> +</tr> +<tr> +<td><a href="#convert_to_carray">convert_to_carray</a></td> +<td></td> +</tr> +<tr> +<td><a href="#convert_to_uf2">convert_to_uf2</a></td> +<td></td> +</tr> +<tr> +<td><a href="#error">error</a></td> +<td></td> +</tr> +<tr> +<td><a href="#get_drives">get_drives</a></td> +<td></td> +</tr> +<tr> +<td><a href="#has_info">has_info</a></td> +<td></td> +</tr> +<tr> +<td><a href="#is_hex">is_hex</a></td> +<td></td> +</tr> +<tr> +<td><a href="#is_uf2">is_uf2</a></td> +<td></td> +</tr> +<tr> +<td><a href="#list_drives">list_drives</a></td> +<td></td> +</tr> +<tr> +<td><a href="#load_families">load_families</a></td> +<td></td> +</tr> +<tr> +<td><a href="#main">main</a></td> +<td></td> +</tr> +<tr> +<td><a href="#to_str">to_str</a></td> +<td></td> +</tr> +<tr> +<td><a href="#write_file">write_file</a></td> +<td></td> +</tr> +</table> +<hr /> +<hr /> +<a NAME="Block" ID="Block"></a> +<h2>Block</h2> + +<h3>Derived from</h3> +None +<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="#Block.__init__">Block</a></td> +<td></td> +</tr> +<tr> +<td><a href="#Block.encode">encode</a></td> +<td></td> +</tr> +</table> +<h3>Static Methods</h3> + +<table> +<tr><td>None</td></tr> +</table> + +<a NAME="Block.__init__" ID="Block.__init__"></a> +<h4>Block (Constructor)</h4> +<b>Block</b>(<i>addr</i>) + +<a NAME="Block.encode" ID="Block.encode"></a> +<h4>Block.encode</h4> +<b>encode</b>(<i>blockno, numblocks</i>) + +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="board_id" ID="board_id"></a> +<h2>board_id</h2> +<b>board_id</b>(<i>path</i>) + +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="convert_from_hex_to_uf2" ID="convert_from_hex_to_uf2"></a> +<h2>convert_from_hex_to_uf2</h2> +<b>convert_from_hex_to_uf2</b>(<i>buf</i>) + +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="convert_from_uf2" ID="convert_from_uf2"></a> +<h2>convert_from_uf2</h2> +<b>convert_from_uf2</b>(<i>buf</i>) + +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="convert_to_carray" ID="convert_to_carray"></a> +<h2>convert_to_carray</h2> +<b>convert_to_carray</b>(<i>file_content</i>) + +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="convert_to_uf2" ID="convert_to_uf2"></a> +<h2>convert_to_uf2</h2> +<b>convert_to_uf2</b>(<i>file_content</i>) + +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="error" ID="error"></a> +<h2>error</h2> +<b>error</b>(<i>msg</i>) + +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="get_drives" ID="get_drives"></a> +<h2>get_drives</h2> +<b>get_drives</b>(<i></i>) + +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="has_info" ID="has_info"></a> +<h2>has_info</h2> +<b>has_info</b>(<i>d</i>) + +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="is_hex" ID="is_hex"></a> +<h2>is_hex</h2> +<b>is_hex</b>(<i>buf</i>) + +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="is_uf2" ID="is_uf2"></a> +<h2>is_uf2</h2> +<b>is_uf2</b>(<i>buf</i>) + +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="list_drives" ID="list_drives"></a> +<h2>list_drives</h2> +<b>list_drives</b>(<i></i>) + +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="load_families" ID="load_families"></a> +<h2>load_families</h2> +<b>load_families</b>(<i></i>) + +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="main" ID="main"></a> +<h2>main</h2> +<b>main</b>(<i></i>) + +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="to_str" ID="to_str"></a> +<h2>to_str</h2> +<b>to_str</b>(<i>b</i>) + +<div align="right"><a href="#top">Up</a></div> +<hr /> +<hr /> +<a NAME="write_file" ID="write_file"></a> +<h2>write_file</h2> +<b>write_file</b>(<i>name, buf</i>) + +<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/index-eric7.MicroPython.Tools.html Fri Mar 17 19:10:33 2023 +0100 @@ -0,0 +1,26 @@ +<!DOCTYPE html> +<html><head> +<title>eric7.MicroPython.Tools</title> +<meta charset="UTF-8"> +<link rel="stylesheet" href="styles.css"> +</head> +<body> +<h1>eric7.MicroPython.Tools</h1> + +<p> +Package implementing some MicroPython related tools. +</p> +<p> +Note: There might be tools taken from third party sources. +</p> + + +<h3>Modules</h3> +<table> + +<tr> +<td><a href="eric7.MicroPython.Tools.uf2conv.html">uf2conv</a></td> +<td></td> +</tr> +</table> +</body></html> \ No newline at end of file
--- a/src/eric7/Documentation/Source/index-eric7.MicroPython.html Fri Mar 17 11:29:09 2023 +0100 +++ b/src/eric7/Documentation/Source/index-eric7.MicroPython.html Fri Mar 17 19:10:33 2023 +0100 @@ -27,6 +27,10 @@ <td>Package implementing Ethernet related dialogs.</td> </tr> <tr> +<td><a href="index-eric7.MicroPython.Tools.html">Tools</a></td> +<td>Package implementing some MicroPython related tools.</td> +</tr> +<tr> <td><a href="index-eric7.MicroPython.WifiDialogs.html">WifiDialogs</a></td> <td>Package implementing WiFi related dialogs.</td> </tr> @@ -48,6 +52,10 @@ <td>Module implementing a dialog to select the port to connect to and the type of the attached device.</td> </tr> <tr> +<td><a href="eric7.MicroPython.ConvertToUF2Dialog.html">ConvertToUF2Dialog</a></td> +<td>Module implementing a dialog to convert a .hex or .bin firmware file to .uf2.</td> +</tr> +<tr> <td><a href="eric7.MicroPython.IgnoredDevicesDialog.html">IgnoredDevicesDialog</a></td> <td>Module implementing a dialog to manage the list of ignored serial devices.</td> </tr>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/MicroPython/ConvertToUF2Dialog.py Fri Mar 17 19:10:33 2023 +0100 @@ -0,0 +1,175 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to convert a .hex or .bin firmware file to .uf2. +""" + +import json +import os + +from PyQt6.QtCore import QProcess, QRegularExpression, pyqtSlot +from PyQt6.QtGui import QRegularExpressionValidator +from PyQt6.QtWidgets import QDialog + +from eric7 import Preferences +from eric7.EricWidgets.EricPathPicker import EricPathPickerModes +from eric7.SystemUtilities.PythonUtilities import getPythonExecutable + +from .Ui_ConvertToUF2Dialog import Ui_ConvertToUF2Dialog + + +class ConvertToUF2Dialog(QDialog, Ui_ConvertToUF2Dialog): + """ + Class implementing a dialog to convert a .hex or .bin firmware file to .uf2. + """ + + FamiliesFile = os.path.join(os.path.dirname(__file__), "Tools", "uf2families.json") + ConvertScript = os.path.join(os.path.dirname(__file__), "Tools", "uf2conv.py") + + def __init__(self, parent=None): + """ + Constructor + + @param parent reference to the parent widget (defaults to None) + @type QWidget (optional) + """ + super().__init__(parent) + self.setupUi(self) + + self.firmwarePicker.setMode(EricPathPickerModes.OPEN_FILE_MODE) + self.firmwarePicker.setFilters( + self.tr("MicroPython Firmware Files (*.hex *.bin);;All Files (*)") + ) + + self.__validator = QRegularExpressionValidator( + QRegularExpression(r"[0-9a-fA-F]{0,7}") + ) + self.addressEdit.setValidator(self.__validator) + self.addressEdit.setEnabled(False) + + self.__populateFamilyComboBox() + + self.__process = QProcess(self) + self.__process.readyReadStandardOutput.connect(self.__readOutput) + self.__process.readyReadStandardError.connect(self.__readError) + self.__process.finished.connect(self.__conversionFinished) + + self.__updateConvertButton() + + def __populateFamilyComboBox(self): + """ + Private method to populate the chip family combo box with values read from + 'uf2families.json' file. + """ + with open(ConvertToUF2Dialog.FamiliesFile, "r") as f: + families = json.load(f) + + self.familiesComboBox.addItem("", "") + for family in families: + self.familiesComboBox.addItem(family["description"], family["id"]) + self.familiesComboBox.model().sort(0) + + def __updateConvertButton(self): + """ + Private method to set the enabled status of the 'Convert' button. + """ + self.convertButton.setEnabled( + bool(self.firmwarePicker.text()) + and bool(self.familiesComboBox.currentText()) + ) + + @pyqtSlot(str) + def on_firmwarePicker_textChanged(self, firmware): + """ + Private slot handling a change of the firmware file name. + + @param firmware name of the firmware file + @type str + """ + self.addressEdit.setEnabled(firmware.lower().endswith(".bin")) + self.__updateConvertButton() + + @pyqtSlot(str) + def on_familiesComboBox_currentTextChanged(self, family): + """ + Private slot handling the selection of a chip family. + + @param family name of the selected chip family + @type str + """ + self.__updateConvertButton() + + @pyqtSlot() + def on_convertButton_clicked(self): + """ + Private slot activating the conversion process. + """ + self.outputEdit.clear() + + inputFile = self.firmwarePicker.text() + outputFile = os.path.splitext(inputFile)[0] + ".uf2" + args = [ + ConvertToUF2Dialog.ConvertScript, + "--convert", + "--family", + self.familiesComboBox.currentData(), + "--output", + outputFile, + ] + if inputFile.lower().endswith(".bin"): + address = self.addressEdit.text() + if address: + args.extend(["--base", "0x{0}".format(address)]) + args.append(inputFile) + python = getPythonExecutable() + + # output the generated command + self.outputEdit.insertPlainText( + "{0} {1}\n{2}\n\n".format(python, " ".join(args), "=" * 40) + ) + self.outputEdit.ensureCursorVisible() + + # start the conversion process + self.convertButton.setEnabled(False) + self.__process.start(python, args) + + @pyqtSlot() + def __readOutput(self): + """ + Private slot to read the standard output channel of the conversion process. + """ + out = str( + self.__process.readAllStandardOutput(), + Preferences.getSystem("IOEncoding"), + "replace", + ) + self.outputEdit.insertPlainText(out) + self.outputEdit.ensureCursorVisible() + + @pyqtSlot() + def __readError(self): + """ + Private slot to read the standard error channel of the conversion process. + """ + out = str( + self.__process.readAllStandardError(), + Preferences.getSystem("IOEncoding"), + "replace", + ) + self.outputEdit.insertPlainText(self.tr("--- ERROR ---\n")) + self.outputEdit.insertPlainText(out) + self.outputEdit.ensureCursorVisible() + + def __conversionFinished(self, exitCode, exitStatus): + """ + Private slot handling the end of the conversion process. + + @param exitCode exit code of the process + @type int + @param exitStatus exit status of the process + @type QProcess.ExitStatus + """ + self.convertButton.setEnabled(True)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/MicroPython/ConvertToUF2Dialog.ui Fri Mar 17 19:10:33 2023 +0100 @@ -0,0 +1,173 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>ConvertToUF2Dialog</class> + <widget class="QDialog" name="ConvertToUF2Dialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>600</width> + <height>600</height> + </rect> + </property> + <property name="windowTitle"> + <string>Convert To UF2</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Firmware File:</string> + </property> + </widget> + </item> + <item row="0" column="1" colspan="2"> + <widget class="EricPathPicker" name="firmwarePicker" native="true"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="focusPolicy"> + <enum>Qt::WheelFocus</enum> + </property> + <property name="toolTip"> + <string>Enter the path of the MicroPython firmware file to be converted.</string> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>Chip Family:</string> + </property> + </widget> + </item> + <item row="1" column="1" colspan="2"> + <widget class="QComboBox" name="familiesComboBox"> + <property name="toolTip"> + <string>Select the chip family of the firmware file.</string> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string>Base Address:</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QLineEdit" name="addressEdit"> + <property name="toolTip"> + <string>Enter the base address for .bin firmware files or leave empty to use the default (0x2000).</string> + </property> + <property name="maxLength"> + <number>4</number> + </property> + <property name="clearButtonEnabled"> + <bool>true</bool> + </property> + </widget> + </item> + <item row="2" column="2"> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>338</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + <item row="3" column="0" colspan="3"> + <widget class="QPushButton" name="convertButton"> + <property name="toolTip"> + <string>Press to start the conversion process.</string> + </property> + <property name="text"> + <string>Convert</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QTextEdit" name="outputEdit"> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Close</set> + </property> + </widget> + </item> + </layout> + </widget> + <customwidgets> + <customwidget> + <class>EricPathPicker</class> + <extends>QWidget</extends> + <header>eric7/EricWidgets/EricPathPicker.h</header> + <container>1</container> + </customwidget> + </customwidgets> + <tabstops> + <tabstop>firmwarePicker</tabstop> + <tabstop>familiesComboBox</tabstop> + <tabstop>addressEdit</tabstop> + <tabstop>convertButton</tabstop> + <tabstop>outputEdit</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>ConvertToUF2Dialog</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>ConvertToUF2Dialog</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 Fri Mar 17 11:29:09 2023 +0100 +++ b/src/eric7/MicroPython/MicroPythonWidget.py Fri Mar 17 19:10:33 2023 +0100 @@ -41,7 +41,7 @@ from eric7.SystemUtilities import FileSystemUtilities, OSUtilities from eric7.UI.Info import BugAddress -from . import Devices, UF2FlashDialog +from . import ConvertToUF2Dialog, Devices, UF2FlashDialog from .BluetoothDialogs.BluetoothController import BluetoothController from .EthernetDialogs.EthernetController import EthernetController from .MicroPythonFileManager import MicroPythonFileManager @@ -1604,6 +1604,7 @@ self.tr("Show Documentation"), self.__showDocumentation ).setEnabled(self.__device.hasDocumentationUrl()) self.__superMenu.addSeparator() + self.__superMenu.addAction(self.tr("Convert To UF2"), self.__convertToUF2) self.__superMenu.addAction(self.tr("Flash UF2 Device"), self.__flashUF2) self.__superMenu.addSeparator() self.__superMenu.addAction( @@ -2082,6 +2083,14 @@ dlg.exec() @pyqtSlot() + def __convertToUF2(self): + """ + Private slot to convert a non-UF2 MicroPython firmware file to UF2. + """ + dlg = ConvertToUF2Dialog.ConvertToUF2Dialog() + dlg.exec() + + @pyqtSlot() def __showBuiltinModules(self): """ Private slot to show a list of builtin modules.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/MicroPython/Tools/__init__.py Fri Mar 17 19:10:33 2023 +0100 @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2023 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Package implementing some MicroPython related tools. + +Note: There might be tools taken from third party sources. +"""
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/MicroPython/Tools/uf2conv.py Fri Mar 17 19:10:33 2023 +0100 @@ -0,0 +1,438 @@ +#!/usr/bin/env python3 + +# Microsoft UF2 +# +# The MIT License (MIT) +# +# Copyright (c) Microsoft Corporation +# +# All rights reserved. +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in all +# copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +# SOFTWARE. + +import sys +import struct +import subprocess +import re +import os +import os.path +import argparse +import json + + +UF2_MAGIC_START0 = 0x0A324655 # "UF2\n" +UF2_MAGIC_START1 = 0x9E5D5157 # Randomly selected +UF2_MAGIC_END = 0x0AB16F30 # Ditto + +INFO_FILE = "/INFO_UF2.TXT" + +appstartaddr = 0x2000 +familyid = 0x0 + + +def is_uf2(buf): + w = struct.unpack("<II", buf[0:8]) + return w[0] == UF2_MAGIC_START0 and w[1] == UF2_MAGIC_START1 + + +def is_hex(buf): + try: + w = buf[0:30].decode("utf-8") + except UnicodeDecodeError: + return False + if w[0] == ":" and re.match(b"^[:0-9a-fA-F\r\n]+$", buf): + return True + return False + + +def convert_from_uf2(buf): + global appstartaddr + global familyid + numblocks = len(buf) // 512 + curraddr = None + currfamilyid = None + families_found = {} + prev_flag = None + all_flags_same = True + outp = [] + for blockno in range(numblocks): + ptr = blockno * 512 + block = buf[ptr : ptr + 512] + hd = struct.unpack(b"<IIIIIIII", block[0:32]) + if hd[0] != UF2_MAGIC_START0 or hd[1] != UF2_MAGIC_START1: + print("Skipping block at " + ptr + "; bad magic") + continue + if hd[2] & 1: + # NO-flash flag set; skip block + continue + datalen = hd[4] + if datalen > 476: + assert False, "Invalid UF2 data size at " + ptr + newaddr = hd[3] + if (hd[2] & 0x2000) and (currfamilyid == None): + currfamilyid = hd[7] + if curraddr == None or ((hd[2] & 0x2000) and hd[7] != currfamilyid): + currfamilyid = hd[7] + curraddr = newaddr + if familyid == 0x0 or familyid == hd[7]: + appstartaddr = newaddr + padding = newaddr - curraddr + if padding < 0: + assert False, "Block out of order at " + ptr + if padding > 10 * 1024 * 1024: + assert False, "More than 10M of padding needed at " + ptr + if padding % 4 != 0: + assert False, "Non-word padding size at " + ptr + while padding > 0: + padding -= 4 + outp += b"\x00\x00\x00\x00" + if familyid == 0x0 or ((hd[2] & 0x2000) and familyid == hd[7]): + outp.append(block[32 : 32 + datalen]) + curraddr = newaddr + datalen + if hd[2] & 0x2000: + if hd[7] in families_found.keys(): + if families_found[hd[7]] > newaddr: + families_found[hd[7]] = newaddr + else: + families_found[hd[7]] = newaddr + if prev_flag == None: + prev_flag = hd[2] + if prev_flag != hd[2]: + all_flags_same = False + if blockno == (numblocks - 1): + print("--- UF2 File Header Info ---") + families = load_families() + for family_hex in families_found.keys(): + family_short_name = "" + for name, value in families.items(): + if value == family_hex: + family_short_name = name + print( + "Family ID is {:s}, hex value is 0x{:08x}".format( + family_short_name, family_hex + ) + ) + print("Target Address is 0x{:08x}".format(families_found[family_hex])) + if all_flags_same: + print("All block flag values consistent, 0x{:04x}".format(hd[2])) + else: + print("Flags were not all the same") + print("----------------------------") + if len(families_found) > 1 and familyid == 0x0: + outp = [] + appstartaddr = 0x0 + return b"".join(outp) + + +def convert_to_carray(file_content): + outp = "const unsigned long bindata_len = %d;\n" % len(file_content) + outp += "const unsigned char bindata[] __attribute__((aligned(16))) = {" + for i in range(len(file_content)): + if i % 16 == 0: + outp += "\n" + outp += "0x%02x, " % file_content[i] + outp += "\n};\n" + return bytes(outp, "utf-8") + + +def convert_to_uf2(file_content): + global familyid + datapadding = b"" + while len(datapadding) < 512 - 256 - 32 - 4: + datapadding += b"\x00\x00\x00\x00" + numblocks = (len(file_content) + 255) // 256 + outp = [] + for blockno in range(numblocks): + ptr = 256 * blockno + chunk = file_content[ptr : ptr + 256] + flags = 0x0 + if familyid: + flags |= 0x2000 + hd = struct.pack( + b"<IIIIIIII", + UF2_MAGIC_START0, + UF2_MAGIC_START1, + flags, + ptr + appstartaddr, + 256, + blockno, + numblocks, + familyid, + ) + while len(chunk) < 256: + chunk += b"\x00" + block = hd + chunk + datapadding + struct.pack(b"<I", UF2_MAGIC_END) + assert len(block) == 512 + outp.append(block) + return b"".join(outp) + + +class Block: + def __init__(self, addr): + self.addr = addr + self.bytes = bytearray(256) + + def encode(self, blockno, numblocks): + global familyid + flags = 0x0 + if familyid: + flags |= 0x2000 + hd = struct.pack( + "<IIIIIIII", + UF2_MAGIC_START0, + UF2_MAGIC_START1, + flags, + self.addr, + 256, + blockno, + numblocks, + familyid, + ) + hd += self.bytes[0:256] + while len(hd) < 512 - 4: + hd += b"\x00" + hd += struct.pack("<I", UF2_MAGIC_END) + return hd + + +def convert_from_hex_to_uf2(buf): + global appstartaddr + appstartaddr = None + upper = 0 + currblock = None + blocks = [] + for line in buf.split("\n"): + if line[0] != ":": + continue + i = 1 + rec = [] + while i < len(line) - 1: + rec.append(int(line[i : i + 2], 16)) + i += 2 + tp = rec[3] + if tp == 4: + upper = ((rec[4] << 8) | rec[5]) << 16 + elif tp == 2: + upper = ((rec[4] << 8) | rec[5]) << 4 + elif tp == 1: + break + elif tp == 0: + addr = upper + ((rec[1] << 8) | rec[2]) + if appstartaddr == None: + appstartaddr = addr + i = 4 + while i < len(rec) - 1: + if not currblock or currblock.addr & ~0xFF != addr & ~0xFF: + currblock = Block(addr & ~0xFF) + blocks.append(currblock) + currblock.bytes[addr & 0xFF] = rec[i] + addr += 1 + i += 1 + numblocks = len(blocks) + resfile = b"" + for i in range(0, numblocks): + resfile += blocks[i].encode(i, numblocks) + return resfile + + +def to_str(b): + return b.decode("utf-8") + + +def get_drives(): + drives = [] + if sys.platform == "win32": + r = subprocess.check_output( + [ + "wmic", + "PATH", + "Win32_LogicalDisk", + "get", + "DeviceID,", + "VolumeName,", + "FileSystem,", + "DriveType", + ] + ) + for line in to_str(r).split("\n"): + words = re.split("\s+", line) + if len(words) >= 3 and words[1] == "2" and words[2] == "FAT": + drives.append(words[0]) + else: + rootpath = "/media" + if sys.platform == "darwin": + rootpath = "/Volumes" + elif sys.platform == "linux": + tmp = rootpath + "/" + os.environ["USER"] + if os.path.isdir(tmp): + rootpath = tmp + for d in os.listdir(rootpath): + drives.append(os.path.join(rootpath, d)) + + def has_info(d): + try: + return os.path.isfile(d + INFO_FILE) + except: + return False + + return list(filter(has_info, drives)) + + +def board_id(path): + with open(path + INFO_FILE, mode="r") as file: + file_content = file.read() + return re.search("Board-ID: ([^\r\n]*)", file_content).group(1) + + +def list_drives(): + for d in get_drives(): + print(d, board_id(d)) + + +def write_file(name, buf): + with open(name, "wb") as f: + f.write(buf) + print("Wrote %d bytes to %s" % (len(buf), name)) + + +def load_families(): + # The expectation is that the `uf2families.json` file is in the same + # directory as this script. Make a path that works using `__file__` + # which contains the full path to this script. + filename = "uf2families.json" + pathname = os.path.join(os.path.dirname(os.path.abspath(__file__)), filename) + with open(pathname) as f: + raw_families = json.load(f) + + families = {} + for family in raw_families: + families[family["short_name"]] = int(family["id"], 0) + + return families + + +def main(): + global appstartaddr, familyid + + def error(msg): + print(msg) + sys.exit(1) + + parser = argparse.ArgumentParser(description="Convert to UF2 or flash directly.") + parser.add_argument( + "input", metavar="INPUT", type=str, nargs="?", help="input file (HEX, BIN or UF2)" + ) + parser.add_argument( + "-b", + "--base", + dest="base", + type=str, + default="0x2000", + help="set base address of application for BIN format (default: 0x2000)", + ) + parser.add_argument( + "-o", + "--output", + metavar="FILE", + dest="output", + type=str, + help='write output to named file; defaults to "flash.uf2" or "flash.bin" where sensible', + ) + parser.add_argument("-d", "--device", dest="device_path", help="select a device path to flash") + parser.add_argument("-l", "--list", action="store_true", help="list connected devices") + parser.add_argument("-c", "--convert", action="store_true", help="do not flash, just convert") + parser.add_argument("-D", "--deploy", action="store_true", help="just flash, do not convert") + parser.add_argument( + "-f", + "--family", + dest="family", + type=str, + default="0x0", + help="specify familyID - number or name (default: 0x0)", + ) + parser.add_argument( + "-C", "--carray", action="store_true", help="convert binary file to a C array, not UF2" + ) + parser.add_argument( + "-i", + "--info", + action="store_true", + help="display header information from UF2, do not convert", + ) + args = parser.parse_args() + appstartaddr = int(args.base, 0) + + families = load_families() + + if args.family.upper() in families: + familyid = families[args.family.upper()] + else: + try: + familyid = int(args.family, 0) + except ValueError: + error("Family ID needs to be a number or one of: " + ", ".join(families.keys())) + + if args.list: + list_drives() + else: + if not args.input: + error("Need input file") + with open(args.input, mode="rb") as f: + inpbuf = f.read() + from_uf2 = is_uf2(inpbuf) + ext = "uf2" + if args.deploy: + outbuf = inpbuf + elif from_uf2 and not args.info: + outbuf = convert_from_uf2(inpbuf) + ext = "bin" + elif from_uf2 and args.info: + outbuf = "" + convert_from_uf2(inpbuf) + elif is_hex(inpbuf): + outbuf = convert_from_hex_to_uf2(inpbuf.decode("utf-8")) + elif args.carray: + outbuf = convert_to_carray(inpbuf) + ext = "h" + else: + outbuf = convert_to_uf2(inpbuf) + if not args.deploy and not args.info: + print( + "Converted to %s, output size: %d, start address: 0x%x" + % (ext, len(outbuf), appstartaddr) + ) + if args.convert or ext != "uf2": + drives = [] + if args.output == None: + args.output = "flash." + ext + else: + drives = get_drives() + + if args.output: + write_file(args.output, outbuf) + else: + if len(drives) == 0: + error("No drive to deploy.") + for d in drives: + print("Flashing %s (%s)" % (d, board_id(d))) + write_file(d + "/NEW.UF2", outbuf) + + +if __name__ == "__main__": + main()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/eric7/MicroPython/Tools/uf2families.json Fri Mar 17 19:10:33 2023 +0100 @@ -0,0 +1,192 @@ +[ + { + "id": "0x16573617", + "short_name": "ATMEGA32", + "description": "Microchip (Atmel) ATmega32" + }, + { + "id": "0x1851780a", + "short_name": "SAML21", + "description": "Microchip (Atmel) SAML21" + }, + { + "id": "0x1b57745f", + "short_name": "NRF52", + "description": "Nordic NRF52" + }, + { + "id": "0x1c5f21b0", + "short_name": "ESP32", + "description": "ESP32" + }, + { + "id": "0x1e1f432d", + "short_name": "STM32L1", + "description": "ST STM32L1xx" + }, + { + "id": "0x202e3a91", + "short_name": "STM32L0", + "description": "ST STM32L0xx" + }, + { + "id": "0x21460ff0", + "short_name": "STM32WL", + "description": "ST STM32WLxx" + }, + { + "id": "0x2abc77ec", + "short_name": "LPC55", + "description": "NXP LPC55xx" + }, + { + "id": "0x300f5633", + "short_name": "STM32G0", + "description": "ST STM32G0xx" + }, + { + "id": "0x31d228c6", + "short_name": "GD32F350", + "description": "GD32F350" + }, + { + "id": "0x04240bdf", + "short_name": "STM32L5", + "description": "ST STM32L5xx" + }, + { + "id": "0x4c71240a", + "short_name": "STM32G4", + "description": "ST STM32G4xx" + }, + { + "id": "0x4fb2d5bd", + "short_name": "MIMXRT10XX", + "description": "NXP i.MX RT10XX" + }, + { + "id": "0x53b80f00", + "short_name": "STM32F7", + "description": "ST STM32F7xx" + }, + { + "id": "0x55114460", + "short_name": "SAMD51", + "description": "Microchip (Atmel) SAMD51" + }, + { + "id": "0x57755a57", + "short_name": "STM32F4", + "description": "ST STM32F401" + }, + { + "id": "0x5a18069b", + "short_name": "FX2", + "description": "Cypress FX2" + }, + { + "id": "0x5d1a0a2e", + "short_name": "STM32F2", + "description": "ST STM32F2xx" + }, + { + "id": "0x5ee21072", + "short_name": "STM32F1", + "description": "ST STM32F103" + }, + { + "id": "0x621e937a", + "short_name": "NRF52833", + "description": "Nordic NRF52833" + }, + { + "id": "0x647824b6", + "short_name": "STM32F0", + "description": "ST STM32F0xx" + }, + { + "id": "0x68ed2b88", + "short_name": "SAMD21", + "description": "Microchip (Atmel) SAMD21" + }, + { + "id": "0x6b846188", + "short_name": "STM32F3", + "description": "ST STM32F3xx" + }, + { + "id": "0x6d0922fa", + "short_name": "STM32F407", + "description": "ST STM32F407" + }, + { + "id": "0x6db66082", + "short_name": "STM32H7", + "description": "ST STM32H7xx" + }, + { + "id": "0x70d16653", + "short_name": "STM32WB", + "description": "ST STM32WBxx" + }, + { + "id": "0x7eab61ed", + "short_name": "ESP8266", + "description": "ESP8266" + }, + { + "id": "0x7f83e793", + "short_name": "KL32L2", + "description": "NXP KL32L2x" + }, + { + "id": "0x8fb060fe", + "short_name": "STM32F407VG", + "description": "ST STM32F407VG" + }, + { + "id": "0xada52840", + "short_name": "NRF52840", + "description": "Nordic NRF52840" + }, + { + "id": "0xbfdd4eee", + "short_name": "ESP32S2", + "description": "ESP32-S2" + }, + { + "id": "0xc47e5767", + "short_name": "ESP32S3", + "description": "ESP32-S3" + }, + { + "id": "0xd42ba06c", + "short_name": "ESP32C3", + "description": "ESP32-C3" + }, + { + "id": "0x2b88d29c", + "short_name": "ESP32C2", + "description": "ESP32-C2" + }, + { + "id": "0x332726f6", + "short_name": "ESP32H2", + "description": "ESP32-H2" + }, + { + "id": "0xe48bff56", + "short_name": "RP2040", + "description": "Raspberry Pi RP2040" + }, + { + "id": "0x00ff6919", + "short_name": "STM32L4", + "description": "ST STM32L4xx" + }, + { + "id": "0x9af03e33", + "short_name": "GD32VF103", + "description": "GigaDevice GD32VF103" + } +]
--- a/src/eric7/i18n/eric7_cs.ts Fri Mar 17 11:29:09 2023 +0100 +++ b/src/eric7/i18n/eric7_cs.ts Fri Mar 17 19:10:33 2023 +0100 @@ -7864,6 +7864,65 @@ </message> </context> <context> + <name>ConvertToUF2Dialog</name> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="44" /> + <source>MicroPython Firmware Files (*.hex *.bin);;All Files (*)</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="162" /> + <source>--- ERROR --- +</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Firmware File:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the path of the MicroPython firmware file to be converted.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Chip Family:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Select the chip family of the firmware file.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Base Address:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the base address for .bin firmware files or leave empty to use the default (0x2000).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Press to start the conversion process.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>CookieDetailsDialog</name> <message> <location filename="../WebBrowser/CookieJar/CookieDetailsDialog.ui" line="0" /> @@ -50920,7 +50979,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1722" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> <source>Synchronize Time</source> <translation type="unfinished" /> @@ -50946,27 +51005,27 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2121" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> <source>Install Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2133" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2142" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2139" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> <source>Install Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1946" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1947" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1572" /> <source>Compile Python File</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1970" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1961" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1971" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1576" /> <source>Compile Current Editor</source> <translation type="unfinished" /> @@ -50983,165 +51042,170 @@ </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1607" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1608" /> <source>Flash UF2 Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1610" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1611" /> <source>Manage Unknown Devices</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1613" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1614" /> <source>Ignored Serial Devices</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1617" /> <source>Configure</source> <translation type="unfinished">Konfigurovat</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1625" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> <source><h3>Device Version Information</h3></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1636" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1632" /> - <source>Device Version Information</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1637" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <source>Device Version Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> <source>No version information available.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1661" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1653" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1662" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1654" /> <source>unknown</source> <translation type="unfinished">neznámý</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1667" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1668" /> <source> ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1683" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <source>Device Implementation Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> - <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="1684" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> + <source>Device Implementation Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1676" /> + <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="1685" /> <source>No device implementation information available.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1724" /> <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="1745" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1746" /> <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="1753" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1754" /> <source><h3>Device Date and Time</h3><p>{0}</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1769" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1770" /> <source>Device Date and Time</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1781" /> - <source>Local Date and Time</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> + <source>Local Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1783" /> <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="1823" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1806" /> - <source>Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> - <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="1824" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> + <source>Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1808" /> + <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="1825" /> <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="1848" /> - <source>Error handling device</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1849" /> + <source>Error handling device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1850" /> <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="1891" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1892" /> <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="1917" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1918" /> <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="1927" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1928" /> <source>The Python file <b>{0}</b> does not exist. Aborting...</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1936" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1937" /> <source>'mpy-cross' Output</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1963" /> <source>The current editor does not contain a Python file. Aborting...</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2054" /> - <source>Add Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="2055" /> + <source>Add Unknown Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="2056" /> <source>Select the devices to be added:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2096" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2105" /> <source>Plus any modules on the filesystem.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2134" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2143" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation type="unfinished" /> </message>
--- a/src/eric7/i18n/eric7_de.ts Fri Mar 17 11:29:09 2023 +0100 +++ b/src/eric7/i18n/eric7_de.ts Fri Mar 17 19:10:33 2023 +0100 @@ -7807,6 +7807,66 @@ </message> </context> <context> + <name>ConvertToUF2Dialog</name> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="44" /> + <source>MicroPython Firmware Files (*.hex *.bin);;All Files (*)</source> + <translation>MicroPython Firmware Dateien (*.hex *.bin);;Alle Dateien (*)</translation> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="162" /> + <source>--- ERROR --- +</source> + <translation>--- FEHLER --- +</translation> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert To UF2</source> + <translation>Zu UF2 konvertieren</translation> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Firmware File:</source> + <translation>Firware Datei:</translation> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the path of the MicroPython firmware file to be converted.</source> + <translation>Gib den Pfad der zu konvertierenden MicroPython Firmware Datei ein.</translation> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Chip Family:</source> + <translation>Chip Familie:</translation> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Select the chip family of the firmware file.</source> + <translation>Wähle die Chip Familie der Firmware Datei.</translation> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Base Address:</source> + <translation>Basisadresse:</translation> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the base address for .bin firmware files or leave empty to use the default (0x2000).</source> + <translation>Gib die Basisadresse für .bin Firmware Dateien ein oder lasse es leer, um den Standardwert (0x2000) zu verwenden.</translation> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Press to start the conversion process.</source> + <translation>Drücken, um die Konvertierung zu starten.</translation> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert</source> + <translation>Konvertieren</translation> + </message> + </context> + <context> <name>CookieDetailsDialog</name> <message> <location filename="../WebBrowser/CookieJar/CookieDetailsDialog.ui" line="0" /> @@ -50802,7 +50862,7 @@ <translation>Board Daten anzeigen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1722" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> <source>Synchronize Time</source> <translation>Zeit synchronisieren</translation> @@ -50828,27 +50888,27 @@ <translation>Eingebaute Module anzeigen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2121" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> <source>Install Package</source> <translation>Paket installieren</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2133" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2142" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2139" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> <source>Install Packages</source> <translation>Pakete installieren</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1946" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1947" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1572" /> <source>Compile Python File</source> <translation>Python Datei übersetzen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1970" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1961" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1971" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1576" /> <source>Compile Current Editor</source> <translation>Aktuellen Editor übersetzen</translation> @@ -50865,165 +50925,170 @@ </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1607" /> + <source>Convert To UF2</source> + <translation>Zu UF2 konvertieren</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1608" /> <source>Flash UF2 Device</source> <translation>UF2 Gerät flashen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1610" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1611" /> <source>Manage Unknown Devices</source> <translation>Unbekannte Geräte verwalten</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1613" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1614" /> <source>Ignored Serial Devices</source> <translation>Ignorierte Serielle Geräte</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1617" /> <source>Configure</source> <translation>Einstellungen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1625" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> <source><h3>Device Version Information</h3></source> <translation><h3>Versionsinformationen des Gerätes</h3></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1636" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1632" /> - <source>Device Version Information</source> - <translation>Versionsinformationen des Gerätes</translation> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1637" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <source>Device Version Information</source> + <translation>Versionsinformationen des Gerätes</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> <source>No version information available.</source> <translation>Keine Versionsinformationen verfügbar.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1661" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1653" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1662" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1654" /> <source>unknown</source> <translation>unbekannt</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1667" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1668" /> <source> ({0})</source> <translation> ({0})</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1683" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <source>Device Implementation Information</source> - <translation>Informationen zur Implementierung</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> - <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="1684" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> + <source>Device Implementation Information</source> + <translation>Informationen zur Implementierung</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1676" /> + <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="1685" /> <source>No device implementation information available.</source> <translation>Keine Informationen zur Implementierung verfügbar.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1724" /> <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="1745" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1746" /> <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="1753" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1754" /> <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="1769" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1770" /> <source>Device Date and Time</source> <translation>Datum und Zeit des Gerätes</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1781" /> - <source>Local Date and Time</source> - <translation>Lokales Datum und Zeit</translation> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> + <source>Local Date and Time</source> + <translation>Lokales Datum und Zeit</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1783" /> <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="1823" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1806" /> - <source>Date and Time</source> - <translation>Datum und Zeit</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> - <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="1824" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> + <source>Date and Time</source> + <translation>Datum und Zeit</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1808" /> + <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="1825" /> <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="1848" /> - <source>Error handling device</source> - <translation>Fehler bei Gerätekommunikation</translation> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1849" /> + <source>Error handling device</source> + <translation>Fehler bei Gerätekommunikation</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1850" /> <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="1891" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1892" /> <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="1917" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1918" /> <source>Python Files (*.py);;All Files (*)</source> <translation>Python-Dateien (*.py);;Alle Dateien (*)</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1927" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1928" /> <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="1936" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1937" /> <source>'mpy-cross' Output</source> <translation>'mpy-cross' Ausgabe</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1963" /> <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="2054" /> - <source>Add Unknown Devices</source> - <translation>Unbekannte Geräte hinzufügen</translation> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="2055" /> + <source>Add Unknown Devices</source> + <translation>Unbekannte Geräte hinzufügen</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="2056" /> <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="2096" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2105" /> <source>Plus any modules on the filesystem.</source> <translation>Zusätzlich alle Module im Dateisystem.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2134" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2143" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation>Gib die zu installierenden Pakete durch Leerzeichen getrennt ein:</translation> </message>
--- a/src/eric7/i18n/eric7_empty.ts Fri Mar 17 11:29:09 2023 +0100 +++ b/src/eric7/i18n/eric7_empty.ts Fri Mar 17 19:10:33 2023 +0100 @@ -7748,6 +7748,65 @@ </message> </context> <context> + <name>ConvertToUF2Dialog</name> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="44" /> + <source>MicroPython Firmware Files (*.hex *.bin);;All Files (*)</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="162" /> + <source>--- ERROR --- +</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Firmware File:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the path of the MicroPython firmware file to be converted.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Chip Family:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Select the chip family of the firmware file.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Base Address:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the base address for .bin firmware files or leave empty to use the default (0x2000).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Press to start the conversion process.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>CookieDetailsDialog</name> <message> <location filename="../WebBrowser/CookieJar/CookieDetailsDialog.ui" line="0" /> @@ -50558,7 +50617,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1722" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> <source>Synchronize Time</source> <translation type="unfinished" /> @@ -50584,27 +50643,27 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2121" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> <source>Install Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2133" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2142" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2139" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> <source>Install Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1946" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1947" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1572" /> <source>Compile Python File</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1970" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1961" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1971" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1576" /> <source>Compile Current Editor</source> <translation type="unfinished" /> @@ -50621,165 +50680,170 @@ </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1607" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1608" /> <source>Flash UF2 Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1610" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1611" /> <source>Manage Unknown Devices</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1613" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1614" /> <source>Ignored Serial Devices</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1617" /> <source>Configure</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1625" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> <source><h3>Device Version Information</h3></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1636" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1632" /> - <source>Device Version Information</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1637" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <source>Device Version Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> <source>No version information available.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1661" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1653" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1662" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1654" /> <source>unknown</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1667" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1668" /> <source> ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1683" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <source>Device Implementation Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> - <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="1684" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> + <source>Device Implementation Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1676" /> + <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="1685" /> <source>No device implementation information available.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1724" /> <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="1745" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1746" /> <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="1753" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1754" /> <source><h3>Device Date and Time</h3><p>{0}</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1769" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1770" /> <source>Device Date and Time</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1781" /> - <source>Local Date and Time</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> + <source>Local Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1783" /> <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="1823" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1806" /> - <source>Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> - <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="1824" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> + <source>Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1808" /> + <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="1825" /> <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="1848" /> - <source>Error handling device</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1849" /> + <source>Error handling device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1850" /> <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="1891" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1892" /> <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="1917" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1918" /> <source>Python Files (*.py);;All Files (*)</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1927" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1928" /> <source>The Python file <b>{0}</b> does not exist. Aborting...</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1936" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1937" /> <source>'mpy-cross' Output</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1963" /> <source>The current editor does not contain a Python file. Aborting...</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2054" /> - <source>Add Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="2055" /> + <source>Add Unknown Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="2056" /> <source>Select the devices to be added:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2096" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2105" /> <source>Plus any modules on the filesystem.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2134" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2143" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation type="unfinished" /> </message>
--- a/src/eric7/i18n/eric7_en.ts Fri Mar 17 11:29:09 2023 +0100 +++ b/src/eric7/i18n/eric7_en.ts Fri Mar 17 19:10:33 2023 +0100 @@ -7757,6 +7757,65 @@ </message> </context> <context> + <name>ConvertToUF2Dialog</name> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="44" /> + <source>MicroPython Firmware Files (*.hex *.bin);;All Files (*)</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="162" /> + <source>--- ERROR --- +</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Firmware File:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the path of the MicroPython firmware file to be converted.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Chip Family:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Select the chip family of the firmware file.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Base Address:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the base address for .bin firmware files or leave empty to use the default (0x2000).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Press to start the conversion process.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>CookieDetailsDialog</name> <message> <location filename="../WebBrowser/CookieJar/CookieDetailsDialog.ui" line="0" /> @@ -50604,7 +50663,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1722" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> <source>Synchronize Time</source> <translation type="unfinished" /> @@ -50630,27 +50689,27 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2121" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> <source>Install Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2133" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2142" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2139" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> <source>Install Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1946" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1947" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1572" /> <source>Compile Python File</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1970" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1961" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1971" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1576" /> <source>Compile Current Editor</source> <translation type="unfinished" /> @@ -50667,165 +50726,170 @@ </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1607" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1608" /> <source>Flash UF2 Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1610" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1611" /> <source>Manage Unknown Devices</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1613" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1614" /> <source>Ignored Serial Devices</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1617" /> <source>Configure</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1625" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> <source><h3>Device Version Information</h3></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1636" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1632" /> - <source>Device Version Information</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1637" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <source>Device Version Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> <source>No version information available.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1661" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1653" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1662" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1654" /> <source>unknown</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1667" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1668" /> <source> ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1683" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <source>Device Implementation Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> - <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="1684" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> + <source>Device Implementation Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1676" /> + <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="1685" /> <source>No device implementation information available.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1724" /> <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="1745" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1746" /> <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="1753" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1754" /> <source><h3>Device Date and Time</h3><p>{0}</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1769" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1770" /> <source>Device Date and Time</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1781" /> - <source>Local Date and Time</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> + <source>Local Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1783" /> <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="1823" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1806" /> - <source>Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> - <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="1824" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> + <source>Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1808" /> + <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="1825" /> <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="1848" /> - <source>Error handling device</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1849" /> + <source>Error handling device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1850" /> <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="1891" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1892" /> <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="1917" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1918" /> <source>Python Files (*.py);;All Files (*)</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1927" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1928" /> <source>The Python file <b>{0}</b> does not exist. Aborting...</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1936" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1937" /> <source>'mpy-cross' Output</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1963" /> <source>The current editor does not contain a Python file. Aborting...</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2054" /> - <source>Add Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="2055" /> + <source>Add Unknown Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="2056" /> <source>Select the devices to be added:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2096" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2105" /> <source>Plus any modules on the filesystem.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2134" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2143" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation type="unfinished" /> </message>
--- a/src/eric7/i18n/eric7_es.ts Fri Mar 17 11:29:09 2023 +0100 +++ b/src/eric7/i18n/eric7_es.ts Fri Mar 17 19:10:33 2023 +0100 @@ -7818,6 +7818,65 @@ </message> </context> <context> + <name>ConvertToUF2Dialog</name> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="44" /> + <source>MicroPython Firmware Files (*.hex *.bin);;All Files (*)</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="162" /> + <source>--- ERROR --- +</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Firmware File:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the path of the MicroPython firmware file to be converted.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Chip Family:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Select the chip family of the firmware file.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Base Address:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the base address for .bin firmware files or leave empty to use the default (0x2000).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Press to start the conversion process.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>CookieDetailsDialog</name> <message> <location filename="../WebBrowser/CookieJar/CookieDetailsDialog.ui" line="0" /> @@ -50829,7 +50888,7 @@ <translation>Mostrar Datos de Microprocesador</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1722" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> <source>Synchronize Time</source> <translation>Sincronizar Hora</translation> @@ -50855,27 +50914,27 @@ <translation>Mostrar Módulos Incorporados</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2121" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> <source>Install Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2133" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2142" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2139" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> <source>Install Packages</source> <translation type="unfinished">Instalar Packages</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1946" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1947" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1572" /> <source>Compile Python File</source> <translation>Compilar Archivo de Python</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1970" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1961" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1971" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1576" /> <source>Compile Current Editor</source> <translation>Compilar Editor Actual</translation> @@ -50892,165 +50951,170 @@ </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1607" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1608" /> <source>Flash UF2 Device</source> <translation>Flashear Dispositivo UF2</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1610" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1611" /> <source>Manage Unknown Devices</source> <translation>Gestión Dispositivos Desconocidos</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1613" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1614" /> <source>Ignored Serial Devices</source> <translation>Dispositivos de Serie Ignorados</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1617" /> <source>Configure</source> <translation>Configurar</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1625" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> <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="1636" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1632" /> - <source>Device Version Information</source> - <translation>Información de Versión de Dispositivo</translation> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1637" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <source>Device Version Information</source> + <translation>Información de Versión de Dispositivo</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> <source>No version information available.</source> <translation>No hay información de versión disponible.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1661" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1653" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1662" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1654" /> <source>unknown</source> <translation>desconocido</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1667" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1668" /> <source> ({0})</source> <translation> ({0})</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1683" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <source>Device Implementation Information</source> - <translation>Información de Implementación de Dispositivo</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> - <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="1684" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> + <source>Device Implementation Information</source> + <translation>Información de Implementación de Dispositivo</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1676" /> + <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="1685" /> <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="1723" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1724" /> <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="1745" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1746" /> <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="1753" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1754" /> <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="1769" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1770" /> <source>Device Date and Time</source> <translation>Fecha y Hora del Dispositivo</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1781" /> - <source>Local Date and Time</source> - <translation>Fecha y Hora Local</translation> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> + <source>Local Date and Time</source> + <translation>Fecha y Hora Local</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1783" /> <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="1823" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1806" /> - <source>Date and Time</source> - <translation>Fecha y Hora</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> - <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="1824" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> + <source>Date and Time</source> + <translation>Fecha y Hora</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1808" /> + <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="1825" /> <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="1848" /> - <source>Error handling device</source> - <translation>Error de gestión del dispositivo</translation> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1849" /> + <source>Error handling device</source> + <translation>Error de gestión del dispositivo</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1850" /> <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="1891" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1892" /> <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="1917" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1918" /> <source>Python Files (*.py);;All Files (*)</source> <translation>Archivos Python (*.py);;Todos los Archivos (*)</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1927" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1928" /> <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="1936" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1937" /> <source>'mpy-cross' Output</source> <translation>Salida de 'mpy-cross'</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1963" /> <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="2054" /> - <source>Add Unknown Devices</source> - <translation>Añadir Dispositivos Desconocidos</translation> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="2055" /> + <source>Add Unknown Devices</source> + <translation>Añadir Dispositivos Desconocidos</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="2056" /> <source>Select the devices to be added:</source> <translation>Seleccionar los dispositivos a añadir:</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2096" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2105" /> <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="2134" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2143" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation type="unfinished" /> </message>
--- a/src/eric7/i18n/eric7_fr.ts Fri Mar 17 11:29:09 2023 +0100 +++ b/src/eric7/i18n/eric7_fr.ts Fri Mar 17 19:10:33 2023 +0100 @@ -7914,6 +7914,65 @@ </message> </context> <context> + <name>ConvertToUF2Dialog</name> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="44" /> + <source>MicroPython Firmware Files (*.hex *.bin);;All Files (*)</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="162" /> + <source>--- ERROR --- +</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Firmware File:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the path of the MicroPython firmware file to be converted.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Chip Family:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Select the chip family of the firmware file.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Base Address:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the base address for .bin firmware files or leave empty to use the default (0x2000).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Press to start the conversion process.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>CookieDetailsDialog</name> <message> <location filename="../WebBrowser/CookieJar/CookieDetailsDialog.ui" line="0" /> @@ -51061,7 +51120,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1722" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> <source>Synchronize Time</source> <translation>Synchroniser le temps</translation> @@ -51087,27 +51146,27 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2121" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> <source>Install Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2133" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2142" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2139" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> <source>Install Packages</source> <translation type="unfinished">Installer des packages</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1946" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1947" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1572" /> <source>Compile Python File</source> <translation>Compilier le fichier Python</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1970" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1961" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1971" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1576" /> <source>Compile Current Editor</source> <translation type="unfinished" /> @@ -51124,165 +51183,170 @@ </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1607" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1608" /> <source>Flash UF2 Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1610" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1611" /> <source>Manage Unknown Devices</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1613" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1614" /> <source>Ignored Serial Devices</source> <translation>Matériels séries ignorés</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1617" /> <source>Configure</source> <translation>Configuration</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1625" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> <source><h3>Device Version Information</h3></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1636" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1632" /> - <source>Device Version Information</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1637" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <source>Device Version Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> <source>No version information available.</source> <translation>Pas d'information de version disponible.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1661" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1653" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1662" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1654" /> <source>unknown</source> <translation>inconnu</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1667" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1668" /> <source> ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1683" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <source>Device Implementation Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> - <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="1684" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> + <source>Device Implementation Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1676" /> + <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="1685" /> <source>No device implementation information available.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1724" /> <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="1745" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1746" /> <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="1753" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1754" /> <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="1769" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1770" /> <source>Device Date and Time</source> <translation>Date et heure matériel</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1781" /> - <source>Local Date and Time</source> - <translation>Date et heure locales</translation> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> + <source>Local Date and Time</source> + <translation>Date et heure locales</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1783" /> <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="1823" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1806" /> - <source>Date and Time</source> - <translation>Date et heure</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> - <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="1824" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> + <source>Date and Time</source> + <translation>Date et heure</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1808" /> + <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="1825" /> <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="1848" /> - <source>Error handling device</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1849" /> + <source>Error handling device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1850" /> <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="1891" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1892" /> <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="1917" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1918" /> <source>Python Files (*.py);;All Files (*)</source> <translation>Fichiers Python (*.py);;Tous les fichiers (*)</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1927" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1928" /> <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="1936" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1937" /> <source>'mpy-cross' Output</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1963" /> <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="2054" /> - <source>Add Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="2055" /> + <source>Add Unknown Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="2056" /> <source>Select the devices to be added:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2096" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2105" /> <source>Plus any modules on the filesystem.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2134" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2143" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation type="unfinished" /> </message>
--- a/src/eric7/i18n/eric7_it.ts Fri Mar 17 11:29:09 2023 +0100 +++ b/src/eric7/i18n/eric7_it.ts Fri Mar 17 19:10:33 2023 +0100 @@ -7879,6 +7879,65 @@ </message> </context> <context> + <name>ConvertToUF2Dialog</name> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="44" /> + <source>MicroPython Firmware Files (*.hex *.bin);;All Files (*)</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="162" /> + <source>--- ERROR --- +</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Firmware File:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the path of the MicroPython firmware file to be converted.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Chip Family:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Select the chip family of the firmware file.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Base Address:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the base address for .bin firmware files or leave empty to use the default (0x2000).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Press to start the conversion process.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>CookieDetailsDialog</name> <message> <location filename="../WebBrowser/CookieJar/CookieDetailsDialog.ui" line="0" /> @@ -50968,7 +51027,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1722" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> <source>Synchronize Time</source> <translation type="unfinished" /> @@ -50994,27 +51053,27 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2121" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> <source>Install Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2133" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2142" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2139" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> <source>Install Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1946" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1947" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1572" /> <source>Compile Python File</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1970" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1961" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1971" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1576" /> <source>Compile Current Editor</source> <translation type="unfinished" /> @@ -51031,165 +51090,170 @@ </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1607" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1608" /> <source>Flash UF2 Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1610" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1611" /> <source>Manage Unknown Devices</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1613" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1614" /> <source>Ignored Serial Devices</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1617" /> <source>Configure</source> <translation type="unfinished">Configura</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1625" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> <source><h3>Device Version Information</h3></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1636" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1632" /> - <source>Device Version Information</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1637" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <source>Device Version Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> <source>No version information available.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1661" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1653" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1662" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1654" /> <source>unknown</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1667" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1668" /> <source> ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1683" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <source>Device Implementation Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> - <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="1684" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> + <source>Device Implementation Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1676" /> + <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="1685" /> <source>No device implementation information available.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1724" /> <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="1745" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1746" /> <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="1753" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1754" /> <source><h3>Device Date and Time</h3><p>{0}</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1769" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1770" /> <source>Device Date and Time</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1781" /> - <source>Local Date and Time</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> + <source>Local Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1783" /> <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="1823" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1806" /> - <source>Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> - <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="1824" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> + <source>Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1808" /> + <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="1825" /> <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="1848" /> - <source>Error handling device</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1849" /> + <source>Error handling device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1850" /> <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="1891" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1892" /> <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="1917" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1918" /> <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="1927" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1928" /> <source>The Python file <b>{0}</b> does not exist. Aborting...</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1936" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1937" /> <source>'mpy-cross' Output</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1963" /> <source>The current editor does not contain a Python file. Aborting...</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2054" /> - <source>Add Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="2055" /> + <source>Add Unknown Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="2056" /> <source>Select the devices to be added:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2096" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2105" /> <source>Plus any modules on the filesystem.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2134" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2143" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation type="unfinished" /> </message>
--- a/src/eric7/i18n/eric7_pt.ts Fri Mar 17 11:29:09 2023 +0100 +++ b/src/eric7/i18n/eric7_pt.ts Fri Mar 17 19:10:33 2023 +0100 @@ -7894,6 +7894,65 @@ </message> </context> <context> + <name>ConvertToUF2Dialog</name> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="44" /> + <source>MicroPython Firmware Files (*.hex *.bin);;All Files (*)</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="162" /> + <source>--- ERROR --- +</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Firmware File:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the path of the MicroPython firmware file to be converted.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Chip Family:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Select the chip family of the firmware file.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Base Address:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the base address for .bin firmware files or leave empty to use the default (0x2000).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Press to start the conversion process.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>CookieDetailsDialog</name> <message> <location filename="../WebBrowser/CookieJar/CookieDetailsDialog.ui" line="0" /> @@ -50962,7 +51021,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1722" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> <source>Synchronize Time</source> <translation type="unfinished" /> @@ -50988,27 +51047,27 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2121" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> <source>Install Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2133" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2142" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2139" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> <source>Install Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1946" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1947" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1572" /> <source>Compile Python File</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1970" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1961" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1971" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1576" /> <source>Compile Current Editor</source> <translation type="unfinished" /> @@ -51025,165 +51084,170 @@ </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1607" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1608" /> <source>Flash UF2 Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1610" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1611" /> <source>Manage Unknown Devices</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1613" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1614" /> <source>Ignored Serial Devices</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1617" /> <source>Configure</source> <translation type="unfinished">Configurar</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1625" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> <source><h3>Device Version Information</h3></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1636" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1632" /> - <source>Device Version Information</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1637" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <source>Device Version Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> <source>No version information available.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1661" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1653" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1662" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1654" /> <source>unknown</source> <translation type="unfinished">desconhecido</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1667" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1668" /> <source> ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1683" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <source>Device Implementation Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> - <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="1684" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> + <source>Device Implementation Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1676" /> + <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="1685" /> <source>No device implementation information available.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1724" /> <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="1745" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1746" /> <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="1753" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1754" /> <source><h3>Device Date and Time</h3><p>{0}</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1769" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1770" /> <source>Device Date and Time</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1781" /> - <source>Local Date and Time</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> + <source>Local Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1783" /> <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="1823" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1806" /> - <source>Date and Time</source> - <translation type="unfinished">Data e Hora</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> - <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="1824" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> + <source>Date and Time</source> + <translation type="unfinished">Data e Hora</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1808" /> + <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="1825" /> <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="1848" /> - <source>Error handling device</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1849" /> + <source>Error handling device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1850" /> <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="1891" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1892" /> <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="1917" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1918" /> <source>Python Files (*.py);;All Files (*)</source> <translation type="unfinished">Ficheiros Python (*.py);;Ficheiros Todos (*)</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1927" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1928" /> <source>The Python file <b>{0}</b> does not exist. Aborting...</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1936" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1937" /> <source>'mpy-cross' Output</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1963" /> <source>The current editor does not contain a Python file. Aborting...</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2054" /> - <source>Add Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="2055" /> + <source>Add Unknown Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="2056" /> <source>Select the devices to be added:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2096" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2105" /> <source>Plus any modules on the filesystem.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2134" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2143" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation type="unfinished" /> </message>
--- a/src/eric7/i18n/eric7_ru.ts Fri Mar 17 11:29:09 2023 +0100 +++ b/src/eric7/i18n/eric7_ru.ts Fri Mar 17 19:10:33 2023 +0100 @@ -7830,6 +7830,65 @@ </message> </context> <context> + <name>ConvertToUF2Dialog</name> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="44" /> + <source>MicroPython Firmware Files (*.hex *.bin);;All Files (*)</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="162" /> + <source>--- ERROR --- +</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Firmware File:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the path of the MicroPython firmware file to be converted.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Chip Family:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Select the chip family of the firmware file.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Base Address:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the base address for .bin firmware files or leave empty to use the default (0x2000).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Press to start the conversion process.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>CookieDetailsDialog</name> <message> <location filename="../WebBrowser/CookieJar/CookieDetailsDialog.ui" line="0" /> @@ -50899,7 +50958,7 @@ <translation>Показать данные платы</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1722" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> <source>Synchronize Time</source> <translation>Синхронизировать время</translation> @@ -50925,27 +50984,27 @@ <translation>Показать встроенные модули</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2121" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> <source>Install Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2133" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2142" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2139" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> <source>Install Packages</source> <translation type="unfinished">Установить пакеты</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1946" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1947" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1572" /> <source>Compile Python File</source> <translation>Компилировать файл Python</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1970" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1961" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1971" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1576" /> <source>Compile Current Editor</source> <translation>Компилировать текущий редактор</translation> @@ -50962,165 +51021,170 @@ </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1607" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1608" /> <source>Flash UF2 Device</source> <translation>Прошивка UF2-устройств</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1610" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1611" /> <source>Manage Unknown Devices</source> <translation>Менеджер неизвестных устройств</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1613" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1614" /> <source>Ignored Serial Devices</source> <translation>Проигнорированные последовательные устройства</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1617" /> <source>Configure</source> <translation>Настройки</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1625" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> <source><h3>Device Version Information</h3></source> <translation><h3>Информация о версии устройства</h3></translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1636" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1632" /> - <source>Device Version Information</source> - <translation>Информация о версии устройства</translation> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1637" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <source>Device Version Information</source> + <translation>Информация о версии устройства</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> <source>No version information available.</source> <translation>Информация о версии недоступна.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1661" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1653" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1662" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1654" /> <source>unknown</source> <translation>unknown</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1667" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1668" /> <source> ({0})</source> <translation> ({0})</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1683" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <source>Device Implementation Information</source> - <translation>Информация о исполнении устройства</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> - <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="1684" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> + <source>Device Implementation Information</source> + <translation>Информация о исполнении устройства</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1676" /> + <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="1685" /> <source>No device implementation information available.</source> <translation>Информация о реализации устройства отсутствует.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1724" /> <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="1745" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1746" /> <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="1753" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1754" /> <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="1769" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1770" /> <source>Device Date and Time</source> <translation>Дата и время устройства</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1781" /> - <source>Local Date and Time</source> - <translation>Локальные дата и время</translation> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> + <source>Local Date and Time</source> + <translation>Локальные дата и время</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1783" /> <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="1823" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1806" /> - <source>Date and Time</source> - <translation>Дата и время</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> - <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="1824" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> + <source>Date and Time</source> + <translation>Дата и время</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1808" /> + <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="1825" /> <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="1848" /> - <source>Error handling device</source> - <translation>Ошибка при работе с устройством</translation> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1849" /> + <source>Error handling device</source> + <translation>Ошибка при работе с устройством</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1850" /> <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="1891" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1892" /> <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="1917" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1918" /> <source>Python Files (*.py);;All Files (*)</source> <translation>Файлы Python (*.py);;Все файлы (*)</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1927" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1928" /> <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="1936" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1937" /> <source>'mpy-cross' Output</source> <translation>Вывод команды 'mpy-cross'</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1963" /> <source>The current editor does not contain a Python file. Aborting...</source> <translation>Текущий редактор не содержит файл Python. Отмена...</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2054" /> - <source>Add Unknown Devices</source> - <translation>Добавить неизвестное устройство</translation> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="2055" /> + <source>Add Unknown Devices</source> + <translation>Добавить неизвестное устройство</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="2056" /> <source>Select the devices to be added:</source> <translation>Выбор устройств для добавления:</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2096" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2105" /> <source>Plus any modules on the filesystem.</source> <translation>Плюс любые модули в файловой системе.</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2134" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2143" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation type="unfinished" /> </message>
--- a/src/eric7/i18n/eric7_tr.ts Fri Mar 17 11:29:09 2023 +0100 +++ b/src/eric7/i18n/eric7_tr.ts Fri Mar 17 19:10:33 2023 +0100 @@ -7856,6 +7856,65 @@ </message> </context> <context> + <name>ConvertToUF2Dialog</name> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="44" /> + <source>MicroPython Firmware Files (*.hex *.bin);;All Files (*)</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="162" /> + <source>--- ERROR --- +</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Firmware File:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the path of the MicroPython firmware file to be converted.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Chip Family:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Select the chip family of the firmware file.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Base Address:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the base address for .bin firmware files or leave empty to use the default (0x2000).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Press to start the conversion process.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>CookieDetailsDialog</name> <message> <location filename="../WebBrowser/CookieJar/CookieDetailsDialog.ui" line="0" /> @@ -50905,7 +50964,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1722" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> <source>Synchronize Time</source> <translation type="unfinished" /> @@ -50931,27 +50990,27 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2121" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> <source>Install Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2133" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2142" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2139" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> <source>Install Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1946" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1947" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1572" /> <source>Compile Python File</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1970" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1961" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1971" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1576" /> <source>Compile Current Editor</source> <translation type="unfinished" /> @@ -50968,165 +51027,170 @@ </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1607" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1608" /> <source>Flash UF2 Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1610" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1611" /> <source>Manage Unknown Devices</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1613" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1614" /> <source>Ignored Serial Devices</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1617" /> <source>Configure</source> <translation type="unfinished">Yapılandırma</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1625" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> <source><h3>Device Version Information</h3></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1636" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1632" /> - <source>Device Version Information</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1637" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <source>Device Version Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> <source>No version information available.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1661" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1653" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1662" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1654" /> <source>unknown</source> <translation type="unfinished">bilinmeyen</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1667" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1668" /> <source> ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1683" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <source>Device Implementation Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> - <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="1684" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> + <source>Device Implementation Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1676" /> + <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="1685" /> <source>No device implementation information available.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1724" /> <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="1745" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1746" /> <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="1753" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1754" /> <source><h3>Device Date and Time</h3><p>{0}</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1769" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1770" /> <source>Device Date and Time</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1781" /> - <source>Local Date and Time</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> + <source>Local Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1783" /> <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="1823" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1806" /> - <source>Date and Time</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> - <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="1824" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> + <source>Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1808" /> + <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="1825" /> <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="1848" /> - <source>Error handling device</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1849" /> + <source>Error handling device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1850" /> <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="1891" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1892" /> <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="1917" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1918" /> <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="1927" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1928" /> <source>The Python file <b>{0}</b> does not exist. Aborting...</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1936" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1937" /> <source>'mpy-cross' Output</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1963" /> <source>The current editor does not contain a Python file. Aborting...</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2054" /> - <source>Add Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="2055" /> + <source>Add Unknown Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="2056" /> <source>Select the devices to be added:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2096" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2105" /> <source>Plus any modules on the filesystem.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2134" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2143" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation type="unfinished" /> </message>
--- a/src/eric7/i18n/eric7_zh_CN.ts Fri Mar 17 11:29:09 2023 +0100 +++ b/src/eric7/i18n/eric7_zh_CN.ts Fri Mar 17 19:10:33 2023 +0100 @@ -7915,6 +7915,65 @@ </message> </context> <context> + <name>ConvertToUF2Dialog</name> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="44" /> + <source>MicroPython Firmware Files (*.hex *.bin);;All Files (*)</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.py" line="162" /> + <source>--- ERROR --- +</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Firmware File:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the path of the MicroPython firmware file to be converted.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Chip Family:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Select the chip family of the firmware file.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Base Address:</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Enter the base address for .bin firmware files or leave empty to use the default (0x2000).</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Press to start the conversion process.</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/ConvertToUF2Dialog.ui" line="0" /> + <source>Convert</source> + <translation type="unfinished" /> + </message> + </context> + <context> <name>CookieDetailsDialog</name> <message> <location filename="../WebBrowser/CookieJar/CookieDetailsDialog.ui" line="0" /> @@ -50938,7 +50997,7 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1722" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1546" /> <source>Synchronize Time</source> <translation type="unfinished" /> @@ -50964,27 +51023,27 @@ <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2121" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1562" /> <source>Install Package</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2133" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="2130" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2142" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2139" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1566" /> <source>Install Packages</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1946" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1947" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1572" /> <source>Compile Python File</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1970" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1961" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1971" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> <location filename="../MicroPython/MicroPythonWidget.py" line="1576" /> <source>Compile Current Editor</source> <translation type="unfinished" /> @@ -51001,165 +51060,170 @@ </message> <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1607" /> + <source>Convert To UF2</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1608" /> <source>Flash UF2 Device</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1610" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1611" /> <source>Manage Unknown Devices</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1613" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1614" /> <source>Ignored Serial Devices</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1616" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1617" /> <source>Configure</source> <translation type="unfinished">配置</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1625" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1626" /> <source><h3>Device Version Information</h3></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1636" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1632" /> - <source>Device Version Information</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1637" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1633" /> + <source>Device Version Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1638" /> <source>No version information available.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1661" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1653" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1662" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1654" /> <source>unknown</source> <translation type="unfinished">未知</translation> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1667" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1668" /> <source> ({0})</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1683" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1674" /> - <source>Device Implementation Information</source> - <translation type="unfinished" /> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> - <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="1684" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1675" /> + <source>Device Implementation Information</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1676" /> + <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="1685" /> <source>No device implementation information available.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1723" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1724" /> <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="1745" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1746" /> <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="1753" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1754" /> <source><h3>Device Date and Time</h3><p>{0}</p></source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1769" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1770" /> <source>Device Date and Time</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1781" /> - <source>Local Date and Time</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1782" /> + <source>Local Date and Time</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1783" /> <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="1823" /> - <location filename="../MicroPython/MicroPythonWidget.py" line="1806" /> - <source>Date and Time</source> - <translation type="unfinished">日期和时间</translation> - </message> - <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> - <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="1824" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1807" /> + <source>Date and Time</source> + <translation type="unfinished">日期和时间</translation> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1808" /> + <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="1825" /> <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="1848" /> - <source>Error handling device</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="1849" /> + <source>Error handling device</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="1850" /> <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="1891" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1892" /> <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="1917" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1918" /> <source>Python Files (*.py);;All Files (*)</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1927" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1928" /> <source>The Python file <b>{0}</b> does not exist. Aborting...</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1936" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1937" /> <source>'mpy-cross' Output</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="1962" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="1963" /> <source>The current editor does not contain a Python file. Aborting...</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2054" /> - <source>Add Unknown Devices</source> - <translation type="unfinished" /> - </message> - <message> <location filename="../MicroPython/MicroPythonWidget.py" line="2055" /> + <source>Add Unknown Devices</source> + <translation type="unfinished" /> + </message> + <message> + <location filename="../MicroPython/MicroPythonWidget.py" line="2056" /> <source>Select the devices to be added:</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2096" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2105" /> <source>Plus any modules on the filesystem.</source> <translation type="unfinished" /> </message> <message> - <location filename="../MicroPython/MicroPythonWidget.py" line="2134" /> + <location filename="../MicroPython/MicroPythonWidget.py" line="2143" /> <source>Enter the packages to be installed separated by whitespace:</source> <translation type="unfinished" /> </message>