Merge remote-tracking branch 'origin/9.0'

Change-Id: I2e11bfba622c14578f08ca988ad98dab97cb385b
This commit is contained in:
Orgad Shaneh
2022-10-11 17:46:49 +03:00
254 changed files with 2100 additions and 5827 deletions

View File

@@ -16,7 +16,16 @@ General
* Added change log browser `Help > Change Log` (`Qt Creator > Change Log` on * Added change log browser `Help > Change Log` (`Qt Creator > Change Log` on
macOS) macOS)
* Added option for showing locator as a centered popup * Added option for showing locator as a centered popup
* Added non-menu actions to locator `t` filter * Locator `t` filter
* Added non-menu actions
* Added fuzzy matching
Help
----
* Added support for dark themes to Qt documentation (QTCREATORBUG-26557)
* Fixed that Qt 6 documentation was shown for Qt 5 based projects
(QTCREATORBUG-10331)
Editing Editing
------- -------
@@ -27,6 +36,7 @@ Editing
* Added `Create Cursors at Selected Line Ends` * Added `Create Cursors at Selected Line Ends`
* Improved UI for multiple markers on the same line (QTCREATORBUG-27415) * Improved UI for multiple markers on the same line (QTCREATORBUG-27415)
* Fixed performance issue with large selections * Fixed performance issue with large selections
* Fixed saving files with non-breaking spaces (QTCREATORBUG-17875)
* Fixed `Rewrap Paragraph` for Doxygen comments (QTCREATORBUG-9739) * Fixed `Rewrap Paragraph` for Doxygen comments (QTCREATORBUG-9739)
* Fixed MIME type matching for generic highlighting with MIME type aliases * Fixed MIME type matching for generic highlighting with MIME type aliases
@@ -34,14 +44,18 @@ Editing
* Moved code style editor from dialog directly into the preferences page * Moved code style editor from dialog directly into the preferences page
* Added `Show Preprocessed Source` * Added `Show Preprocessed Source`
* Added `Follow Symbol Under Cursor to Type`
* Added `Follow Symbol` for QRC files in string literals (QTCREATORBUG-28087) * Added `Follow Symbol` for QRC files in string literals (QTCREATORBUG-28087)
* Added option for returning only non-value types by const reference * Added option for returning only non-value types by const reference
(QTCREATORBUG-25790) (QTCREATORBUG-25790)
* Added option for using `auto` in `Assign to Local Variable` refactoring
action (QTCREATORBUG-28099)
* Fixed that selection was not considered for refactoring actions * Fixed that selection was not considered for refactoring actions
(QTCREATORBUG-27886) (QTCREATORBUG-27886)
* Clangd * Clangd
* Added option for using single Clangd instance for the whole session * Added option for using single Clangd instance for the whole session
(QTCREATORBUG-26526) (QTCREATORBUG-26526)
* Added option for indexing priority (`--background-index-priority`)
* Added option for maximum number of completion results (default 100) * Added option for maximum number of completion results (default 100)
(QTCREATORBUG-27152) (QTCREATORBUG-27152)
* Added option for document specific preprocessor directives * Added option for document specific preprocessor directives
@@ -51,6 +65,8 @@ Editing
(QTCREATORBUG-27594) (QTCREATORBUG-27594)
* Built-in * Built-in
* Added support for structured bindings (QTCREATORBUG-27975) * Added support for structured bindings (QTCREATORBUG-27975)
* Fixed that document specific preprocessor directives were not used after
session load (QTCREATORBUG-22584)
* ClangFormat * ClangFormat
* Moved settings back to top level preferences page * Moved settings back to top level preferences page
@@ -69,6 +85,10 @@ Editing
* Made `Fit to Screen` sticky and added option for the default * Made `Fit to Screen` sticky and added option for the default
(QTCREATORBUG-27816) (QTCREATORBUG-27816)
### Diff Viewer
* Fixed that calculating differences blocked Qt Creator
Projects Projects
-------- --------
@@ -81,22 +101,30 @@ Projects
* Moved settings from `Kits` and `Build & Run` into their own `CMake` category * Moved settings from `Kits` and `Build & Run` into their own `CMake` category
* Turned `Package manager auto setup` off by default * Turned `Package manager auto setup` off by default
* Added support for CMake configure presets (QTCREATORBUG-24555) * Added support for CMake configure and build presets, including conditions and
toolchain files (QTCREATORBUG-24555)
* Added option for changing environment for configure step * Added option for changing environment for configure step
* Added option for hiding subfolders in source groups (QTCREATORBUG-27432) * Added option for hiding subfolders in source groups (QTCREATORBUG-27432)
* Fixed that `PATH` environment variable was not completely set up during first * Fixed that `PATH` environment variable was not completely set up during first
CMake run CMake run
* Fixed issues with importing builds using Visual C++ generator
### Qbs ### Qbs
* Fixed that `qbs.sysroot` was not considered * Fixed that `qbs.sysroot` was not considered
### Qmake
* Added workaround for `mkspec`s that add compiler flags to `QMAKE_CXX`
(QTCREATORBUG-28201)
Debugging Debugging
--------- ---------
* Added warning for missing QML debugging functionality for mobile and embedded * Added warning for missing QML debugging functionality for mobile and embedded
devices devices
* Fixed display of strings with characters more than 2 bytes long * Fixed display of strings with characters more than 2 bytes long
* Improved type name lookup performance for heavily templated code
Version Control Systems Version Control Systems
----------------------- -----------------------
@@ -109,6 +137,7 @@ Test Integration
---------------- ----------------
* Added support for Squish * Added support for Squish
([Documentation](https://doc-snapshots.qt.io/qtcreator-9.0/creator-squish.html))
* Catch 2 * Catch 2
* Fixed handling of exceptions (QTCREATORBUG-28131) * Fixed handling of exceptions (QTCREATORBUG-28131)
@@ -137,12 +166,21 @@ Platforms
* Added option for SSH port to wizard * Added option for SSH port to wizard
* Added fallback for devices without `base64` * Added fallback for devices without `base64`
* Added experimental support to user remote linux build devices (QTCREATORBUG-28242)
### Docker ### Docker
* Added option for `docker` command * Added option for `docker` command
* Added detection of Python * Added detection of Python
* Added option to auto-detect in PATH plus additional directories
* Added option for overwriting `ENTRYPOINT` of docker container
* Added automatic mounting of source and build directory before building
* Improved device wizard * Improved device wizard
* Added sorting of images
* Added option to hide images without tag
* Added double-click for selecting image
* Fixed interrupting and pausing of GDB
* Fixed running `ctest` on device
Credits for these changes go to: Credits for these changes go to:
-------------------------------- --------------------------------
@@ -165,7 +203,9 @@ Fawzi Mohamed
Florian Koch Florian Koch
Henning Gruendl Henning Gruendl
Jaroslaw Kobus Jaroslaw Kobus
Leena Miettinen
Lucie Gérard Lucie Gérard
Marc Mutz
Marco Bubke Marco Bubke
Marcus Tillmanns Marcus Tillmanns
Miikka Heikkinen Miikka Heikkinen

Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

View File

@@ -145,6 +145,9 @@
removed. The real Type must contain the given Type. For example, \c int removed. The real Type must contain the given Type. For example, \c int
matches \c int32_t but not \c vector<int>, and \c vector matches matches \c int32_t but not \c vector<int>, and \c vector matches
\c {std::pmr::vector<int>} but not \c {std::optional<vector<int>>}. \c {std::pmr::vector<int>} but not \c {std::optional<vector<int>>}.
To return non-trivial objects by using a \c const reference, select the
\uicontrol {Return non-value types by const reference} check box.
\endif \endif
\section1 Summary of Refactoring Actions \section1 Summary of Refactoring Actions
@@ -721,6 +724,13 @@
Foo * localFoo = new Foo; Foo * localFoo = new Foo;
\endcode \endcode
By default, \QC uses the \c auto variable type when creating the
variable. To label the variable with its actual type, select
\uicontrol Edit > \uicontrol Preferences > \uicontrol C++ >
\uicontrol {Quick Fixes}, and then deselect the
\uicontrol {Use type "auto" when creating new variables} check
box.
\li Function call or class name \li Function call or class name
\row \row
\li Insert Virtual Functions of Base Classes \li Insert Virtual Functions of Base Classes

View File

@@ -41,13 +41,13 @@
The following image displays the context sensitive help in the \uicontrol Edit The following image displays the context sensitive help in the \uicontrol Edit
mode. mode.
\image qtcreator-context-sensitive-help.png \image qtcreator-context-sensitive-help.png "Context-sensitive help in Edit mode"
If the help HTML file does not use a style sheet, you can change the font If the help HTML file does not use a style sheet, you can change the font
family, style, and size in \uicontrol Edit > \uicontrol Preferences > family, style, and size in \uicontrol Edit > \uicontrol Preferences >
\uicontrol Help > \uicontrol General. \uicontrol Help > \uicontrol General.
\image qtcreator-help-options.png "Help General preferences" \image qtcreator-help-options.png "General tab in Help preferences"
You can set the default zoom level in the \uicontrol Zoom field. When You can set the default zoom level in the \uicontrol Zoom field. When
viewing help pages, you can use the mouse scroll wheel to zoom them. To viewing help pages, you can use the mouse scroll wheel to zoom them. To

View File

@@ -76,7 +76,7 @@
\endlist \endlist
To switch between sessions, select \uicontrol {Switch To}. To switch between sessions, select \uicontrol {Open}.
\if defined(qtcreator) \if defined(qtcreator)
When you launch \QC, a list of existing sessions is displayed in the When you launch \QC, a list of existing sessions is displayed in the

View File

@@ -218,6 +218,10 @@
\endlist \endlist
Select \uicontrol {Set as Default} to use the current settings for the
background and outline modes and fitting images to screen as default
values for the image viewer.
\section2 Exporting SVG Images \section2 Exporting SVG Images
If you have a freely scalable icon in the SVG format, If you have a freely scalable icon in the SVG format,

View File

@@ -10999,8 +10999,8 @@ se projektu &apos;%2&apos; nepodařilo přidat.</translation>
<translation>&amp;Smazat</translation> <translation>&amp;Smazat</translation>
</message> </message>
<message> <message>
<source>&amp;Switch To</source> <source>&amp;Open</source>
<translation>&amp;Přepnout na sezení</translation> <translation>&amp;Otevřít</translation>
</message> </message>
<message> <message>
<source>&lt;a href=&quot;qthelp://org.qt-project.qtcreator/doc/creator-project-managing-sessions.html&quot;&gt;What is a Session?&lt;/a&gt;</source> <source>&lt;a href=&quot;qthelp://org.qt-project.qtcreator/doc/creator-project-managing-sessions.html&quot;&gt;What is a Session?&lt;/a&gt;</source>
@@ -56809,7 +56809,7 @@ Tento průvodce vás provede základními kroky, které jsou nutné pro nasazen
</message> </message>
</context> </context>
<context> <context>
<name>BareMetal::BareMetalDeviceConfigurationWidget</name> <name>BareMetal</name>
<message> <message>
<source>Form</source> <source>Form</source>
<translation>Formulář</translation> <translation>Formulář</translation>
@@ -56826,13 +56826,6 @@ Tento průvodce vás provede základními kroky, které jsou nutné pro nasazen
<source>GDB commands:</source> <source>GDB commands:</source>
<translation>Příkazy GDB:</translation> <translation>Příkazy GDB:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWizardSetupPage</name>
<message>
<source>Form</source>
<translation>Formulář</translation>
</message>
<message> <message>
<source>Name:</source> <source>Name:</source>
<translation>Název:</translation> <translation>Název:</translation>
@@ -56841,18 +56834,6 @@ Tento průvodce vás provede základními kroky, které jsou nutné pro nasazen
<source>localhost</source> <source>localhost</source>
<translation>localhost</translation> <translation>localhost</translation>
</message> </message>
<message>
<source>GDB port:</source>
<translation>Port GDB:</translation>
</message>
<message>
<source>GDB host:</source>
<translation>Hostitel GDB:</translation>
</message>
<message>
<source>GDB commands:</source>
<translation>Příkazy GDB:</translation>
</message>
<message> <message>
<source>load <source>load
monitor reset</source> monitor reset</source>
@@ -57779,53 +57760,27 @@ Soubory ve zdrojovém adresáři balíčku pro Android jsou zkopírovány do adr
</message> </message>
</context> </context>
<context> <context>
<name>BareMetal::Internal::BareMetalDevice</name> <name>BareMetal</name>
<message> <message>
<source>Bare Metal</source> <source>Bare Metal</source>
<translation>Bare Metal</translation> <translation>Bare Metal</translation>
</message> </message>
</context>
<context>
<name>BareMetal::BareMetalDeviceConfigurationFactory</name>
<message> <message>
<source>Bare Metal Device</source> <source>Bare Metal Device</source>
<translation>Zařízení Bare Metal</translation> <translation>Zařízení Bare Metal</translation>
</message> </message>
</context>
<context>
<name>BareMetal::BareMetalDeviceConfigurationWizard</name>
<message> <message>
<source>New Bare Metal Device Configuration Setup</source> <source>New Bare Metal Device Configuration Setup</source>
<translation>Zřízení nového nastavení zařízení Bare Metal</translation> <translation>Zřízení nového nastavení zařízení Bare Metal</translation>
</message> </message>
</context>
<context>
<name>BareMetal::BareMetalDeviceConfigurationWizardSetupPage</name>
<message> <message>
<source>Set up GDB Server or Hardware Debugger</source> <source>Set up GDB Server or Hardware Debugger</source>
<translation>Nastavit server GDB nebo hardwarový ladicí program</translation> <translation>Nastavit server GDB nebo hardwarový ladicí program</translation>
</message> </message>
<message>
<source>Bare Metal Device</source>
<translation>Zařízení Bare Metal</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::BareMetalGdbCommandsDeployStepWidget</name>
<message>
<source>GDB commands:</source>
<translation>Příkazy GDB:</translation>
</message>
</context>
<context>
<name>BareMetal::BareMetalGdbCommandsDeployStep</name>
<message> <message>
<source>GDB commands</source> <source>GDB commands</source>
<translation>Příkazy GDB</translation> <translation>Příkazy GDB</translation>
</message> </message>
</context>
<context>
<name>BareMetal::BareMetalRunConfiguration</name>
<message> <message>
<source>%1 (via GDB server or hardware debugger)</source> <source>%1 (via GDB server or hardware debugger)</source>
<translation>%1 (pomocí serveru GDB nebo hardwarového ladicího programu)</translation> <translation>%1 (pomocí serveru GDB nebo hardwarového ladicího programu)</translation>
@@ -57835,16 +57790,10 @@ Soubory ve zdrojovém adresáři balíčku pro Android jsou zkopírovány do adr
<extracomment>Bare Metal run configuration default run name</extracomment> <extracomment>Bare Metal run configuration default run name</extracomment>
<translation>Spustit na serveru GDB nebo hardwarovém ladicím programu</translation> <translation>Spustit na serveru GDB nebo hardwarovém ladicím programu</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalRunConfigurationFactory</name>
<message> <message>
<source>%1 (on GDB server or hardware debugger)</source> <source>%1 (on GDB server or hardware debugger)</source>
<translation>%1 (na serveru GDB nebo hardwarovém ladicím programu)</translation> <translation>%1 (na serveru GDB nebo hardwarovém ladicím programu)</translation>
</message> </message>
</context>
<context>
<name>BareMetal::BareMetalRunConfigurationWidget</name>
<message> <message>
<source>Executable:</source> <source>Executable:</source>
<translation>Spustitelný soubor:</translation> <translation>Spustitelný soubor:</translation>
@@ -57865,9 +57814,6 @@ Soubory ve zdrojovém adresáři balíčku pro Android jsou zkopírovány do adr
<source>Unknown</source> <source>Unknown</source>
<translation>Neznámý</translation> <translation>Neznámý</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalRunControlFactory</name>
<message> <message>
<source>Cannot debug: Kit has no device.</source> <source>Cannot debug: Kit has no device.</source>
<translation>Nelze ladit: Kit nemá žádné zařízení.</translation> <translation>Nelze ladit: Kit nemá žádné zařízení.</translation>

View File

@@ -2340,16 +2340,10 @@ Advarsel: dette er en eksperimentel facilitet og kan lede til at test-eksekverba
<source>Enter GDB commands to reset the hardware. The MCU should be halted after these commands.</source> <source>Enter GDB commands to reset the hardware. The MCU should be halted after these commands.</source>
<translation>Indtast GDB-kommandoer for at nulstille hardwaren. MCU&apos;en bør standses efter disse kommandoer.</translation> <translation>Indtast GDB-kommandoer for at nulstille hardwaren. MCU&apos;en bør standses efter disse kommandoer.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::GdbServerProvider</name>
<message> <message>
<source>Clone of %1</source> <source>Clone of %1</source>
<translation>Klon af %1</translation> <translation>Klon af %1</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalCustomRunConfiguration</name>
<message> <message>
<source>Unknown</source> <source>Unknown</source>
<translation>Ukendt</translation> <translation>Ukendt</translation>
@@ -2366,9 +2360,6 @@ Advarsel: dette er en eksperimentel facilitet og kan lede til at test-eksekverba
<source>Custom Executable</source> <source>Custom Executable</source>
<translation>Brugerdefineret eksekverbar</translation> <translation>Brugerdefineret eksekverbar</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDebugSupport</name>
<message> <message>
<source>Cannot debug: Kit has no device.</source> <source>Cannot debug: Kit has no device.</source>
<translation>Kan ikke fejlrette: kit har ingen enhed.</translation> <translation>Kan ikke fejlrette: kit har ingen enhed.</translation>
@@ -2385,37 +2376,22 @@ Advarsel: dette er en eksperimentel facilitet og kan lede til at test-eksekverba
<source>Cannot debug: Could not find executable for &quot;%1&quot;.</source> <source>Cannot debug: Could not find executable for &quot;%1&quot;.</source>
<translation>Kan ikke fejlrette: kunne ikke finde eksekverbar for &quot;%1&quot;.</translation> <translation>Kan ikke fejlrette: kunne ikke finde eksekverbar for &quot;%1&quot;.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDevice</name>
<message> <message>
<source>Bare Metal</source> <source>Bare Metal</source>
<translation>Bare Metal</translation> <translation>Bare Metal</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationFactory</name>
<message> <message>
<source>Bare Metal Device</source> <source>Bare Metal Device</source>
<translation>Bare Metal-enhed</translation> <translation>Bare Metal-enhed</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWidget</name>
<message> <message>
<source>GDB server provider:</source> <source>GDB server provider:</source>
<translation>GDB-serverudbyder:</translation> <translation>GDB-serverudbyder:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWizard</name>
<message> <message>
<source>New Bare Metal Device Configuration Setup</source> <source>New Bare Metal Device Configuration Setup</source>
<translation>Ny Bare Metal-enhed konfigurationsopsætning</translation> <translation>Ny Bare Metal-enhed konfigurationsopsætning</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWizardSetupPage</name>
<message> <message>
<source>Set up GDB Server or Hardware Debugger</source> <source>Set up GDB Server or Hardware Debugger</source>
<translation>Opsæt GDB-server eller hardware-fejlretter</translation> <translation>Opsæt GDB-server eller hardware-fejlretter</translation>
@@ -2424,38 +2400,14 @@ Advarsel: dette er en eksperimentel facilitet og kan lede til at test-eksekverba
<source>Name:</source> <source>Name:</source>
<translation>Navn:</translation> <translation>Navn:</translation>
</message> </message>
<message>
<source>GDB server provider:</source>
<translation>GDB-serverudbyder:</translation>
</message>
<message>
<source>Bare Metal Device</source>
<translation>Bare Metal-enhed</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::BareMetalGdbCommandsDeployStep</name>
<message> <message>
<source>GDB commands</source> <source>GDB commands</source>
<translation>GDB-kommandoer</translation> <translation>GDB-kommandoer</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalGdbCommandsDeployStepWidget</name>
<message> <message>
<source>GDB commands:</source> <source>GDB commands:</source>
<translation>GDB-kommandoer:</translation> <translation>GDB-kommandoer:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalRunConfiguration</name>
<message>
<source>Unknown</source>
<translation>Ukendt</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::DefaultGdbServerProviderConfigWidget</name>
<message> <message>
<source>Host:</source> <source>Host:</source>
<translation>Vært:</translation> <translation>Vært:</translation>
@@ -2468,16 +2420,10 @@ Advarsel: dette er en eksperimentel facilitet og kan lede til at test-eksekverba
<source>Reset commands:</source> <source>Reset commands:</source>
<translation>Nulstil-kommandoer:</translation> <translation>Nulstil-kommandoer:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::DefaultGdbServerProviderFactory</name>
<message> <message>
<source>Default</source> <source>Default</source>
<translation>Standard</translation> <translation>Standard</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProviderChooser</name>
<message> <message>
<source>Manage...</source> <source>Manage...</source>
<translation>Håndter...</translation> <translation>Håndter...</translation>
@@ -2486,17 +2432,10 @@ Advarsel: dette er en eksperimentel facilitet og kan lede til at test-eksekverba
<source>None</source> <source>None</source>
<translation>Ingen</translation> <translation>Ingen</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProviderConfigWidget</name>
<message> <message>
<source>Enter the name of the GDB server provider.</source> <source>Enter the name of the GDB server provider.</source>
<translation>Indtast navnet GDB-serverudbyderen.</translation> <translation>Indtast navnet GDB-serverudbyderen.</translation>
</message> </message>
<message>
<source>Name:</source>
<translation>Navn:</translation>
</message>
<message> <message>
<source>Choose the desired startup mode of the GDB server provider.</source> <source>Choose the desired startup mode of the GDB server provider.</source>
<translation>Vælg den ønskede opstart-tilstand af GDB-serverudbyderen.</translation> <translation>Vælg den ønskede opstart-tilstand af GDB-serverudbyderen.</translation>
@@ -2517,9 +2456,6 @@ Advarsel: dette er en eksperimentel facilitet og kan lede til at test-eksekverba
<source>Startup in Pipe Mode</source> <source>Startup in Pipe Mode</source>
<translation>Opstart i pipe-tilstand</translation> <translation>Opstart i pipe-tilstand</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProviderModel</name>
<message> <message>
<source>Name</source> <source>Name</source>
<translation>Navn</translation> <translation>Navn</translation>
@@ -2536,9 +2472,6 @@ Advarsel: dette er en eksperimentel facilitet og kan lede til at test-eksekverba
<source>The following providers were already configured:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;They were not configured again.</source> <source>The following providers were already configured:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;They were not configured again.</source>
<translation>Følgende udbydere var allerede konfigureret:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;De blev ikke konfigureret igen.</translation> <translation>Følgende udbydere var allerede konfigureret:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;De blev ikke konfigureret igen.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProvidersSettingsPage</name>
<message> <message>
<source>Add</source> <source>Add</source>
<translation>Tilføj</translation> <translation>Tilføj</translation>
@@ -2555,13 +2488,6 @@ Advarsel: dette er en eksperimentel facilitet og kan lede til at test-eksekverba
<source>GDB Server Providers</source> <source>GDB Server Providers</source>
<translation>GDB-serverudbydere</translation> <translation>GDB-serverudbydere</translation>
</message> </message>
<message>
<source>Bare Metal</source>
<translation>Bare Metal</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::HostWidget</name>
<message> <message>
<source>Enter TCP/IP hostname of the GDB server provider, like &quot;localhost&quot; or &quot;192.0.2.1&quot;.</source> <source>Enter TCP/IP hostname of the GDB server provider, like &quot;localhost&quot; or &quot;192.0.2.1&quot;.</source>
<translation>Indtast TCP/IP-værtsnavn af GDB-serverudbyderen, såsom &quot;localhost&quot; eller &quot;192.0.2.1&quot;.</translation> <translation>Indtast TCP/IP-værtsnavn af GDB-serverudbyderen, såsom &quot;localhost&quot; eller &quot;192.0.2.1&quot;.</translation>
@@ -2570,13 +2496,6 @@ Advarsel: dette er en eksperimentel facilitet og kan lede til at test-eksekverba
<source>Enter TCP/IP port which will be listened by the GDB server provider.</source> <source>Enter TCP/IP port which will be listened by the GDB server provider.</source>
<translation>Indtast TCP/IP-port som skal lyttes af GDB-serverudbyderen.</translation> <translation>Indtast TCP/IP-port som skal lyttes af GDB-serverudbyderen.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::OpenOcdGdbServerProviderConfigWidget</name>
<message>
<source>Host:</source>
<translation>Vært:</translation>
</message>
<message> <message>
<source>Executable file:</source> <source>Executable file:</source>
<translation>Eksekverbar fil:</translation> <translation>Eksekverbar fil:</translation>
@@ -2593,32 +2512,10 @@ Advarsel: dette er en eksperimentel facilitet og kan lede til at test-eksekverba
<source>Additional arguments:</source> <source>Additional arguments:</source>
<translation>Yderligere argumenter:</translation> <translation>Yderligere argumenter:</translation>
</message> </message>
<message>
<source>Init commands:</source>
<translation>Init-kommandoer:</translation>
</message>
<message>
<source>Reset commands:</source>
<translation>Nulstil-kommandoer:</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::OpenOcdGdbServerProviderFactory</name>
<message> <message>
<source>OpenOCD</source> <source>OpenOCD</source>
<translation>OpenOCD</translation> <translation>OpenOCD</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::StLinkUtilGdbServerProviderConfigWidget</name>
<message>
<source>Host:</source>
<translation>Vært:</translation>
</message>
<message>
<source>Executable file:</source>
<translation>Eksekverbar fil:</translation>
</message>
<message> <message>
<source>Specify the verbosity level (0..99).</source> <source>Specify the verbosity level (0..99).</source>
<translation>Angiv detaljeniveauet (0..99).</translation> <translation>Angiv detaljeniveauet (0..99).</translation>
@@ -2651,14 +2548,6 @@ Advarsel: dette er en eksperimentel facilitet og kan lede til at test-eksekverba
<source>Version:</source> <source>Version:</source>
<translation>Version:</translation> <translation>Version:</translation>
</message> </message>
<message>
<source>Init commands:</source>
<translation>Init-kommandoer:</translation>
</message>
<message>
<source>Reset commands:</source>
<translation>Nulstil-kommandoer:</translation>
</message>
<message> <message>
<source>ST-LINK/V1</source> <source>ST-LINK/V1</source>
<translation>ST-LINK/V1</translation> <translation>ST-LINK/V1</translation>
@@ -2667,9 +2556,6 @@ Advarsel: dette er en eksperimentel facilitet og kan lede til at test-eksekverba
<source>ST-LINK/V2</source> <source>ST-LINK/V2</source>
<translation>ST-LINK/V2</translation> <translation>ST-LINK/V2</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::StLinkUtilGdbServerProviderFactory</name>
<message> <message>
<source>ST-LINK Utility</source> <source>ST-LINK Utility</source>
<translation>ST-LINK-redskab</translation> <translation>ST-LINK-redskab</translation>
@@ -21150,21 +21036,15 @@ Fejl: %5</translation>
</message> </message>
</context> </context>
<context> <context>
<name>Nim::NimBuildConfigurationFactory</name> <name>Nim</name>
<message> <message>
<source>Build</source> <source>Build</source>
<translation>Byg</translation> <translation>Byg</translation>
</message> </message>
</context>
<context>
<name>Nim::NimBuildConfigurationWidget</name>
<message> <message>
<source>Build directory:</source> <source>Build directory:</source>
<translation>Bygmappe:</translation> <translation>Bygmappe:</translation>
</message> </message>
</context>
<context>
<name>Nim::NimCompilerBuildStepConfigWidget</name>
<message> <message>
<source>Target:</source> <source>Target:</source>
<translation>Mål:</translation> <translation>Mål:</translation>
@@ -21193,16 +21073,10 @@ Fejl: %5</translation>
<source>Release</source> <source>Release</source>
<translation>Udgivelse</translation> <translation>Udgivelse</translation>
</message> </message>
</context>
<context>
<name>Nim::NimCompilerBuildStepFactory</name>
<message> <message>
<source>Nim Compiler Build Step</source> <source>Nim Compiler Build Step</source>
<translation>Nim-kompiler byggetrin</translation> <translation>Nim-kompiler byggetrin</translation>
</message> </message>
</context>
<context>
<name>Nim::NimCompilerCleanStep</name>
<message> <message>
<source>Nim Clean Step</source> <source>Nim Clean Step</source>
<translation>Nim renstrin</translation> <translation>Nim renstrin</translation>
@@ -21223,24 +21097,15 @@ Fejl: %5</translation>
<source>Clean step completed successfully.</source> <source>Clean step completed successfully.</source>
<translation>Renstrin fuldført.</translation> <translation>Renstrin fuldført.</translation>
</message> </message>
</context>
<context>
<name>Nim::NimCompilerCleanStepConfigWidget</name>
<message> <message>
<source>Working directory:</source> <source>Working directory:</source>
<translation>Arbejdsmappe:</translation> <translation>Arbejdsmappe:</translation>
</message> </message>
</context>
<context>
<name>Nim::NimPlugin</name>
<message> <message>
<source>Nim</source> <source>Nim</source>
<comment>SnippetProvider</comment> <comment>SnippetProvider</comment>
<translation>Nim</translation> <translation>Nim</translation>
</message> </message>
</context>
<context>
<name>Nim::NimProject</name>
<message> <message>
<source>Scanning for Nim files</source> <source>Scanning for Nim files</source>
<translation>Skanner efter Nim-filer</translation> <translation>Skanner efter Nim-filer</translation>
@@ -21253,9 +21118,6 @@ Fejl: %5</translation>
<source>Nim compiler does not exist.</source> <source>Nim compiler does not exist.</source>
<translation>Nim-kompiler findes ikke.</translation> <translation>Nim-kompiler findes ikke.</translation>
</message> </message>
</context>
<context>
<name>Nim::NimSettings</name>
<message> <message>
<source>Global</source> <source>Global</source>
<comment>Settings</comment> <comment>Settings</comment>
@@ -21265,9 +21127,6 @@ Fejl: %5</translation>
<source>Nim</source> <source>Nim</source>
<translation>Nim</translation> <translation>Nim</translation>
</message> </message>
</context>
<context>
<name>Nim::NimToolChainConfigWidget</name>
<message> <message>
<source>&amp;Compiler path:</source> <source>&amp;Compiler path:</source>
<translation>&amp;Kompilersti:</translation> <translation>&amp;Kompilersti:</translation>
@@ -21276,62 +21135,22 @@ Fejl: %5</translation>
<source>&amp;Compiler version:</source> <source>&amp;Compiler version:</source>
<translation>&amp;Kompiler-version:</translation> <translation>&amp;Kompiler-version:</translation>
</message> </message>
</context>
<context>
<name>Nim::NimToolChainFactory</name>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context>
<name>NimBuildConfigurationWidget</name>
<message> <message>
<source>General</source> <source>General</source>
<translation>Generelt</translation> <translation>Generelt</translation>
</message> </message>
</context>
<context>
<name>NimCodeStylePreferencesFactory</name>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context>
<name>NimCodeStyleSettingsPage</name>
<message> <message>
<source>Code Style</source> <source>Code Style</source>
<translation>Kodestil</translation> <translation>Kodestil</translation>
</message> </message>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context>
<name>NimCompilerBuildStep</name>
<message>
<source>Nim Compiler Build Step</source>
<translation>Nim-kompiler byggetrin</translation>
</message>
</context>
<context>
<name>NimCompilerBuildStepConfigWidget</name>
<message> <message>
<source>Nim build step</source> <source>Nim build step</source>
<translation>Nim-byggetrin</translation> <translation>Nim-byggetrin</translation>
</message> </message>
</context>
<context>
<name>NimCompilerCleanStepFactory</name>
<message> <message>
<source>Nim Compiler Clean Step</source> <source>Nim Compiler Clean Step</source>
<translation>Nim-kompiler renstrin</translation> <translation>Nim-kompiler renstrin</translation>
</message> </message>
</context>
<context>
<name>NimCompilerCleanStepWidget</name>
<message> <message>
<source>Nim clean step</source> <source>Nim clean step</source>
<translation>Nim renstrin</translation> <translation>Nim renstrin</translation>
@@ -24586,8 +24405,8 @@ til projektet &quot;%2&quot;.</translation>
<translation>&amp;Slet</translation> <translation>&amp;Slet</translation>
</message> </message>
<message> <message>
<source>&amp;Switch To</source> <source>&amp;Open</source>
<translation>&amp;Skift til</translation> <translation>&amp;Åbn</translation>
</message> </message>
<message> <message>
<source>Restore last session on startup</source> <source>Restore last session on startup</source>
@@ -42856,19 +42675,12 @@ Vil du overskrive dem?</translation>
</message> </message>
</context> </context>
<context> <context>
<name>Nim::NimRunConfiguration</name> <name>Nim</name>
<message> <message>
<source>Current Build Target</source> <source>Current Build Target</source>
<translation>Aktuelle byggemål</translation> <translation>Aktuelle byggemål</translation>
</message> </message>
</context> </context>
<context>
<name>Nim::NimCodeStyleSettingsPage</name>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context> <context>
<name>ProjectExplorer::BuildStepList</name> <name>ProjectExplorer::BuildStepList</name>
<message> <message>

View File

@@ -6605,8 +6605,8 @@ konnte dem Projekt &quot;%2&quot; nicht hinzugefügt werden.</translation>
<translation>&lt;a href=&quot;qthelp://org.qt-project.qtcreator/doc/creator-project-managing-sessions.html&quot;&gt;Was ist eine Sitzung?&lt;/a&gt;</translation> <translation>&lt;a href=&quot;qthelp://org.qt-project.qtcreator/doc/creator-project-managing-sessions.html&quot;&gt;Was ist eine Sitzung?&lt;/a&gt;</translation>
</message> </message>
<message> <message>
<source>&amp;Switch To</source> <source>&amp;Open</source>
<translation>&amp;Verwenden</translation> <translation>&amp;Öffnen</translation>
</message> </message>
</context> </context>
<context> <context>
@@ -23474,7 +23474,7 @@ Bitte schließen Sie alle laufenden Instanzen Ihrer Anwendung vor dem Erstellen.
</message> </message>
</context> </context>
<context> <context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWizardSetupPage</name> <name>BareMetal</name>
<message> <message>
<source>Set up Debug Server or Hardware Debugger</source> <source>Set up Debug Server or Hardware Debugger</source>
<translation>Debug-Server oder Hardware-Debugger einrichten</translation> <translation>Debug-Server oder Hardware-Debugger einrichten</translation>
@@ -23885,7 +23885,7 @@ Möchten Sie das vorhandene Paket deinstallieren?</translation>
</message> </message>
</context> </context>
<context> <context>
<name>BareMetal::Internal::BareMetalDevice</name> <name>BareMetal</name>
<message> <message>
<source>Bare Metal</source> <source>Bare Metal</source>
<translation>Bare Metal</translation> <translation>Bare Metal</translation>
@@ -23894,9 +23894,6 @@ Möchten Sie das vorhandene Paket deinstallieren?</translation>
<source>Bare Metal Device</source> <source>Bare Metal Device</source>
<translation>Bare-Metal-Gerät</translation> <translation>Bare-Metal-Gerät</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalGdbCommandsDeployStepWidget</name>
<message> <message>
<source>GDB commands:</source> <source>GDB commands:</source>
<translation>GDB-Kommandos:</translation> <translation>GDB-Kommandos:</translation>
@@ -26963,30 +26960,14 @@ Bitte installieren Sie ein Android-SDK der API-Version %1 oder neuer.</translati
<source>Enter GDB commands to reset the hardware. The MCU should be halted after these commands.</source> <source>Enter GDB commands to reset the hardware. The MCU should be halted after these commands.</source>
<translation>Geben Sie GDB-Kommandos ein, um die Hardware zurückzusetzen. Die MCU sollte danach angehalten sein.</translation> <translation>Geben Sie GDB-Kommandos ein, um die Hardware zurückzusetzen. Die MCU sollte danach angehalten sein.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWidget</name>
<message>
<source>Debug server provider:</source>
<translation>Debug-Server-Provider:</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWizard</name>
<message> <message>
<source>New Bare Metal Device Configuration Setup</source> <source>New Bare Metal Device Configuration Setup</source>
<translation>Einrichtung der Konfiguration für neues Bare-Metal-Gerät</translation> <translation>Einrichtung der Konfiguration für neues Bare-Metal-Gerät</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalGdbCommandsDeployStep</name>
<message> <message>
<source>GDB commands</source> <source>GDB commands</source>
<translation>GDB-Kommandos</translation> <translation>GDB-Kommandos</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalRunConfiguration</name>
<message> <message>
<source>Unknown</source> <source>Unknown</source>
<translation>Unbekannt</translation> <translation>Unbekannt</translation>
@@ -31414,11 +31395,7 @@ Senden selbst auch Zeit benötigt.</translation>
</message> </message>
</context> </context>
<context> <context>
<name>BareMetal::Internal::BareMetalCustomRunConfiguration</name> <name>BareMetal</name>
<message>
<source>Unknown</source>
<translation>Unbekannt</translation>
</message>
<message> <message>
<source>The remote executable must be set in order to run a custom remote run configuration.</source> <source>The remote executable must be set in order to run a custom remote run configuration.</source>
<translation>Die entfernte ausführbare Datei muss eingestellt sein um eine benutzerdefinierte enternte Ausführungskonfiguration zu verwenden.</translation> <translation>Die entfernte ausführbare Datei muss eingestellt sein um eine benutzerdefinierte enternte Ausführungskonfiguration zu verwenden.</translation>
@@ -31427,9 +31404,6 @@ Senden selbst auch Zeit benötigt.</translation>
<source>Custom Executable</source> <source>Custom Executable</source>
<translation>Benutzerdefinierte ausführbare Datei</translation> <translation>Benutzerdefinierte ausführbare Datei</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDebugSupport</name>
<message> <message>
<source>Cannot debug: Kit has no device.</source> <source>Cannot debug: Kit has no device.</source>
<translation>Kann nicht debuggen: Das Kit hat kein Gerät.</translation> <translation>Kann nicht debuggen: Das Kit hat kein Gerät.</translation>
@@ -31458,9 +31432,6 @@ Senden selbst auch Zeit benötigt.</translation>
<source>Unable to create an uVision project options template.</source> <source>Unable to create an uVision project options template.</source>
<translation>Es kann keine uVision-Projekteinstellungsvorlage erzeugt werden.</translation> <translation>Es kann keine uVision-Projekteinstellungsvorlage erzeugt werden.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProviderConfigWidget</name>
<message> <message>
<source>Choose the desired startup mode of the GDB server provider.</source> <source>Choose the desired startup mode of the GDB server provider.</source>
<translation>Wählen Sie den gewünschten Startmodus des GDB-Server-Providers.</translation> <translation>Wählen Sie den gewünschten Startmodus des GDB-Server-Providers.</translation>
@@ -31473,10 +31444,6 @@ Senden selbst auch Zeit benötigt.</translation>
<source>Peripheral description files (*.svd)</source> <source>Peripheral description files (*.svd)</source>
<translation>Peripherie-Beschreibungsdatei (*.svd)</translation> <translation>Peripherie-Beschreibungsdatei (*.svd)</translation>
</message> </message>
<message>
<source>Select Peripheral Description File</source>
<translation>Wählen Sie eine Peripherie-Beschreibungsdateien</translation>
</message>
<message> <message>
<source>Peripheral description file:</source> <source>Peripheral description file:</source>
<translation>Peripherie-Beschreibungsdatei:</translation> <translation>Peripherie-Beschreibungsdatei:</translation>
@@ -31489,9 +31456,6 @@ Senden selbst auch Zeit benötigt.</translation>
<source>Startup in Pipe Mode</source> <source>Startup in Pipe Mode</source>
<translation>Im Pipe-Modus starten</translation> <translation>Im Pipe-Modus starten</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::HostWidget</name>
<message> <message>
<source>Enter TCP/IP hostname of the debug server, like &quot;localhost&quot; or &quot;192.0.2.1&quot;.</source> <source>Enter TCP/IP hostname of the debug server, like &quot;localhost&quot; or &quot;192.0.2.1&quot;.</source>
<translation>Geben Sie den TCP/IP-Hostnamen des Debug-Servers ein, etwa &quot;localhost&quot; oder &quot;192.0.2.1&quot;.</translation> <translation>Geben Sie den TCP/IP-Hostnamen des Debug-Servers ein, etwa &quot;localhost&quot; oder &quot;192.0.2.1&quot;.</translation>
@@ -31500,9 +31464,6 @@ Senden selbst auch Zeit benötigt.</translation>
<source>Enter TCP/IP port which will be listened by the debug server.</source> <source>Enter TCP/IP port which will be listened by the debug server.</source>
<translation>Geben Sie den TCP/IP-Port ein, an dem der Debug-Server Verbindungen annehmen wird.</translation> <translation>Geben Sie den TCP/IP-Port ein, an dem der Debug-Server Verbindungen annehmen wird.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::OpenOcdGdbServerProviderConfigWidget</name>
<message> <message>
<source>Host:</source> <source>Host:</source>
<translation>Host:</translation> <translation>Host:</translation>
@@ -31531,17 +31492,6 @@ Senden selbst auch Zeit benötigt.</translation>
<source>Reset commands:</source> <source>Reset commands:</source>
<translation>Kommandos zum Zurücksetzen:</translation> <translation>Kommandos zum Zurücksetzen:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::StLinkUtilGdbServerProviderConfigWidget</name>
<message>
<source>Host:</source>
<translation>Host:</translation>
</message>
<message>
<source>Executable file:</source>
<translation>Ausführbare Datei:</translation>
</message>
<message> <message>
<source>Specify the verbosity level (0..99).</source> <source>Specify the verbosity level (0..99).</source>
<translation>Geben Sie den Detailgrad an (0..99).</translation> <translation>Geben Sie den Detailgrad an (0..99).</translation>
@@ -31574,14 +31524,6 @@ Senden selbst auch Zeit benötigt.</translation>
<source>Version:</source> <source>Version:</source>
<translation>Version:</translation> <translation>Version:</translation>
</message> </message>
<message>
<source>Init commands:</source>
<translation>Kommandos zum Einrichten:</translation>
</message>
<message>
<source>Reset commands:</source>
<translation>Kommandos zum Zurücksetzen:</translation>
</message>
<message> <message>
<source>ST-LINK/V1</source> <source>ST-LINK/V1</source>
<translation>ST-LINK/V1</translation> <translation>ST-LINK/V1</translation>
@@ -35352,7 +35294,7 @@ Möchten Sie sie überschreiben?</translation>
</message> </message>
</context> </context>
<context> <context>
<name>Nim::NimCompilerBuildStepConfigWidget</name> <name>Nim</name>
<message> <message>
<source>Target:</source> <source>Target:</source>
<translation>Ziel:</translation> <translation>Ziel:</translation>
@@ -35829,21 +35771,15 @@ Siehe auch die Einstellungen für Google Test.</translation>
</message> </message>
</context> </context>
<context> <context>
<name>NimCompilerBuildStep</name> <name>Nim</name>
<message> <message>
<source>Nim Compiler Build Step</source> <source>Nim Compiler Build Step</source>
<translation>Nim-Compiler Build-Schritt</translation> <translation>Nim-Compiler Build-Schritt</translation>
</message> </message>
</context>
<context>
<name>NimCompilerBuildStepConfigWidget</name>
<message> <message>
<source>Nim build step</source> <source>Nim build step</source>
<translation>Nim-Build-Schritt</translation> <translation>Nim-Build-Schritt</translation>
</message> </message>
</context>
<context>
<name>NimCodeStyleSettingsPage</name>
<message> <message>
<source>Code Style</source> <source>Code Style</source>
<translation>Coding-Stil</translation> <translation>Coding-Stil</translation>
@@ -35852,16 +35788,6 @@ Siehe auch die Einstellungen für Google Test.</translation>
<source>Nim</source> <source>Nim</source>
<translation>Nim</translation> <translation>Nim</translation>
</message> </message>
</context>
<context>
<name>NimCodeStylePreferencesFactory</name>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context>
<name>Nim::NimCompilerCleanStep</name>
<message> <message>
<source>Nim Clean Step</source> <source>Nim Clean Step</source>
<translation>Nim-Schritt zur Bereinigung</translation> <translation>Nim-Schritt zur Bereinigung</translation>
@@ -35890,18 +35816,11 @@ Siehe auch die Einstellungen für Google Test.</translation>
<source>Nim Compiler Clean Step</source> <source>Nim Compiler Clean Step</source>
<translation>Nim-Compiler-Schritt zur Bereinigung</translation> <translation>Nim-Compiler-Schritt zur Bereinigung</translation>
</message> </message>
</context>
<context>
<name>Nim::NimSettings</name>
<message> <message>
<source>Global</source> <source>Global</source>
<comment>Settings</comment> <comment>Settings</comment>
<translation>Global</translation> <translation>Global</translation>
</message> </message>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context> </context>
<context> <context>
<name>ProjectExplorer::CustomExecutableRunConfiguration</name> <name>ProjectExplorer::CustomExecutableRunConfiguration</name>
@@ -37799,15 +37718,12 @@ Ablaufdatum: %3</translation>
</message> </message>
</context> </context>
<context> <context>
<name>Nim::NimPlugin</name> <name>Nim</name>
<message> <message>
<source>Nim</source> <source>Nim</source>
<comment>SnippetProvider</comment> <comment>SnippetProvider</comment>
<translation>Nim</translation> <translation>Nim</translation>
</message> </message>
</context>
<context>
<name>Nim::NimProject</name>
<message> <message>
<source>No Nim compiler set.</source> <source>No Nim compiler set.</source>
<translation>Es ist kein Nim-Compiler eingerichtet.</translation> <translation>Es ist kein Nim-Compiler eingerichtet.</translation>
@@ -37816,9 +37732,6 @@ Ablaufdatum: %3</translation>
<source>Nim compiler does not exist.</source> <source>Nim compiler does not exist.</source>
<translation>Der Nim-Compiler existiert nicht.</translation> <translation>Der Nim-Compiler existiert nicht.</translation>
</message> </message>
</context>
<context>
<name>Nim::NimToolChainConfigWidget</name>
<message> <message>
<source>&amp;Compiler path:</source> <source>&amp;Compiler path:</source>
<translation>&amp;Compiler-Pfad:</translation> <translation>&amp;Compiler-Pfad:</translation>
@@ -40919,7 +40832,7 @@ Möchten Sie sie überschreiben?</translation>
</message> </message>
</context> </context>
<context> <context>
<name>Nim::NimRunConfiguration</name> <name>Nim</name>
<message> <message>
<source>Current Build Target</source> <source>Current Build Target</source>
<translation>Aktuelles Build-Ziel</translation> <translation>Aktuelles Build-Ziel</translation>
@@ -41980,11 +41893,7 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni
</message> </message>
</context> </context>
<context> <context>
<name>Nim::NimCompilerBuildStep</name> <name>Nim</name>
<message>
<source>Nim Compiler Build Step</source>
<translation>Nim-Compiler Build-Schritt</translation>
</message>
</context> </context>
<context> <context>
<name>ProjectExplorer::MakeStep</name> <name>ProjectExplorer::MakeStep</name>
@@ -42256,7 +42165,7 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni
</message> </message>
</context> </context>
<context> <context>
<name>Nim::NimToolsSettingsWidget</name> <name>Nim</name>
<message> <message>
<source>Nimsuggest</source> <source>Nimsuggest</source>
<translation>Nimsuggest</translation> <translation>Nimsuggest</translation>
@@ -42879,15 +42788,11 @@ Die Dateien aus dem Quellverzeichnis des Android-Pakets werden in das Verzeichni
</message> </message>
</context> </context>
<context> <context>
<name>NimToolsSettingsPage</name> <name>Nim</name>
<message> <message>
<source>Tools</source> <source>Tools</source>
<translation>Werkzeuge</translation> <translation>Werkzeuge</translation>
</message> </message>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context> </context>
<context> <context>
<name>PerfProfiler</name> <name>PerfProfiler</name>
@@ -43923,7 +43828,7 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
</message> </message>
</context> </context>
<context> <context>
<name>Nim::NimbleBuildStepWidget</name> <name>Nim</name>
<message> <message>
<source>Arguments:</source> <source>Arguments:</source>
<translation>Argumente:</translation> <translation>Argumente:</translation>
@@ -44363,7 +44268,7 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
</message> </message>
</context> </context>
<context> <context>
<name>BareMetal::Internal::DebugServerProviderChooser</name> <name>BareMetal</name>
<message> <message>
<source>Manage...</source> <source>Manage...</source>
<translation>Verwalten...</translation> <translation>Verwalten...</translation>
@@ -44372,9 +44277,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>None</source> <source>None</source>
<translation>Keine</translation> <translation>Keine</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::DebugServerProviderModel</name>
<message> <message>
<source>Not recognized</source> <source>Not recognized</source>
<translation>Nicht erkannt</translation> <translation>Nicht erkannt</translation>
@@ -44399,9 +44301,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>The following providers were already configured:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;They were not configured again.</source> <source>The following providers were already configured:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;They were not configured again.</source>
<translation>Die folgenden Provider wurden bereits konfiguriert:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;Sie wurden nicht noch einmal konfiguriert.</translation> <translation>Die folgenden Provider wurden bereits konfiguriert:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;Sie wurden nicht noch einmal konfiguriert.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::DebugServerProvidersSettingsPage</name>
<message> <message>
<source>Add</source> <source>Add</source>
<translation>Hinzufügen</translation> <translation>Hinzufügen</translation>
@@ -44422,13 +44321,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>Clone of %1</source> <source>Clone of %1</source>
<translation>Kopie von %1</translation> <translation>Kopie von %1</translation>
</message> </message>
<message>
<source>Bare Metal</source>
<translation>Bare Metal</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProvider</name>
<message> <message>
<source>EBlink</source> <source>EBlink</source>
<translation>EBlink</translation> <translation>EBlink</translation>
@@ -44445,25 +44337,10 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>ST-LINK Utility</source> <source>ST-LINK Utility</source>
<translation>ST-LINK-Werkzeug</translation> <translation>ST-LINK-Werkzeug</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::EBlinkGdbServerProviderConfigWidget</name>
<message>
<source>Host:</source>
<translation>Host:</translation>
</message>
<message>
<source>Executable file:</source>
<translation>Ausführbare Datei:</translation>
</message>
<message> <message>
<source>Script file:</source> <source>Script file:</source>
<translation>Skriptdatei:</translation> <translation>Skriptdatei:</translation>
</message> </message>
<message>
<source>Verbosity level:</source>
<translation>Detailgrad:</translation>
</message>
<message> <message>
<source>Type:</source> <source>Type:</source>
<translation>Typ:</translation> <translation>Typ:</translation>
@@ -44472,14 +44349,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>Speed:</source> <source>Speed:</source>
<translation>Geschwindigkeit:</translation> <translation>Geschwindigkeit:</translation>
</message> </message>
<message>
<source>Init commands:</source>
<translation>Kommandos zum Einrichten:</translation>
</message>
<message>
<source>Reset commands:</source>
<translation>Kommandos zum Zurücksetzen:</translation>
</message>
<message> <message>
<source>SWD</source> <source>SWD</source>
<translation>SWD</translation> <translation>SWD</translation>
@@ -44488,13 +44357,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>JTAG</source> <source>JTAG</source>
<translation>JTAG</translation> <translation>JTAG</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::JLinkGdbServerProviderConfigWidget</name>
<message>
<source>Host:</source>
<translation>Host:</translation>
</message>
<message> <message>
<source>JLink GDB Server (JLinkGDBServerCL.exe)</source> <source>JLink GDB Server (JLinkGDBServerCL.exe)</source>
<translation>JLink GDB-Server (JLinkGDBServerCL.exe)</translation> <translation>JLink GDB-Server (JLinkGDBServerCL.exe)</translation>
@@ -44503,10 +44365,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>JLink GDB Server (JLinkGDBServer)</source> <source>JLink GDB Server (JLinkGDBServer)</source>
<translation>JLink GDB-Server (JLinkGDBServer)</translation> <translation>JLink GDB-Server (JLinkGDBServer)</translation>
</message> </message>
<message>
<source>Executable file:</source>
<translation>Ausführbare Datei:</translation>
</message>
<message> <message>
<source>Default</source> <source>Default</source>
<translation>Vorgabe</translation> <translation>Vorgabe</translation>
@@ -44527,21 +44385,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>Device:</source> <source>Device:</source>
<translation>Geräte:</translation> <translation>Geräte:</translation>
</message> </message>
<message>
<source>Additional arguments:</source>
<translation>Zusätzliche Argumente:</translation>
</message>
<message>
<source>Init commands:</source>
<translation>Kommandos zum Einrichten:</translation>
</message>
<message>
<source>Reset commands:</source>
<translation>Kommandos zum Zurücksetzen:</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::UvscServerProvider</name>
<message> <message>
<source>uVision Simulator</source> <source>uVision Simulator</source>
<translation>uVision Simulator</translation> <translation>uVision Simulator</translation>
@@ -44550,25 +44393,10 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>uVision St-Link</source> <source>uVision St-Link</source>
<translation>uVision St-Link</translation> <translation>uVision St-Link</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::StLinkUvscAdapterOptionsWidget</name>
<message> <message>
<source>Port:</source> <source>Port:</source>
<translation>Port:</translation> <translation>Port:</translation>
</message> </message>
<message>
<source>Speed:</source>
<translation>Geschwindigkeit:</translation>
</message>
<message>
<source>JTAG</source>
<translation>JTAG</translation>
</message>
<message>
<source>SWD</source>
<translation>SWD</translation>
</message>
<message> <message>
<source>9MHz</source> <source>9MHz</source>
<translation>9MHz</translation> <translation>9MHz</translation>
@@ -44641,20 +44469,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>5kHz</source> <source>5kHz</source>
<translation>5kHz</translation> <translation>5kHz</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::UvscServerProviderConfigWidget</name>
<message>
<source>Host:</source>
<translation>Host:</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::Uv::DeviceSelectionModel</name>
<message>
<source>Name</source>
<translation>Name</translation>
</message>
<message> <message>
<source>Version</source> <source>Version</source>
<translation>Version</translation> <translation>Version</translation>
@@ -44663,9 +44477,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>Vendor</source> <source>Vendor</source>
<translation>Anbieter</translation> <translation>Anbieter</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::Uv::DeviceSelectionMemoryModel</name>
<message> <message>
<source>ID</source> <source>ID</source>
<translation>ID</translation> <translation>ID</translation>
@@ -44678,23 +44489,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>Size</source> <source>Size</source>
<translation>Größe</translation> <translation>Größe</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::Uv::DeviceSelectionAlgorithmModel</name>
<message>
<source>Name</source>
<translation>Name</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::Uv::DeviceSelectorToolPanel</name>
<message>
<source>Manage...</source>
<translation>Verwalten...</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::Uv::DeviceSelectorDetailsPanel</name>
<message> <message>
<source>Vendor:</source> <source>Vendor:</source>
<translation>Anbieter:</translation> <translation>Anbieter:</translation>
@@ -44711,42 +44505,14 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>Memory:</source> <source>Memory:</source>
<translation>Speicher:</translation> <translation>Speicher:</translation>
</message> </message>
<message>
<source>Peripheral description files (*.svd)</source>
<translation>Peripherie-Beschreibungsdatei (*.svd)</translation>
</message>
<message> <message>
<source>Select Peripheral Description File</source> <source>Select Peripheral Description File</source>
<translation>Wählen Sie eine Peripherie-Beschreibungsdatei</translation> <translation>Wählen Sie eine Peripherie-Beschreibungsdatei</translation>
</message> </message>
<message>
<source>Peripheral description file:</source>
<translation>Peripherie-Beschreibungsdatei:</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::Uv::DriverSelectionModel</name>
<message> <message>
<source>Path</source> <source>Path</source>
<translation>Pfad</translation> <translation>Pfad</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::Uv::DriverSelectionCpuDllModel</name>
<message>
<source>Name</source>
<translation>Name</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::Uv::DriverSelectorToolPanel</name>
<message>
<source>Manage...</source>
<translation>Verwalten...</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::IarToolChainConfigWidget</name>
<message> <message>
<source>&amp;Compiler path:</source> <source>&amp;Compiler path:</source>
<translation>&amp;Compiler-Pfad:</translation> <translation>&amp;Compiler-Pfad:</translation>
@@ -44759,20 +44525,10 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>&amp;ABI:</source> <source>&amp;ABI:</source>
<translation>&amp;ABI:</translation> <translation>&amp;ABI:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::IDebugServerProviderConfigWidget</name>
<message> <message>
<source>Enter the name of the debugger server provider.</source> <source>Enter the name of the debugger server provider.</source>
<translation>Geben Sie den Namen des Debug-Server-Providers ein.</translation> <translation>Geben Sie den Namen des Debug-Server-Providers ein.</translation>
</message> </message>
<message>
<source>Name:</source>
<translation>Name:</translation>
</message>
</context>
<context>
<name>SdccToolChain</name>
<message> <message>
<source>SDCC %1 (%2, %3)</source> <source>SDCC %1 (%2, %3)</source>
<translation>SDCC %1 (%2, %3)</translation> <translation>SDCC %1 (%2, %3)</translation>
@@ -44782,17 +44538,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<translation>SDCC</translation> <translation>SDCC</translation>
</message> </message>
</context> </context>
<context>
<name>BareMetal::Internal::SdccToolChainConfigWidget</name>
<message>
<source>&amp;Compiler path:</source>
<translation>&amp;Compiler-Pfad:</translation>
</message>
<message>
<source>&amp;ABI:</source>
<translation>&amp;ABI:</translation>
</message>
</context>
<context> <context>
<name>Beautifier::Internal::ArtisticStyle</name> <name>Beautifier::Internal::ArtisticStyle</name>
<message> <message>
@@ -46619,26 +46364,12 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
</message> </message>
</context> </context>
<context> <context>
<name>Nim::NimbleBuildConfiguration</name> <name>Nim</name>
<message> <message>
<source>General</source> <source>General</source>
<translation>Allgemein</translation> <translation>Allgemein</translation>
</message> </message>
</context> </context>
<context>
<name>Nim::NimBuildConfiguration</name>
<message>
<source>General</source>
<translation>Allgemein</translation>
</message>
</context>
<context>
<name>Nim::CodeStyleSettings</name>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context> <context>
<name>ProjectExplorer::Internal::AddRunConfigDialog</name> <name>ProjectExplorer::Internal::AddRunConfigDialog</name>
<message> <message>
@@ -47680,11 +47411,7 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
</message> </message>
</context> </context>
<context> <context>
<name>Nim::ToolSettingsPage</name> <name>Nim</name>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context> </context>
<context> <context>
<name>ProjextExplorer::Internal::KitOptionsPageWidget</name> <name>ProjextExplorer::Internal::KitOptionsPageWidget</name>
@@ -47917,7 +47644,7 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
</message> </message>
</context> </context>
<context> <context>
<name>MesonBuildSettingsWidget</name> <name>MesonProjectManager</name>
<message> <message>
<source>Apply Configuration Changes</source> <source>Apply Configuration Changes</source>
<translation>Konfigurationsänderungen anwenden</translation> <translation>Konfigurationsänderungen anwenden</translation>
@@ -47926,9 +47653,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>Filter</source> <source>Filter</source>
<translation>Filter</translation> <translation>Filter</translation>
</message> </message>
</context>
<context>
<name>MesonBuildStepConfigWidget</name>
<message> <message>
<source>Tool arguments:</source> <source>Tool arguments:</source>
<translation>Toolparameter:</translation> <translation>Toolparameter:</translation>
@@ -48177,23 +47901,7 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
</message> </message>
</context> </context>
<context> <context>
<name>BareMetal::Internal::JLinkUvscAdapterOptionsWidget</name> <name>BareMetal</name>
<message>
<source>Port:</source>
<translation>Port:</translation>
</message>
<message>
<source>Speed:</source>
<translation>Geschwindigkeit:</translation>
</message>
<message>
<source>JTAG</source>
<translation>JTAG</translation>
</message>
<message>
<source>SWD</source>
<translation>SWD</translation>
</message>
<message> <message>
<source>50MHz</source> <source>50MHz</source>
<translation>50MHz</translation> <translation>50MHz</translation>
@@ -48238,13 +47946,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>200kHz</source> <source>200kHz</source>
<translation>200kHz</translation> <translation>200kHz</translation>
</message> </message>
<message>
<source>100kHz</source>
<translation>100kHz</translation>
</message>
</context>
<context>
<name>KeilToolChain</name>
<message> <message>
<source>KEIL %1 (%2, %3)</source> <source>KEIL %1 (%2, %3)</source>
<translation>KEIL %1 (%2, %3)</translation> <translation>KEIL %1 (%2, %3)</translation>
@@ -48254,21 +47955,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<translation>KEIL</translation> <translation>KEIL</translation>
</message> </message>
</context> </context>
<context>
<name>BareMetal::Internal::KeilToolChainConfigWidget</name>
<message>
<source>&amp;Compiler path:</source>
<translation>&amp;Compiler-Pfad:</translation>
</message>
<message>
<source>Platform codegen flags:</source>
<translation>Plattformspezifische Optionen für codegen:</translation>
</message>
<message>
<source>&amp;ABI:</source>
<translation>&amp;ABI:</translation>
</message>
</context>
<context> <context>
<name>Beautifier::Internal</name> <name>Beautifier::Internal</name>
<message> <message>
@@ -48420,7 +48106,7 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
</message> </message>
</context> </context>
<context> <context>
<name>MesonProjectManager::Internal::MesonActionsManager</name> <name>MesonProjectManager</name>
<message> <message>
<source>Configure</source> <source>Configure</source>
<translation>Konfigurieren</translation> <translation>Konfigurieren</translation>
@@ -48433,24 +48119,15 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>Build &quot;%1&quot;</source> <source>Build &quot;%1&quot;</source>
<translation>&quot;%1&quot; erstellen</translation> <translation>&quot;%1&quot; erstellen</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::MesonBuildSettingsWidget</name>
<message> <message>
<source>Meson</source> <source>Meson</source>
<translation>Meson</translation> <translation>Meson</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::MesonBuildStepConfigWidget</name>
<message> <message>
<source>Build</source> <source>Build</source>
<comment>MesonProjectManager::MesonBuildStepConfigWidget display name.</comment> <comment>MesonProjectManager::MesonBuildStepConfigWidget display name.</comment>
<translation>Erstellen</translation> <translation>Erstellen</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::BuidOptionsModel</name>
<message> <message>
<source>Key</source> <source>Key</source>
<translation>Schlüssel</translation> <translation>Schlüssel</translation>
@@ -48459,9 +48136,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>Value</source> <source>Value</source>
<translation>Wert</translation> <translation>Wert</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::MesonProcess</name>
<message> <message>
<source>Configuring &quot;%1&quot;.</source> <source>Configuring &quot;%1&quot;.</source>
<translation>Konfiguriere &quot;%1&quot;</translation> <translation>Konfiguriere &quot;%1&quot;</translation>
@@ -48502,48 +48176,18 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
<source>Executable does not exist: %1</source> <source>Executable does not exist: %1</source>
<translation>Ausführbare Datei existiert nicht: %1</translation> <translation>Ausführbare Datei existiert nicht: %1</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::MesonProject</name>
<message> <message>
<source>No compilers set in kit.</source> <source>No compilers set in kit.</source>
<translation>Im Kit sind keine Compiler eingerichtet.</translation> <translation>Im Kit sind keine Compiler eingerichtet.</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::NinjaBuildStep</name>
<message>
<source>Meson</source>
<translation>Meson</translation>
</message>
</context>
<context>
<name>MesonProjectManager::Internal::GeneralSettingsPage</name>
<message> <message>
<source>General</source> <source>General</source>
<translation>Allgemein</translation> <translation>Allgemein</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::MesonToolKitAspect</name>
<message>
<source>Meson</source>
<translation>Meson</translation>
</message>
<message> <message>
<source>Unconfigured</source> <source>Unconfigured</source>
<translation>Nicht konfiguriert</translation> <translation>Nicht konfiguriert</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::NinjaToolKitAspect</name>
<message>
<source>Unconfigured</source>
<translation>Nicht konfiguriert</translation>
</message>
</context>
<context>
<name>MesonProjectManager::Internal::ToolsSettingsPage</name>
<message> <message>
<source>Name</source> <source>Name</source>
<translation>Name</translation> <translation>Name</translation>
@@ -48574,18 +48218,7 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
</message> </message>
</context> </context>
<context> <context>
<name>MesonProjectManager::MesonToolManager</name> <name>Nim</name>
<message>
<source>Meson</source>
<translation>Meson</translation>
</message>
</context>
<context>
<name>Nim::NimToolChain</name>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context> </context>
<context> <context>
<name>ProjectExplorer::Internal::BuildEnvironmentWidget</name> <name>ProjectExplorer::Internal::BuildEnvironmentWidget</name>

View File

@@ -11390,8 +11390,8 @@ francis : voila une nouvelle suggestion :)</translatorcomment>
<translation>&amp;Supprimer</translation> <translation>&amp;Supprimer</translation>
</message> </message>
<message> <message>
<source>&amp;Switch To</source> <source>&amp;Open</source>
<translation>&amp;Basculer vers</translation> <translation>&amp;Ouvrir</translation>
</message> </message>
<message> <message>
<source>New session name</source> <source>New session name</source>
@@ -54923,7 +54923,7 @@ Cet assistant vous guidera à travers les étapes essentielles pour déployez un
</message> </message>
</context> </context>
<context> <context>
<name>BareMetal::BareMetalDeviceConfigurationWidget</name> <name>BareMetal</name>
<message> <message>
<source>Form</source> <source>Form</source>
<translation>Formulaire</translation> <translation>Formulaire</translation>
@@ -54940,13 +54940,6 @@ Cet assistant vous guidera à travers les étapes essentielles pour déployez un
<source>GDB commands:</source> <source>GDB commands:</source>
<translation>Commandes GDB :</translation> <translation>Commandes GDB :</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWizardSetupPage</name>
<message>
<source>Form</source>
<translation>Formulaire</translation>
</message>
<message> <message>
<source>Name:</source> <source>Name:</source>
<translation>Nom :</translation> <translation>Nom :</translation>
@@ -54955,18 +54948,6 @@ Cet assistant vous guidera à travers les étapes essentielles pour déployez un
<source>localhost</source> <source>localhost</source>
<translation>localhost</translation> <translation>localhost</translation>
</message> </message>
<message>
<source>GDB port:</source>
<translation>Port GDB :</translation>
</message>
<message>
<source>GDB host:</source>
<translation>Hôte GDB :</translation>
</message>
<message>
<source>GDB commands:</source>
<translation>Commandes GDB :</translation>
</message>
<message> <message>
<source>load <source>load
monitor reset</source> monitor reset</source>
@@ -55834,53 +55815,27 @@ réinitialisation du moniteur</translation>
</message> </message>
</context> </context>
<context> <context>
<name>BareMetal::Internal::BareMetalDevice</name> <name>BareMetal</name>
<message> <message>
<source>Bare Metal</source> <source>Bare Metal</source>
<translation>Bare Metal</translation> <translation>Bare Metal</translation>
</message> </message>
</context>
<context>
<name>BareMetal::BareMetalDeviceConfigurationFactory</name>
<message> <message>
<source>Bare Metal Device</source> <source>Bare Metal Device</source>
<translation>Périphérique Bare Metal</translation> <translation>Périphérique Bare Metal</translation>
</message> </message>
</context>
<context>
<name>BareMetal::BareMetalDeviceConfigurationWizard</name>
<message> <message>
<source>New Bare Metal Device Configuration Setup</source> <source>New Bare Metal Device Configuration Setup</source>
<translation>Nouveau paramètres de configuration du périphérique Bare Metal</translation> <translation>Nouveau paramètres de configuration du périphérique Bare Metal</translation>
</message> </message>
</context>
<context>
<name>BareMetal::BareMetalDeviceConfigurationWizardSetupPage</name>
<message> <message>
<source>Set up GDB Server or Hardware Debugger</source> <source>Set up GDB Server or Hardware Debugger</source>
<translation>Définir un serveur GDB ou un débogueur hardware</translation> <translation>Définir un serveur GDB ou un débogueur hardware</translation>
</message> </message>
<message>
<source>Bare Metal Device</source>
<translation>Périphérique Bare Metal</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::BareMetalGdbCommandsDeployStepWidget</name>
<message>
<source>GDB commands:</source>
<translation>Commandes GDB :</translation>
</message>
</context>
<context>
<name>BareMetal::BareMetalGdbCommandsDeployStep</name>
<message> <message>
<source>GDB commands</source> <source>GDB commands</source>
<translation>Commandes GDB</translation> <translation>Commandes GDB</translation>
</message> </message>
</context>
<context>
<name>BareMetal::BareMetalRunConfiguration</name>
<message> <message>
<source>%1 (via GDB server or hardware debugger)</source> <source>%1 (via GDB server or hardware debugger)</source>
<translation>%1 (via le serveur GDB ou le débogueur hardware)</translation> <translation>%1 (via le serveur GDB ou le débogueur hardware)</translation>
@@ -55890,16 +55845,10 @@ réinitialisation du moniteur</translation>
<extracomment>Bare Metal run configuration default run name</extracomment> <extracomment>Bare Metal run configuration default run name</extracomment>
<translation>Exécuter sur un serveur GDB ou un débogueur hardware</translation> <translation>Exécuter sur un serveur GDB ou un débogueur hardware</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalRunConfigurationFactory</name>
<message> <message>
<source>%1 (on GDB server or hardware debugger)</source> <source>%1 (on GDB server or hardware debugger)</source>
<translation>%1 (via le serveur GDB ou le débogueur hardware)</translation> <translation>%1 (via le serveur GDB ou le débogueur hardware)</translation>
</message> </message>
</context>
<context>
<name>BareMetal::BareMetalRunConfigurationWidget</name>
<message> <message>
<source>Executable:</source> <source>Executable:</source>
<translation>Exécutable :</translation> <translation>Exécutable :</translation>
@@ -55920,9 +55869,6 @@ réinitialisation du moniteur</translation>
<source>Unknown</source> <source>Unknown</source>
<translation>Inconnue</translation> <translation>Inconnue</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalRunControlFactory</name>
<message> <message>
<source>Cannot debug: Kit has no device.</source> <source>Cannot debug: Kit has no device.</source>
<translation>Impossible de déboguer : le kit n&apos;a pas de périphérique.</translation> <translation>Impossible de déboguer : le kit n&apos;a pas de périphérique.</translation>

View File

@@ -5128,7 +5128,7 @@ Greška: %5</translation>
</message> </message>
</context> </context>
<context> <context>
<name>Nim::NimCompilerBuildStepConfigWidget</name> <name>Nim</name>
<message> <message>
<source>Target:</source> <source>Target:</source>
<translation>Odredište:</translation> <translation>Odredište:</translation>
@@ -5149,24 +5149,14 @@ Greška: %5</translation>
<source>None</source> <source>None</source>
<translation>Bez</translation> <translation>Bez</translation>
</message> </message>
<message>
<source>Debug</source>
<translation>Ukloni greške</translation>
</message>
<message> <message>
<source>Release</source> <source>Release</source>
<translation>Objavi</translation> <translation>Objavi</translation>
</message> </message>
</context>
<context>
<name>Nim::NimCompilerCleanStepConfigWidget</name>
<message> <message>
<source>Working directory:</source> <source>Working directory:</source>
<translation>Radni direktorij:</translation> <translation>Radni direktorij:</translation>
</message> </message>
</context>
<context>
<name>Nim::NimToolsSettingsWidget</name>
<message> <message>
<source>Nimsuggest</source> <source>Nimsuggest</source>
<translation>Nimsuggest</translation> <translation>Nimsuggest</translation>
@@ -5957,8 +5947,8 @@ Greška: %5</translation>
<translation>&amp;Ukloni</translation> <translation>&amp;Ukloni</translation>
</message> </message>
<message> <message>
<source>&amp;Switch To</source> <source>&amp;Open</source>
<translation>&amp;Prebaci na</translation> <translation>&amp;Otvori</translation>
</message> </message>
<message> <message>
<source>Restore last session on startup</source> <source>Restore last session on startup</source>
@@ -15273,7 +15263,7 @@ Check the test environment.</source>
</message> </message>
</context> </context>
<context> <context>
<name>BareMetal::Internal::BareMetalCustomRunConfiguration</name> <name>BareMetal</name>
<message> <message>
<source>Unknown</source> <source>Unknown</source>
<translation>Nepoznato</translation> <translation>Nepoznato</translation>
@@ -15286,9 +15276,6 @@ Check the test environment.</source>
<source>The remote executable must be set in order to run a custom remote run configuration.</source> <source>The remote executable must be set in order to run a custom remote run configuration.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDebugSupport</name>
<message> <message>
<source>Cannot debug: Kit has no device.</source> <source>Cannot debug: Kit has no device.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -15305,37 +15292,22 @@ Check the test environment.</source>
<source>Cannot debug: Could not find executable for &quot;%1&quot;.</source> <source>Cannot debug: Could not find executable for &quot;%1&quot;.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDevice</name>
<message> <message>
<source>Bare Metal</source> <source>Bare Metal</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationFactory</name>
<message> <message>
<source>Bare Metal Device</source> <source>Bare Metal Device</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWidget</name>
<message> <message>
<source>GDB server provider:</source> <source>GDB server provider:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWizard</name>
<message> <message>
<source>New Bare Metal Device Configuration Setup</source> <source>New Bare Metal Device Configuration Setup</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWizardSetupPage</name>
<message> <message>
<source>Set up GDB Server or Hardware Debugger</source> <source>Set up GDB Server or Hardware Debugger</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -15344,45 +15316,18 @@ Check the test environment.</source>
<source>Name:</source> <source>Name:</source>
<translation>Naziv:</translation> <translation>Naziv:</translation>
</message> </message>
<message>
<source>GDB server provider:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Bare Metal Device</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BareMetal::Internal::BareMetalGdbCommandsDeployStepWidget</name>
<message> <message>
<source>GDB commands:</source> <source>GDB commands:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalGdbCommandsDeployStep</name>
<message> <message>
<source>GDB commands</source> <source>GDB commands</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalRunConfiguration</name>
<message>
<source>Unknown</source>
<translation>Nepoznato</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::DefaultGdbServerProviderFactory</name>
<message> <message>
<source>Default</source> <source>Default</source>
<translation>Standardno</translation> <translation>Standardno</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::DefaultGdbServerProviderConfigWidget</name>
<message> <message>
<source>Host:</source> <source>Host:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -15395,24 +15340,14 @@ Check the test environment.</source>
<source>Reset commands:</source> <source>Reset commands:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>BareMetal::GdbServerProvider</name>
<message> <message>
<source>Clone of %1</source> <source>Clone of %1</source>
<translation>Klon od %1</translation> <translation>Klon od %1</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProviderConfigWidget</name>
<message> <message>
<source>Enter the name of the GDB server provider.</source> <source>Enter the name of the GDB server provider.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Name:</source>
<translation>Naziv:</translation>
</message>
<message> <message>
<source>Choose the desired startup mode of the GDB server provider.</source> <source>Choose the desired startup mode of the GDB server provider.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -15433,9 +15368,6 @@ Check the test environment.</source>
<source>Startup in Pipe Mode</source> <source>Startup in Pipe Mode</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>BareMetal</name>
<message> <message>
<source>Enter GDB commands to reset the board and to write the nonvolatile memory.</source> <source>Enter GDB commands to reset the board and to write the nonvolatile memory.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -15444,9 +15376,6 @@ Check the test environment.</source>
<source>Enter GDB commands to reset the hardware. The MCU should be halted after these commands.</source> <source>Enter GDB commands to reset the hardware. The MCU should be halted after these commands.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::HostWidget</name>
<message> <message>
<source>Enter TCP/IP hostname of the GDB server provider, like &quot;localhost&quot; or &quot;192.0.2.1&quot;.</source> <source>Enter TCP/IP hostname of the GDB server provider, like &quot;localhost&quot; or &quot;192.0.2.1&quot;.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -15455,9 +15384,6 @@ Check the test environment.</source>
<source>Enter TCP/IP port which will be listened by the GDB server provider.</source> <source>Enter TCP/IP port which will be listened by the GDB server provider.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProviderChooser</name>
<message> <message>
<source>Manage...</source> <source>Manage...</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -15466,9 +15392,6 @@ Check the test environment.</source>
<source>None</source> <source>None</source>
<translation>Bez</translation> <translation>Bez</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProviderModel</name>
<message> <message>
<source>Name</source> <source>Name</source>
<translation>Naziv</translation> <translation>Naziv</translation>
@@ -15485,9 +15408,6 @@ Check the test environment.</source>
<source>The following providers were already configured:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;They were not configured again.</source> <source>The following providers were already configured:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;They were not configured again.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProvidersSettingsPage</name>
<message> <message>
<source>Add</source> <source>Add</source>
<translation>Dodaj</translation> <translation>Dodaj</translation>
@@ -15504,24 +15424,10 @@ Check the test environment.</source>
<source>GDB Server Providers</source> <source>GDB Server Providers</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
<message>
<source>Bare Metal</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BareMetal::Internal::OpenOcdGdbServerProviderFactory</name>
<message> <message>
<source>OpenOCD</source> <source>OpenOCD</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::OpenOcdGdbServerProviderConfigWidget</name>
<message>
<source>Host:</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Executable file:</source> <source>Executable file:</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -15538,32 +15444,10 @@ Check the test environment.</source>
<source>Additional arguments:</source> <source>Additional arguments:</source>
<translation type="unfinished">Dodatni argumenti:</translation> <translation type="unfinished">Dodatni argumenti:</translation>
</message> </message>
<message>
<source>Init commands:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Reset commands:</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>BareMetal::Internal::StLinkUtilGdbServerProviderFactory</name>
<message> <message>
<source>ST-LINK Utility</source> <source>ST-LINK Utility</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::StLinkUtilGdbServerProviderConfigWidget</name>
<message>
<source>Host:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Executable file:</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>Specify the verbosity level (0..99).</source> <source>Specify the verbosity level (0..99).</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -15596,14 +15480,6 @@ Check the test environment.</source>
<source>Version:</source> <source>Version:</source>
<translation>Verzija:</translation> <translation>Verzija:</translation>
</message> </message>
<message>
<source>Init commands:</source>
<translation type="unfinished"></translation>
</message>
<message>
<source>Reset commands:</source>
<translation type="unfinished"></translation>
</message>
<message> <message>
<source>ST-LINK/V1</source> <source>ST-LINK/V1</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -27126,42 +27002,27 @@ Rok upotrebe: %3</translation>
</message> </message>
</context> </context>
<context> <context>
<name>NimBuildConfigurationWidget</name> <name>Nim</name>
<message> <message>
<source>General</source> <source>General</source>
<translation>Opće</translation> <translation>Opće</translation>
</message> </message>
</context>
<context>
<name>NimCompilerBuildStep</name>
<message> <message>
<source>Nim Compiler Build Step</source> <source>Nim Compiler Build Step</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>NimCompilerBuildStepConfigWidget</name>
<message> <message>
<source>Nim build step</source> <source>Nim build step</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>NimCompilerCleanStepFactory</name>
<message> <message>
<source>Nim Compiler Clean Step</source> <source>Nim Compiler Clean Step</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>NimCompilerCleanStepWidget</name>
<message> <message>
<source>Nim clean step</source> <source>Nim clean step</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>NimCodeStyleSettingsPage</name>
<message> <message>
<source>Code Style</source> <source>Code Style</source>
<translation>Stil kodiranja</translation> <translation>Stil kodiranja</translation>
@@ -27170,35 +27031,15 @@ Rok upotrebe: %3</translation>
<source>Nim</source> <source>Nim</source>
<translation>Nim</translation> <translation>Nim</translation>
</message> </message>
</context>
<context>
<name>NimToolsSettingsPage</name>
<message> <message>
<source>Tools</source> <source>Tools</source>
<translation>Alati</translation> <translation>Alati</translation>
</message> </message>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context>
<name>NimCodeStylePreferencesFactory</name>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context>
<name>Nim::NimPlugin</name>
<message> <message>
<source>Nim</source> <source>Nim</source>
<comment>SnippetProvider</comment> <comment>SnippetProvider</comment>
<translation>Nim</translation> <translation>Nim</translation>
</message> </message>
</context>
<context>
<name>Nim::NimBuildConfigurationFactory</name>
<message> <message>
<source>Debug</source> <source>Debug</source>
<translation>Uklanjanje grešaka</translation> <translation>Uklanjanje grešaka</translation>
@@ -27207,27 +27048,10 @@ Rok upotrebe: %3</translation>
<source>Profile</source> <source>Profile</source>
<translation>Profil</translation> <translation>Profil</translation>
</message> </message>
<message>
<source>Release</source>
<translation>Objavljivanje</translation>
</message>
</context>
<context>
<name>Nim::NimBuildConfigurationWidget</name>
<message> <message>
<source>Build directory:</source> <source>Build directory:</source>
<translation>Direktorij gradnje:</translation> <translation>Direktorij gradnje:</translation>
</message> </message>
</context>
<context>
<name>Nim::NimCompilerBuildStep</name>
<message>
<source>Nim Compiler Build Step</source>
<translation type="unfinished"></translation>
</message>
</context>
<context>
<name>Nim::NimCompilerCleanStep</name>
<message> <message>
<source>Nim Clean Step</source> <source>Nim Clean Step</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
@@ -27248,9 +27072,6 @@ Rok upotrebe: %3</translation>
<source>Clean step completed successfully.</source> <source>Clean step completed successfully.</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>Nim::NimProject</name>
<message> <message>
<source>Scanning for Nim files</source> <source>Scanning for Nim files</source>
<translation>Traženje Nim datoteka</translation> <translation>Traženje Nim datoteka</translation>
@@ -27263,23 +27084,10 @@ Rok upotrebe: %3</translation>
<source>Nim compiler does not exist.</source> <source>Nim compiler does not exist.</source>
<translation>Nim kompajler ne postoji.</translation> <translation>Nim kompajler ne postoji.</translation>
</message> </message>
</context>
<context>
<name>Nim::NimRunConfiguration</name>
<message> <message>
<source>Current Build Target</source> <source>Current Build Target</source>
<translation>Trenutačno odredište gradnje</translation> <translation>Trenutačno odredište gradnje</translation>
</message> </message>
</context>
<context>
<name>Nim::NimToolChainFactory</name>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context>
<name>Nim::NimToolChainConfigWidget</name>
<message> <message>
<source>&amp;Compiler path:</source> <source>&amp;Compiler path:</source>
<translation>Staza za &amp;kompajler:</translation> <translation>Staza za &amp;kompajler:</translation>
@@ -27288,32 +27096,11 @@ Rok upotrebe: %3</translation>
<source>&amp;Compiler version:</source> <source>&amp;Compiler version:</source>
<translation>Verzija &amp;kompajlera:</translation> <translation>Verzija &amp;kompajlera:</translation>
</message> </message>
</context>
<context>
<name>Nim::NimCodeStyleSettingsPage</name>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context>
<name>Nim::NimSettings</name>
<message> <message>
<source>Global</source> <source>Global</source>
<comment>Settings</comment> <comment>Settings</comment>
<translation>Globalno</translation> <translation>Globalno</translation>
</message> </message>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context>
<name>Nim::NimToolsSettingsPage</name>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context> </context>
<context> <context>
<name>Perforce::Internal::PerforceChecker</name> <name>Perforce::Internal::PerforceChecker</name>

File diff suppressed because it is too large Load Diff

View File

@@ -958,8 +958,8 @@
<translation>&amp;Usuń</translation> <translation>&amp;Usuń</translation>
</message> </message>
<message> <message>
<source>&amp;Switch To</source> <source>&amp;Open</source>
<translation>&amp;Przełącz sesję</translation> <translation>&amp;Otwórz</translation>
</message> </message>
<message> <message>
<source>&lt;a href=&quot;qthelp://org.qt-project.qtcreator/doc/creator-project-managing-sessions.html&quot;&gt;What is a Session?&lt;/a&gt;</source> <source>&lt;a href=&quot;qthelp://org.qt-project.qtcreator/doc/creator-project-managing-sessions.html&quot;&gt;What is a Session?&lt;/a&gt;</source>
@@ -26284,7 +26284,7 @@ Zdalny: %4</translation>
</message> </message>
</context> </context>
<context> <context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWizardSetupPage</name> <name>BareMetal</name>
<message> <message>
<source>Set up GDB Server or Hardware Debugger</source> <source>Set up GDB Server or Hardware Debugger</source>
<translation>Ustaw serwer GDB lub debugger sprzętowy</translation> <translation>Ustaw serwer GDB lub debugger sprzętowy</translation>
@@ -27062,21 +27062,15 @@ Czy odinstalować istniejący pakiet?</translation>
</message> </message>
</context> </context>
<context> <context>
<name>BareMetal::Internal::BareMetalDevice</name> <name>BareMetal</name>
<message> <message>
<source>Bare Metal</source> <source>Bare Metal</source>
<translation>Bare Metal</translation> <translation>Bare Metal</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalGdbCommandsDeployStepWidget</name>
<message> <message>
<source>GDB commands:</source> <source>GDB commands:</source>
<translation>Komendy GDB:</translation> <translation>Komendy GDB:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalRunConfigurationFactory</name>
<message> <message>
<source>%1 (on GDB server or hardware debugger)</source> <source>%1 (on GDB server or hardware debugger)</source>
<translation>%1 (na serwerze GDB lub debuggerze sprzętowym)</translation> <translation>%1 (na serwerze GDB lub debuggerze sprzętowym)</translation>
@@ -29876,37 +29870,14 @@ Zainstaluj SDK o wersji %1 lub wyższej.</translation>
<source>Enter GDB commands to reset the hardware. The MCU should be halted after these commands.</source> <source>Enter GDB commands to reset the hardware. The MCU should be halted after these commands.</source>
<translation>Wprowadź komendy GDB resetujące sprzęt. MCU powinien zostać zatrzymany po tych komendach.</translation> <translation>Wprowadź komendy GDB resetujące sprzęt. MCU powinien zostać zatrzymany po tych komendach.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationFactory</name>
<message>
<source>Bare Metal Device</source>
<translation>Urządzenie Bare Metal</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWidget</name>
<message>
<source>GDB server provider:</source>
<translation>Dostawca serwera GDB:</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWizard</name>
<message> <message>
<source>New Bare Metal Device Configuration Setup</source> <source>New Bare Metal Device Configuration Setup</source>
<translation>Nowa konfiguracja urządzenia Bare Metal</translation> <translation>Nowa konfiguracja urządzenia Bare Metal</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalGdbCommandsDeployStep</name>
<message> <message>
<source>GDB commands</source> <source>GDB commands</source>
<translation>Komendy GDB</translation> <translation>Komendy GDB</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalRunConfiguration</name>
<message> <message>
<source>%1 (via GDB server or hardware debugger)</source> <source>%1 (via GDB server or hardware debugger)</source>
<translation>%1 (poprzez serwer GDB lub debugger sprzętowy)</translation> <translation>%1 (poprzez serwer GDB lub debugger sprzętowy)</translation>
@@ -29916,9 +29887,6 @@ Zainstaluj SDK o wersji %1 lub wyższej.</translation>
<extracomment>Bare Metal run configuration default run name</extracomment> <extracomment>Bare Metal run configuration default run name</extracomment>
<translation>Uruchom na serwerze GDB lub debuggerze sprzętowym</translation> <translation>Uruchom na serwerze GDB lub debuggerze sprzętowym</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalRunConfigurationWidget</name>
<message> <message>
<source>Executable:</source> <source>Executable:</source>
<translation>Plik wykonywalny:</translation> <translation>Plik wykonywalny:</translation>
@@ -33396,18 +33364,11 @@ Pliki z katalogu źródłowego pakietu Android są kopiowane do katalogu budowan
</message> </message>
</context> </context>
<context> <context>
<name>BareMetal::Internal::BareMetalCustomRunConfigWidget</name> <name>BareMetal</name>
<message>
<source>Executable:</source>
<translation>Plik wykonywalny:</translation>
</message>
<message> <message>
<source>Work directory:</source> <source>Work directory:</source>
<translation>Katalog roboczy:</translation> <translation>Katalog roboczy:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalCustomRunConfiguration</name>
<message> <message>
<source>The remote executable must be set in order to run a custom remote run configuration.</source> <source>The remote executable must be set in order to run a custom remote run configuration.</source>
<translation>W celu uruchomienia własnej, zdalnej konfiguracji uruchamiania, należy ustawić zdalny plik wykonywalny.</translation> <translation>W celu uruchomienia własnej, zdalnej konfiguracji uruchamiania, należy ustawić zdalny plik wykonywalny.</translation>
@@ -33416,9 +33377,6 @@ Pliki z katalogu źródłowego pakietu Android są kopiowane do katalogu budowan
<source>Custom Executable (on GDB server or hardware debugger)</source> <source>Custom Executable (on GDB server or hardware debugger)</source>
<translation>Własny plik wykonywalny (na serwerze GDB lub debuggerze sprzętowym)</translation> <translation>Własny plik wykonywalny (na serwerze GDB lub debuggerze sprzętowym)</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDebugSupport</name>
<message> <message>
<source>Cannot debug: Kit has no device.</source> <source>Cannot debug: Kit has no device.</source>
<translation>Nie można debugować: brak urządzenia w zestawie narzędzi.</translation> <translation>Nie można debugować: brak urządzenia w zestawie narzędzi.</translation>
@@ -33431,16 +33389,10 @@ Pliki z katalogu źródłowego pakietu Android są kopiowane do katalogu budowan
<source>Cannot debug: Could not find executable for &quot;%1&quot;.</source> <source>Cannot debug: Could not find executable for &quot;%1&quot;.</source>
<translation>Nie można debugować: nie można odnaleźć pliku wykonywalnego dla &quot;%1&quot;.</translation> <translation>Nie można debugować: nie można odnaleźć pliku wykonywalnego dla &quot;%1&quot;.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::DefaultGdbServerProviderFactory</name>
<message> <message>
<source>Default</source> <source>Default</source>
<translation>Domyślny</translation> <translation>Domyślny</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::DefaultGdbServerProviderConfigWidget</name>
<message> <message>
<source>Host:</source> <source>Host:</source>
<translation>Host:</translation> <translation>Host:</translation>
@@ -33453,24 +33405,14 @@ Pliki z katalogu źródłowego pakietu Android są kopiowane do katalogu budowan
<source>Reset commands:</source> <source>Reset commands:</source>
<translation>Komendy resetujące:</translation> <translation>Komendy resetujące:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::GdbServerProvider</name>
<message> <message>
<source>Clone of %1</source> <source>Clone of %1</source>
<translation>Klon %1</translation> <translation>Klon %1</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProviderConfigWidget</name>
<message> <message>
<source>Enter the name of the GDB server provider.</source> <source>Enter the name of the GDB server provider.</source>
<translation>Podaj nazwę dostawcy serwera GDB.</translation> <translation>Podaj nazwę dostawcy serwera GDB.</translation>
</message> </message>
<message>
<source>Name:</source>
<translation>Nazwa:</translation>
</message>
<message> <message>
<source>Choose the desired startup mode of the GDB server provider.</source> <source>Choose the desired startup mode of the GDB server provider.</source>
<translation>Wybierz tryb startowy dostarczyciela serwera GDB.</translation> <translation>Wybierz tryb startowy dostarczyciela serwera GDB.</translation>
@@ -33491,9 +33433,6 @@ Pliki z katalogu źródłowego pakietu Android są kopiowane do katalogu budowan
<source>Startup in Pipe Mode</source> <source>Startup in Pipe Mode</source>
<translation>Start w trybie potokowym</translation> <translation>Start w trybie potokowym</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::HostWidget</name>
<message> <message>
<source>Enter TCP/IP hostname of the GDB server provider, like &quot;localhost&quot; or &quot;192.0.2.1&quot;.</source> <source>Enter TCP/IP hostname of the GDB server provider, like &quot;localhost&quot; or &quot;192.0.2.1&quot;.</source>
<translation>Podaj nazwę TCP/IP hosta dostawcy serwera GDB, np. &quot;localhost&quot; lub &quot;192.0.2.1&quot;.</translation> <translation>Podaj nazwę TCP/IP hosta dostawcy serwera GDB, np. &quot;localhost&quot; lub &quot;192.0.2.1&quot;.</translation>
@@ -33502,9 +33441,6 @@ Pliki z katalogu źródłowego pakietu Android są kopiowane do katalogu budowan
<source>Enter TCP/IP port which will be listened by the GDB server provider.</source> <source>Enter TCP/IP port which will be listened by the GDB server provider.</source>
<translation>Podaj port TCP/IP, na którym będzie nasłuchiwał dostawca serwera GDB.</translation> <translation>Podaj port TCP/IP, na którym będzie nasłuchiwał dostawca serwera GDB.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProviderChooser</name>
<message> <message>
<source>Manage...</source> <source>Manage...</source>
<translation>Zarządzaj...</translation> <translation>Zarządzaj...</translation>
@@ -33513,9 +33449,6 @@ Pliki z katalogu źródłowego pakietu Android są kopiowane do katalogu budowan
<source>None</source> <source>None</source>
<translation>Brak</translation> <translation>Brak</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProviderModel</name>
<message> <message>
<source>Name</source> <source>Name</source>
<translation>Nazwa</translation> <translation>Nazwa</translation>
@@ -33532,9 +33465,6 @@ Pliki z katalogu źródłowego pakietu Android są kopiowane do katalogu budowan
<source>The following providers were already configured:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;They were not configured again.</source> <source>The following providers were already configured:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;They were not configured again.</source>
<translation>Następujący dostawcy zostali już skonfigurowani:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;Nie zostali oni ponownie skonfigurowani.</translation> <translation>Następujący dostawcy zostali już skonfigurowani:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;Nie zostali oni ponownie skonfigurowani.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProvidersSettingsPage</name>
<message> <message>
<source>Add</source> <source>Add</source>
<translation>Dodaj</translation> <translation>Dodaj</translation>
@@ -33551,24 +33481,10 @@ Pliki z katalogu źródłowego pakietu Android są kopiowane do katalogu budowan
<source>GDB Server Providers</source> <source>GDB Server Providers</source>
<translation>Dostawcy serwera GDB</translation> <translation>Dostawcy serwera GDB</translation>
</message> </message>
<message>
<source>Bare Metal</source>
<translation>Bare Metal</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::OpenOcdGdbServerProviderFactory</name>
<message> <message>
<source>OpenOCD</source> <source>OpenOCD</source>
<translation>OpenOCD</translation> <translation>OpenOCD</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::OpenOcdGdbServerProviderConfigWidget</name>
<message>
<source>Host:</source>
<translation>Host:</translation>
</message>
<message> <message>
<source>Executable file:</source> <source>Executable file:</source>
<translation>Plik wykonywalny:</translation> <translation>Plik wykonywalny:</translation>
@@ -33585,32 +33501,10 @@ Pliki z katalogu źródłowego pakietu Android są kopiowane do katalogu budowan
<source>Additional arguments:</source> <source>Additional arguments:</source>
<translation>Dodatkowe argumenty:</translation> <translation>Dodatkowe argumenty:</translation>
</message> </message>
<message>
<source>Init commands:</source>
<translation>Komendy inicjalizujące:</translation>
</message>
<message>
<source>Reset commands:</source>
<translation>Komendy resetujące:</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::StLinkUtilGdbServerProviderFactory</name>
<message> <message>
<source>ST-LINK Utility</source> <source>ST-LINK Utility</source>
<translation>Narzędzie ST-LINK</translation> <translation>Narzędzie ST-LINK</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::StLinkUtilGdbServerProviderConfigWidget</name>
<message>
<source>Host:</source>
<translation>Host:</translation>
</message>
<message>
<source>Executable file:</source>
<translation>Plik wykonywalny:</translation>
</message>
<message> <message>
<source>Specify the verbosity level (0..99).</source> <source>Specify the verbosity level (0..99).</source>
<translation>Poziom gadatliwości (0..99).</translation> <translation>Poziom gadatliwości (0..99).</translation>
@@ -33643,14 +33537,6 @@ Pliki z katalogu źródłowego pakietu Android są kopiowane do katalogu budowan
<source>Version:</source> <source>Version:</source>
<translation>Wersja:</translation> <translation>Wersja:</translation>
</message> </message>
<message>
<source>Init commands:</source>
<translation>Komendy inicjalizujące:</translation>
</message>
<message>
<source>Reset commands:</source>
<translation>Komendy resetujące:</translation>
</message>
<message> <message>
<source>ST-LINK/V1</source> <source>ST-LINK/V1</source>
<translation>ST-LINK/V1</translation> <translation>ST-LINK/V1</translation>
@@ -37988,7 +37874,7 @@ Czy nadpisać go?</translation>
</message> </message>
</context> </context>
<context> <context>
<name>Nim::NimCompilerBuildStepConfigWidget</name> <name>Nim</name>
<message> <message>
<source>Form</source> <source>Form</source>
<translation>Formularz</translation> <translation>Formularz</translation>
@@ -38021,13 +37907,6 @@ Czy nadpisać go?</translation>
<source>Release</source> <source>Release</source>
<translation>Release</translation> <translation>Release</translation>
</message> </message>
</context>
<context>
<name>Nim::NimCompilerCleanStepConfigWidget</name>
<message>
<source>Form</source>
<translation>Formularz</translation>
</message>
<message> <message>
<source>Working directory:</source> <source>Working directory:</source>
<translation>Katalog roboczy:</translation> <translation>Katalog roboczy:</translation>
@@ -38583,49 +38462,31 @@ Komunikat:
</message> </message>
</context> </context>
<context> <context>
<name>NimRunConfiguration</name> <name>Nim</name>
<message> <message>
<source>Current Build Target</source> <source>Current Build Target</source>
<translation>Bieżący cel budowania</translation> <translation>Bieżący cel budowania</translation>
</message> </message>
</context>
<context>
<name>NimBuildConfigurationWidget</name>
<message> <message>
<source>General</source> <source>General</source>
<translation>Ogólne</translation> <translation>Ogólne</translation>
</message> </message>
</context>
<context>
<name>NimCompilerBuildStep</name>
<message> <message>
<source>Nim Compiler Build Step</source> <source>Nim Compiler Build Step</source>
<translation>Krok budowania kompilatora Nim</translation> <translation>Krok budowania kompilatora Nim</translation>
</message> </message>
</context>
<context>
<name>NimCompilerBuildStepConfigWidget</name>
<message> <message>
<source>Nim build step</source> <source>Nim build step</source>
<translation>Krok budowania Nim</translation> <translation>Krok budowania Nim</translation>
</message> </message>
</context>
<context>
<name>NimCompilerCleanStepFactory</name>
<message> <message>
<source>Nim Compiler Clean Step</source> <source>Nim Compiler Clean Step</source>
<translation>Krok czyszczenia kompilatora Nim</translation> <translation>Krok czyszczenia kompilatora Nim</translation>
</message> </message>
</context>
<context>
<name>NimCompilerCleanStepWidget</name>
<message> <message>
<source>Nim clean step</source> <source>Nim clean step</source>
<translation>Krok czyszczenia Nim</translation> <translation>Krok czyszczenia Nim</translation>
</message> </message>
</context>
<context>
<name>NimCodeStyleSettingsPage</name>
<message> <message>
<source>Code Style</source> <source>Code Style</source>
<translation>Styl kodu</translation> <translation>Styl kodu</translation>
@@ -38634,37 +38495,14 @@ Komunikat:
<source>Nim</source> <source>Nim</source>
<translation>Nim</translation> <translation>Nim</translation>
</message> </message>
</context>
<context>
<name>NimCodeStylePreferencesFactory</name>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context>
<name>Nim::NimBuildConfigurationFactory</name>
<message> <message>
<source>Build</source> <source>Build</source>
<translation type="unfinished"></translation> <translation type="unfinished"></translation>
</message> </message>
</context>
<context>
<name>Nim::NimBuildConfigurationWidget</name>
<message> <message>
<source>Build directory:</source> <source>Build directory:</source>
<translation>Katalog budowania:</translation> <translation>Katalog budowania:</translation>
</message> </message>
</context>
<context>
<name>Nim::NimCompilerBuildStepFactory</name>
<message>
<source>Nim Compiler Build Step</source>
<translation>Krok budowania kompilatora Nim</translation>
</message>
</context>
<context>
<name>Nim::NimCompilerCleanStep</name>
<message> <message>
<source>Nim Clean Step</source> <source>Nim Clean Step</source>
<translation>Krok czyszczenia Nim</translation> <translation>Krok czyszczenia Nim</translation>
@@ -38685,18 +38523,11 @@ Komunikat:
<source>Clean step completed successfully.</source> <source>Clean step completed successfully.</source>
<translation>Krok czyszczenia poprawnie zakończony.</translation> <translation>Krok czyszczenia poprawnie zakończony.</translation>
</message> </message>
</context>
<context>
<name>Nim::NimSettings</name>
<message> <message>
<source>Global</source> <source>Global</source>
<comment>Settings</comment> <comment>Settings</comment>
<translation>Globalne</translation> <translation>Globalne</translation>
</message> </message>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context> </context>
<context> <context>
<name>ProjectExplorer::Internal::CustomExecutableConfigurationWidget</name> <name>ProjectExplorer::Internal::CustomExecutableConfigurationWidget</name>
@@ -41536,7 +41367,7 @@ Termin wygaśnięcia: %3</translation>
</message> </message>
</context> </context>
<context> <context>
<name>Nim::NimProject</name> <name>Nim</name>
<message> <message>
<source>Scanning for Nim files</source> <source>Scanning for Nim files</source>
<translation>Skanowanie w poszukiwaniu plików Nim</translation> <translation>Skanowanie w poszukiwaniu plików Nim</translation>
@@ -41549,16 +41380,6 @@ Termin wygaśnięcia: %3</translation>
<source>Nim compiler does not exist</source> <source>Nim compiler does not exist</source>
<translation>Brak kompilatora Nim</translation> <translation>Brak kompilatora Nim</translation>
</message> </message>
</context>
<context>
<name>Nim::NimToolChainFactory</name>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context>
<name>Nim::NimToolChainConfigWidget</name>
<message> <message>
<source>&amp;Compiler path:</source> <source>&amp;Compiler path:</source>
<translation>Ścieżka do &amp;kompilatora:</translation> <translation>Ścieżka do &amp;kompilatora:</translation>
@@ -42225,7 +42046,7 @@ Błąd: %5</translation>
</message> </message>
</context> </context>
<context> <context>
<name>Nim::NimPlugin</name> <name>Nim</name>
<message> <message>
<source>Nim</source> <source>Nim</source>
<comment>SnippetProvider</comment> <comment>SnippetProvider</comment>

View File

@@ -95,8 +95,8 @@
<translation>Сбросить</translation> <translation>Сбросить</translation>
</message> </message>
<message> <message>
<source>&amp;Switch To</source> <source>&amp;Open</source>
<translation>&amp;Активировать</translation> <translation>&amp;Открыть</translation>
</message> </message>
<message> <message>
<source>Restore last workspace on startup</source> <source>Restore last workspace on startup</source>
@@ -3402,9 +3402,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>Enter GDB commands to reset the hardware. The MCU should be halted after these commands.</source> <source>Enter GDB commands to reset the hardware. The MCU should be halted after these commands.</source>
<translation>Введите команды GDB для аппаратного сброса. После этих команд процессор должен быть остановлен.</translation> <translation>Введите команды GDB для аппаратного сброса. После этих команд процессор должен быть остановлен.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalCustomRunConfiguration</name>
<message> <message>
<source>Unknown</source> <source>Unknown</source>
<translation>Неизвестно</translation> <translation>Неизвестно</translation>
@@ -3417,9 +3414,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>Custom Executable</source> <source>Custom Executable</source>
<translation>Особая программа</translation> <translation>Особая программа</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDebugSupport</name>
<message> <message>
<source>Cannot debug: Kit has no device.</source> <source>Cannot debug: Kit has no device.</source>
<translation>Отладка невозможна: отсутствует устройство в комплекте.</translation> <translation>Отладка невозможна: отсутствует устройство в комплекте.</translation>
@@ -3448,70 +3442,30 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>Unable to create an uVision project options template.</source> <source>Unable to create an uVision project options template.</source>
<translation>Не удалось создать шаблон проекта настроек uVision.</translation> <translation>Не удалось создать шаблон проекта настроек uVision.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDevice</name>
<message>
<source>Bare Metal</source>
<translation>Голое железо</translation>
</message>
<message> <message>
<source>Bare Metal Device</source> <source>Bare Metal Device</source>
<translation>Устройство на голом железе</translation> <translation>Устройство на голом железе</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWidget</name>
<message> <message>
<source>Debug server provider:</source> <source>Debug server provider:</source>
<translation>Тип сервера отладки:</translation> <translation>Тип сервера отладки:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWizard</name>
<message> <message>
<source>New Bare Metal Device Configuration Setup</source> <source>New Bare Metal Device Configuration Setup</source>
<translation>Настройка новой конфигурации голого устройства</translation> <translation>Настройка новой конфигурации голого устройства</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWizardSetupPage</name>
<message> <message>
<source>Set up Debug Server or Hardware Debugger</source> <source>Set up Debug Server or Hardware Debugger</source>
<translation>Настройка сервера отладки или аппаратного отладчика</translation> <translation>Настройка сервера отладки или аппаратного отладчика</translation>
</message> </message>
<message>
<source>Name:</source>
<translation>Название:</translation>
</message>
<message>
<source>Debug server provider:</source>
<translation>Тип сервера отладки:</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::BareMetalGdbCommandsDeployStep</name>
<message> <message>
<source>GDB commands</source> <source>GDB commands</source>
<translation>Команды GDB</translation> <translation>Команды GDB</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalGdbCommandsDeployStepWidget</name>
<message> <message>
<source>GDB commands:</source> <source>GDB commands:</source>
<translation>Команды GDB:</translation> <translation>Команды GDB:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalRunConfiguration</name>
<message>
<source>Unknown</source>
<translation>Неизвестно</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::DebugServerProviderChooser</name>
<message> <message>
<source>Manage...</source> <source>Manage...</source>
<translation>Управление...</translation> <translation>Управление...</translation>
@@ -3520,9 +3474,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>None</source> <source>None</source>
<translation>Нет</translation> <translation>Нет</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::DebugServerProviderModel</name>
<message> <message>
<source>Not recognized</source> <source>Not recognized</source>
<translation>Не определён</translation> <translation>Не определён</translation>
@@ -3547,10 +3498,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<translation>UVSC-совместимый провайдер отладчика <translation>UVSC-совместимый провайдер отладчика
(используется совместно с KEIL uVision).</translation> (используется совместно с KEIL uVision).</translation>
</message> </message>
<message>
<source>Name</source>
<translation>Имя</translation>
</message>
<message> <message>
<source>Type</source> <source>Type</source>
<translation>Тип</translation> <translation>Тип</translation>
@@ -3567,9 +3514,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>The following providers were already configured:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;They were not configured again.</source> <source>The following providers were already configured:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;They were not configured again.</source>
<translation>Следующие провайдеры уже настроены:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;Повторно настраиваться не будут.</translation> <translation>Следующие провайдеры уже настроены:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;Повторно настраиваться не будут.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::DebugServerProvidersSettingsPage</name>
<message> <message>
<source>Add</source> <source>Add</source>
<translation>Добавить</translation> <translation>Добавить</translation>
@@ -3594,9 +3538,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>Bare Metal</source> <source>Bare Metal</source>
<translation>Bare Metal</translation> <translation>Bare Metal</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::EBlinkGdbServerProviderConfigWidget</name>
<message> <message>
<source>Host:</source> <source>Host:</source>
<translation>Хост:</translation> <translation>Хост:</translation>
@@ -3673,9 +3614,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>JTAG</source> <source>JTAG</source>
<translation>JTAG</translation> <translation>JTAG</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProvider</name>
<message> <message>
<source>EBlink</source> <source>EBlink</source>
<translation>EBlink</translation> <translation>EBlink</translation>
@@ -3692,9 +3630,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>ST-LINK Utility</source> <source>ST-LINK Utility</source>
<translation>Утилита ST-LINK</translation> <translation>Утилита ST-LINK</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProviderConfigWidget</name>
<message> <message>
<source>Choose the desired startup mode of the GDB server provider.</source> <source>Choose the desired startup mode of the GDB server provider.</source>
<translation>Выберите желаемый метод запуска сервера GDB.</translation> <translation>Выберите желаемый метод запуска сервера GDB.</translation>
@@ -3723,9 +3658,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>Startup in Pipe Mode</source> <source>Startup in Pipe Mode</source>
<translation>Запуск в локальном режиме (pipe)</translation> <translation>Запуск в локальном режиме (pipe)</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::HostWidget</name>
<message> <message>
<source>Enter TCP/IP hostname of the debug server, like &quot;localhost&quot; or &quot;192.0.2.1&quot;.</source> <source>Enter TCP/IP hostname of the debug server, like &quot;localhost&quot; or &quot;192.0.2.1&quot;.</source>
<translation>Введите TCP/IP имя сервера отладки, например: «localhost» или «192.0.2.1».</translation> <translation>Введите TCP/IP имя сервера отладки, например: «localhost» или «192.0.2.1».</translation>
@@ -3734,9 +3666,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>Enter TCP/IP port which will be listened by the debug server.</source> <source>Enter TCP/IP port which will be listened by the debug server.</source>
<translation>Введите порт TCP/IP, который будет прослушиваться сервером отладки.</translation> <translation>Введите порт TCP/IP, который будет прослушиваться сервером отладки.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::IDebugServerProviderConfigWidget</name>
<message> <message>
<source>Enter the name of the debugger server provider.</source> <source>Enter the name of the debugger server provider.</source>
<translation>Введите имя провайдера сервера отладки.</translation> <translation>Введите имя провайдера сервера отладки.</translation>
@@ -3745,9 +3674,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>Name:</source> <source>Name:</source>
<translation>Имя:</translation> <translation>Имя:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::IarToolChainConfigWidget</name>
<message> <message>
<source>&amp;Compiler path:</source> <source>&amp;Compiler path:</source>
<translation>Путь к &amp;компилятору:</translation> <translation>Путь к &amp;компилятору:</translation>
@@ -3760,13 +3686,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>&amp;ABI:</source> <source>&amp;ABI:</source>
<translation>&amp;ABI:</translation> <translation>&amp;ABI:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::JLinkGdbServerProviderConfigWidget</name>
<message>
<source>Host:</source>
<translation>Хост:</translation>
</message>
<message> <message>
<source>JLink GDB Server (JLinkGDBServerCL.exe)</source> <source>JLink GDB Server (JLinkGDBServerCL.exe)</source>
<translation>JLink сервер GDB (JLinkGDBServerCL.exe)</translation> <translation>JLink сервер GDB (JLinkGDBServerCL.exe)</translation>
@@ -3775,10 +3694,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>JLink GDB Server (JLinkGDBServer)</source> <source>JLink GDB Server (JLinkGDBServer)</source>
<translation>JLink сервер GDB (JLinkGDBServer)</translation> <translation>JLink сервер GDB (JLinkGDBServer)</translation>
</message> </message>
<message>
<source>Executable file:</source>
<translation>Исполняемый файл:</translation>
</message>
<message> <message>
<source>Default</source> <source>Default</source>
<translation>По умолчанию</translation> <translation>По умолчанию</translation>
@@ -3811,33 +3726,10 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>Additional arguments:</source> <source>Additional arguments:</source>
<translation>Дополнительные параметры:</translation> <translation>Дополнительные параметры:</translation>
</message> </message>
<message>
<source>Init commands:</source>
<translation>Команды инициализации:</translation>
</message>
<message>
<source>Reset commands:</source>
<translation>Команды сброса:</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::JLinkUvscAdapterOptionsWidget</name>
<message> <message>
<source>Port:</source> <source>Port:</source>
<translation>Порт:</translation> <translation>Порт:</translation>
</message> </message>
<message>
<source>Speed:</source>
<translation>Скорость:</translation>
</message>
<message>
<source>JTAG</source>
<translation>JTAG</translation>
</message>
<message>
<source>SWD</source>
<translation>SWD</translation>
</message>
<message> <message>
<source>50MHz</source> <source>50MHz</source>
<translation>50 МГц</translation> <translation>50 МГц</translation>
@@ -3886,39 +3778,10 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>100kHz</source> <source>100kHz</source>
<translation>100 кГц</translation> <translation>100 кГц</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::JLinkUvscServerProviderConfigWidget</name>
<message> <message>
<source>Adapter options:</source> <source>Adapter options:</source>
<translation>Параметры адаптера:</translation> <translation>Параметры адаптера:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::KeilToolChainConfigWidget</name>
<message>
<source>&amp;Compiler path:</source>
<translation>Путь к &amp;компилятору:</translation>
</message>
<message>
<source>Platform codegen flags:</source>
<translation>Флаги генерации кода для платформы:</translation>
</message>
<message>
<source>&amp;ABI:</source>
<translation>&amp;ABI:</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::OpenOcdGdbServerProviderConfigWidget</name>
<message>
<source>Host:</source>
<translation>Хост:</translation>
</message>
<message>
<source>Executable file:</source>
<translation>Исполняемый файл:</translation>
</message>
<message> <message>
<source>Root scripts directory:</source> <source>Root scripts directory:</source>
<translation>Корень каталога скриптов:</translation> <translation>Корень каталога скриптов:</translation>
@@ -3927,32 +3790,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>Configuration file:</source> <source>Configuration file:</source>
<translation>Файл конфигурации:</translation> <translation>Файл конфигурации:</translation>
</message> </message>
<message>
<source>Additional arguments:</source>
<translation>Дополнительные параметры:</translation>
</message>
<message>
<source>Init commands:</source>
<translation>Команды инициализации:</translation>
</message>
<message>
<source>Reset commands:</source>
<translation>Команды сброса:</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::SdccToolChainConfigWidget</name>
<message>
<source>&amp;Compiler path:</source>
<translation>Путь к &amp;компилятору:</translation>
</message>
<message>
<source>&amp;ABI:</source>
<translation>&amp;ABI:</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::SimulatorUvscServerProviderConfigWidget</name>
<message> <message>
<source>Limit speed to real-time.</source> <source>Limit speed to real-time.</source>
<translation>Ограничить скорость реальным временем.</translation> <translation>Ограничить скорость реальным временем.</translation>
@@ -3961,25 +3798,10 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>Limit speed to real-time:</source> <source>Limit speed to real-time:</source>
<translation>Ограничить скорость:</translation> <translation>Ограничить скорость:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::StLinkUtilGdbServerProviderConfigWidget</name>
<message>
<source>Host:</source>
<translation>Хост:</translation>
</message>
<message>
<source>Executable file:</source>
<translation>Исполняемый файл:</translation>
</message>
<message> <message>
<source>Specify the verbosity level (0..99).</source> <source>Specify the verbosity level (0..99).</source>
<translation>Укажите уровень информативности (0...99).</translation> <translation>Укажите уровень информативности (0...99).</translation>
</message> </message>
<message>
<source>Verbosity level:</source>
<translation>Уровень информативности:</translation>
</message>
<message> <message>
<source>Continue listening for connections after disconnect.</source> <source>Continue listening for connections after disconnect.</source>
<translation>Продолжать ожидание подключений после отключения.</translation> <translation>Продолжать ожидание подключений после отключения.</translation>
@@ -4004,14 +3826,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>Version:</source> <source>Version:</source>
<translation>Версия:</translation> <translation>Версия:</translation>
</message> </message>
<message>
<source>Init commands:</source>
<translation>Команды инициализации:</translation>
</message>
<message>
<source>Reset commands:</source>
<translation>Команды сброса:</translation>
</message>
<message> <message>
<source>ST-LINK/V1</source> <source>ST-LINK/V1</source>
<translation>ST-LINK/V1</translation> <translation>ST-LINK/V1</translation>
@@ -4020,25 +3834,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>ST-LINK/V2</source> <source>ST-LINK/V2</source>
<translation>ST-LINK/V2</translation> <translation>ST-LINK/V2</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::StLinkUvscAdapterOptionsWidget</name>
<message>
<source>Port:</source>
<translation>Порт:</translation>
</message>
<message>
<source>Speed:</source>
<translation>Скорость:</translation>
</message>
<message>
<source>JTAG</source>
<translation>JTAG</translation>
</message>
<message>
<source>SWD</source>
<translation>SWD</translation>
</message>
<message> <message>
<source>9MHz</source> <source>9MHz</source>
<translation>9 МГц</translation> <translation>9 МГц</translation>
@@ -4091,10 +3886,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>125kHz</source> <source>125kHz</source>
<translation>125 кГц</translation> <translation>125 кГц</translation>
</message> </message>
<message>
<source>100kHz</source>
<translation>100 кГц</translation>
</message>
<message> <message>
<source>50kHz</source> <source>50kHz</source>
<translation>50 кГц</translation> <translation>50 кГц</translation>
@@ -4111,16 +3902,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>5kHz</source> <source>5kHz</source>
<translation>5 кГц</translation> <translation>5 кГц</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::StLinkUvscServerProviderConfigWidget</name>
<message>
<source>Adapter options:</source>
<translation>Параметры адаптера:</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::Uv::DeviceSelectionAlgorithmModel</name>
<message> <message>
<source>Name</source> <source>Name</source>
<translation>Название</translation> <translation>Название</translation>
@@ -4141,9 +3922,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>RAM Size</source> <source>RAM Size</source>
<translation>RAM Объём</translation> <translation>RAM Объём</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::Uv::DeviceSelectionAlgorithmView</name>
<message> <message>
<source>Algorithm path.</source> <source>Algorithm path.</source>
<translation>Путь к алгоритму.</translation> <translation>Путь к алгоритму.</translation>
@@ -4164,16 +3942,10 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>RAM:</source> <source>RAM:</source>
<translation>RAM:</translation> <translation>RAM:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::Uv::DeviceSelectionDialog</name>
<message> <message>
<source>Available Target Devices</source> <source>Available Target Devices</source>
<translation>Доступные устройства</translation> <translation>Доступные устройства</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::Uv::DeviceSelectionMemoryModel</name>
<message> <message>
<source>ID</source> <source>ID</source>
<translation>ID</translation> <translation>ID</translation>
@@ -4186,13 +3958,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>Size</source> <source>Size</source>
<translation>Размер</translation> <translation>Размер</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::Uv::DeviceSelectionModel</name>
<message>
<source>Name</source>
<translation>Название</translation>
</message>
<message> <message>
<source>Version</source> <source>Version</source>
<translation>Версия</translation> <translation>Версия</translation>
@@ -4201,16 +3966,10 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>Vendor</source> <source>Vendor</source>
<translation>Поставщик</translation> <translation>Поставщик</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::Uv::DeviceSelector</name>
<message> <message>
<source>Target device not selected.</source> <source>Target device not selected.</source>
<translation>Устройство не выбрано.</translation> <translation>Устройство не выбрано.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::Uv::DeviceSelectorDetailsPanel</name>
<message> <message>
<source>Vendor:</source> <source>Vendor:</source>
<translation>Поставщик:</translation> <translation>Поставщик:</translation>
@@ -4231,63 +3990,22 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>Flash algorithm:</source> <source>Flash algorithm:</source>
<translation>Алгоритм прошивания:</translation> <translation>Алгоритм прошивания:</translation>
</message> </message>
<message>
<source>Peripheral description files (*.svd)</source>
<translation>Файлы описания устройств (*.svd)</translation>
</message>
<message>
<source>Select Peripheral Description File</source>
<translation>Выбор файла описания внешнего устройства</translation>
</message>
<message>
<source>Peripheral description file:</source>
<translation>Файл описания устройства:</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::Uv::DeviceSelectorToolPanel</name>
<message>
<source>Manage...</source>
<translation>Управление...</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::Uv::DriverSelectionCpuDllModel</name>
<message>
<source>Name</source>
<translation>Название</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::Uv::DriverSelectionCpuDllView</name>
<message> <message>
<source>Debugger CPU library (depends on a CPU core).</source> <source>Debugger CPU library (depends on a CPU core).</source>
<translation>Библиотека поддержки процессора для отладчика (зависит от ядра процессора).</translation> <translation>Библиотека поддержки процессора для отладчика (зависит от ядра процессора).</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::Uv::DriverSelectionDialog</name>
<message> <message>
<source>Available Target Drivers</source> <source>Available Target Drivers</source>
<translation>Доступные драйвера</translation> <translation>Доступные драйвера</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::Uv::DriverSelectionModel</name>
<message> <message>
<source>Path</source> <source>Path</source>
<translation>Путь</translation> <translation>Путь</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::Uv::DriverSelector</name>
<message> <message>
<source>Target driver not selected.</source> <source>Target driver not selected.</source>
<translation>Драйвер не выбран.</translation> <translation>Драйвер не выбран.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::Uv::DriverSelectorDetailsPanel</name>
<message> <message>
<source>Debugger driver library.</source> <source>Debugger driver library.</source>
<translation>Библиотека драйвера отладчика.</translation> <translation>Библиотека драйвера отладчика.</translation>
@@ -4300,16 +4018,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>CPU library:</source> <source>CPU library:</source>
<translation>Библиотека процессора:</translation> <translation>Библиотека процессора:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::Uv::DriverSelectorToolPanel</name>
<message>
<source>Manage...</source>
<translation>Управление...</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::UvscServerProvider</name>
<message> <message>
<source>uVision Simulator</source> <source>uVision Simulator</source>
<translation>Симулятор uVision</translation> <translation>Симулятор uVision</translation>
@@ -4322,13 +4030,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>uVision JLink</source> <source>uVision JLink</source>
<translation>uVision JLink</translation> <translation>uVision JLink</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::UvscServerProviderConfigWidget</name>
<message>
<source>Host:</source>
<translation>Хост:</translation>
</message>
<message> <message>
<source>Choose Keil Toolset Configuration File</source> <source>Choose Keil Toolset Configuration File</source>
<translation>Выбор файла конфигурации инструментария Keil</translation> <translation>Выбор файла конфигурации инструментария Keil</translation>
@@ -4345,9 +4046,6 @@ Warning: this is an experimental feature and might lead to failing to execute th
<source>Target driver:</source> <source>Target driver:</source>
<translation>Драйвер:</translation> <translation>Драйвер:</translation>
</message> </message>
</context>
<context>
<name>BareMetalDeployConfiguration</name>
<message> <message>
<source>Deploy to BareMetal Device</source> <source>Deploy to BareMetal Device</source>
<translation>Развёртывание на устройство на голом железе</translation> <translation>Развёртывание на устройство на голом железе</translation>
@@ -23728,7 +23426,7 @@ Add, modify, and remove document filters, which determine the documentation set
</message> </message>
</context> </context>
<context> <context>
<name>IarToolChain</name> <name>BareMetal</name>
<message> <message>
<source>IAREW %1 (%2, %3)</source> <source>IAREW %1 (%2, %3)</source>
<translation>IAREW %1 (%2, %3)</translation> <translation>IAREW %1 (%2, %3)</translation>
@@ -25092,7 +24790,7 @@ Error: %5</translation>
</message> </message>
</context> </context>
<context> <context>
<name>KeilToolChain</name> <name>BareMetal</name>
<message> <message>
<source>KEIL %1 (%2, %3)</source> <source>KEIL %1 (%2, %3)</source>
<translation>KEIL %1 (%2, %3)</translation> <translation>KEIL %1 (%2, %3)</translation>
@@ -26527,7 +26225,7 @@ Error: %5</translation>
</message> </message>
</context> </context>
<context> <context>
<name>MesonBuildStepConfigWidget</name> <name>MesonProjectManager</name>
<message> <message>
<source>Form</source> <source>Form</source>
<translation></translation> <translation></translation>
@@ -26540,9 +26238,6 @@ Error: %5</translation>
<source>Targets:</source> <source>Targets:</source>
<translation>Цели:</translation> <translation>Цели:</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::BuidOptionsModel</name>
<message> <message>
<source>Key</source> <source>Key</source>
<translation>Ключ</translation> <translation>Ключ</translation>
@@ -26551,20 +26246,10 @@ Error: %5</translation>
<source>Value</source> <source>Value</source>
<translation>Значение</translation> <translation>Значение</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::GeneralSettingsPage</name>
<message> <message>
<source>General</source> <source>General</source>
<translation>Основное</translation> <translation>Основное</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::GeneralSettingsWidget</name>
<message>
<source>Form</source>
<translation></translation>
</message>
<message> <message>
<source>Automatically run Meson when needed.</source> <source>Automatically run Meson when needed.</source>
<translation>Запускать Meson по необходимости.</translation> <translation>Запускать Meson по необходимости.</translation>
@@ -26581,9 +26266,6 @@ Error: %5</translation>
<source>Ninja verbose mode</source> <source>Ninja verbose mode</source>
<translation>Ninja в подробном режиме</translation> <translation>Ninja в подробном режиме</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::MesonActionsManager</name>
<message> <message>
<source>Configure</source> <source>Configure</source>
<translation>Configure</translation> <translation>Configure</translation>
@@ -26596,17 +26278,10 @@ Error: %5</translation>
<source>Build &quot;%1&quot;</source> <source>Build &quot;%1&quot;</source>
<translation>Сборка «%1»</translation> <translation>Сборка «%1»</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::MesonBuildSettingsWidget</name>
<message> <message>
<source>Meson</source> <source>Meson</source>
<translation>Meson</translation> <translation>Meson</translation>
</message> </message>
<message>
<source>Form</source>
<translation></translation>
</message>
<message> <message>
<source>Apply Configuration Changes</source> <source>Apply Configuration Changes</source>
<translation>Применить изменения</translation> <translation>Применить изменения</translation>
@@ -26625,17 +26300,11 @@ Useful if build directory is corrupted or when rebuilding with a newer version o
<source>Filter</source> <source>Filter</source>
<translation>Фильтр</translation> <translation>Фильтр</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::MesonBuildStepConfigWidget</name>
<message> <message>
<source>Build</source> <source>Build</source>
<comment>MesonProjectManager::MesonBuildStepConfigWidget display name.</comment> <comment>MesonProjectManager::MesonBuildStepConfigWidget display name.</comment>
<translation>Сборка</translation> <translation>Сборка</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::MesonProcess</name>
<message> <message>
<source>Configuring &quot;%1&quot;.</source> <source>Configuring &quot;%1&quot;.</source>
<translation>Настройка «%1».</translation> <translation>Настройка «%1».</translation>
@@ -26680,9 +26349,6 @@ Useful if build directory is corrupted or when rebuilding with a newer version o
<source>Command is not executable: %1</source> <source>Command is not executable: %1</source>
<translation>Команда не запускается: %1</translation> <translation>Команда не запускается: %1</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::MesonProject</name>
<message> <message>
<source>No Meson tool set.</source> <source>No Meson tool set.</source>
<translation>Программа Meson не указана.</translation> <translation>Программа Meson не указана.</translation>
@@ -26695,9 +26361,6 @@ Useful if build directory is corrupted or when rebuilding with a newer version o
<source>No compilers set in kit.</source> <source>No compilers set in kit.</source>
<translation>У комплекта не заданы компиляторы.</translation> <translation>У комплекта не заданы компиляторы.</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::MesonToolKitAspect</name>
<message> <message>
<source>Meson Tool</source> <source>Meson Tool</source>
<translation>Утилита Meson</translation> <translation>Утилита Meson</translation>
@@ -26710,28 +26373,14 @@ Useful if build directory is corrupted or when rebuilding with a newer version o
<source>Cannot validate this meson executable.</source> <source>Cannot validate this meson executable.</source>
<translation>Невозможно проверить эту программу Meson.</translation> <translation>Невозможно проверить эту программу Meson.</translation>
</message> </message>
<message>
<source>Meson</source>
<translation>Meson</translation>
</message>
<message> <message>
<source>Unconfigured</source> <source>Unconfigured</source>
<translation>Не настроено</translation> <translation>Не настроено</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::NinjaBuildStep</name>
<message> <message>
<source>Meson Build</source> <source>Meson Build</source>
<translation>Сборка Meson</translation> <translation>Сборка Meson</translation>
</message> </message>
<message>
<source>Meson</source>
<translation>Meson</translation>
</message>
</context>
<context>
<name>MesonProjectManager::Internal::NinjaToolKitAspect</name>
<message> <message>
<source>Ninja Tool</source> <source>Ninja Tool</source>
<translation>Утилита Ninja</translation> <translation>Утилита Ninja</translation>
@@ -26748,17 +26397,6 @@ Useful if build directory is corrupted or when rebuilding with a newer version o
<source>Ninja</source> <source>Ninja</source>
<translation>Ninja</translation> <translation>Ninja</translation>
</message> </message>
<message>
<source>Unconfigured</source>
<translation>Не настроено</translation>
</message>
</context>
<context>
<name>MesonProjectManager::Internal::ToolItemSettings</name>
<message>
<source>Form</source>
<translation></translation>
</message>
<message> <message>
<source>Name:</source> <source>Name:</source>
<translation>Имя:</translation> <translation>Имя:</translation>
@@ -26767,9 +26405,6 @@ Useful if build directory is corrupted or when rebuilding with a newer version o
<source>Path:</source> <source>Path:</source>
<translation>Путь:</translation> <translation>Путь:</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::ToolTreeItem</name>
<message> <message>
<source>Meson executable path does not exist.</source> <source>Meson executable path does not exist.</source>
<translation>Не найден путь к программе Meson.</translation> <translation>Не найден путь к программе Meson.</translation>
@@ -26782,9 +26417,6 @@ Useful if build directory is corrupted or when rebuilding with a newer version o
<source>Meson executable path is not executable.</source> <source>Meson executable path is not executable.</source>
<translation>Путь к программе Meson не исполняемый.</translation> <translation>Путь к программе Meson не исполняемый.</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::ToolsSettingsPage</name>
<message> <message>
<source>Name</source> <source>Name</source>
<translation>Имя</translation> <translation>Имя</translation>
@@ -26821,13 +26453,6 @@ Useful if build directory is corrupted or when rebuilding with a newer version o
<source>Cannot get tool version.</source> <source>Cannot get tool version.</source>
<translation>Не удалось получить версию инструмента.</translation> <translation>Не удалось получить версию инструмента.</translation>
</message> </message>
</context>
<context>
<name>MesonProjectManager::Internal::ToolsSettingsWidget</name>
<message>
<source>Form</source>
<translation></translation>
</message>
<message> <message>
<source>Add</source> <source>Add</source>
<translation>Добавить</translation> <translation>Добавить</translation>
@@ -26849,13 +26474,6 @@ Useful if build directory is corrupted or when rebuilding with a newer version o
<translation>Сделать по умолчанию</translation> <translation>Сделать по умолчанию</translation>
</message> </message>
</context> </context>
<context>
<name>MesonProjectManager::MesonToolManager</name>
<message>
<source>Meson</source>
<translation>Meson</translation>
</message>
</context>
<context> <context>
<name>MimeTypeDialog</name> <name>MimeTypeDialog</name>
<message> <message>
@@ -27288,28 +26906,19 @@ If set to false, the target will be moved straight to the current mouse position
</message> </message>
</context> </context>
<context> <context>
<name>Nim::CodeStyleSettings</name> <name>Nim</name>
<message> <message>
<source>Nim</source> <source>Nim</source>
<translation>Nim</translation> <translation>Nim</translation>
</message> </message>
</context>
<context>
<name>Nim::NimBuildConfiguration</name>
<message> <message>
<source>General</source> <source>General</source>
<translation>Основное</translation> <translation>Основное</translation>
</message> </message>
</context>
<context>
<name>Nim::NimCompilerBuildStep</name>
<message> <message>
<source>Nim Compiler Build Step</source> <source>Nim Compiler Build Step</source>
<translation>Этап сборки компилятора Nim</translation> <translation>Этап сборки компилятора Nim</translation>
</message> </message>
</context>
<context>
<name>Nim::NimCompilerBuildStepConfigWidget</name>
<message> <message>
<source>Target:</source> <source>Target:</source>
<translation>Цель:</translation> <translation>Цель:</translation>
@@ -27338,9 +26947,6 @@ If set to false, the target will be moved straight to the current mouse position
<source>Release</source> <source>Release</source>
<translation>Выпуск</translation> <translation>Выпуск</translation>
</message> </message>
</context>
<context>
<name>Nim::NimCompilerCleanStep</name>
<message> <message>
<source>Nim Clean Step</source> <source>Nim Clean Step</source>
<translation>Этап очистки компилятора Nim</translation> <translation>Этап очистки компилятора Nim</translation>
@@ -27369,17 +26975,11 @@ If set to false, the target will be moved straight to the current mouse position
<source>Nim Compiler Clean Step</source> <source>Nim Compiler Clean Step</source>
<translation>Этап очистки компилятора Nim</translation> <translation>Этап очистки компилятора Nim</translation>
</message> </message>
</context>
<context>
<name>Nim::NimPlugin</name>
<message> <message>
<source>Nim</source> <source>Nim</source>
<comment>SnippetProvider</comment> <comment>SnippetProvider</comment>
<translation>Nim</translation> <translation>Nim</translation>
</message> </message>
</context>
<context>
<name>Nim::NimProject</name>
<message> <message>
<source>No Nim compiler set.</source> <source>No Nim compiler set.</source>
<translation>Компилятор Nim не задан.</translation> <translation>Компилятор Nim не задан.</translation>
@@ -27388,35 +26988,15 @@ If set to false, the target will be moved straight to the current mouse position
<source>Nim compiler does not exist.</source> <source>Nim compiler does not exist.</source>
<translation>Компилятор Nim отсутствует.</translation> <translation>Компилятор Nim отсутствует.</translation>
</message> </message>
</context>
<context>
<name>Nim::NimRunConfiguration</name>
<message> <message>
<source>Current Build Target</source> <source>Current Build Target</source>
<translation>Цель текущей сборки</translation> <translation>Цель текущей сборки</translation>
</message> </message>
</context>
<context>
<name>Nim::NimSettings</name>
<message> <message>
<source>Global</source> <source>Global</source>
<comment>Settings</comment> <comment>Settings</comment>
<translation>Общие</translation> <translation>Общие</translation>
</message> </message>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context>
<name>Nim::NimToolChain</name>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context>
<name>Nim::NimToolChainConfigWidget</name>
<message> <message>
<source>&amp;Compiler path:</source> <source>&amp;Compiler path:</source>
<translation>Путь к &amp;компилятору:</translation> <translation>Путь к &amp;компилятору:</translation>
@@ -27425,9 +27005,6 @@ If set to false, the target will be moved straight to the current mouse position
<source>&amp;Compiler version:</source> <source>&amp;Compiler version:</source>
<translation>&amp;Версия компилятора:</translation> <translation>&amp;Версия компилятора:</translation>
</message> </message>
</context>
<context>
<name>Nim::NimToolsSettingsWidget</name>
<message> <message>
<source>Nimsuggest</source> <source>Nimsuggest</source>
<translation>Nimsuggest</translation> <translation>Nimsuggest</translation>
@@ -27436,23 +27013,10 @@ If set to false, the target will be moved straight to the current mouse position
<source>Path</source> <source>Path</source>
<translation>Путь</translation> <translation>Путь</translation>
</message> </message>
</context>
<context>
<name>Nim::NimbleBuildConfiguration</name>
<message>
<source>General</source>
<translation>Основное</translation>
</message>
</context>
<context>
<name>Nim::NimbleBuildStep</name>
<message> <message>
<source>Nimble Build</source> <source>Nimble Build</source>
<translation>Сборка Nimble</translation> <translation>Сборка Nimble</translation>
</message> </message>
</context>
<context>
<name>Nim::NimbleBuildStepWidget</name>
<message> <message>
<source>Form</source> <source>Form</source>
<translation></translation> <translation></translation>
@@ -27465,9 +27029,6 @@ If set to false, the target will be moved straight to the current mouse position
<source>Reset to Default</source> <source>Reset to Default</source>
<translation>Сбросить на умолчальные</translation> <translation>Сбросить на умолчальные</translation>
</message> </message>
</context>
<context>
<name>Nim::NimbleTaskStep</name>
<message> <message>
<source>Nimble task %1 not found.</source> <source>Nimble task %1 not found.</source>
<translation>Не удалось найти задачу Nimble %1.</translation> <translation>Не удалось найти задачу Nimble %1.</translation>
@@ -27476,13 +27037,6 @@ If set to false, the target will be moved straight to the current mouse position
<source>Nimble Task</source> <source>Nimble Task</source>
<translation>Задача Nimble</translation> <translation>Задача Nimble</translation>
</message> </message>
</context>
<context>
<name>Nim::NimbleTaskStepWidget</name>
<message>
<source>Form</source>
<translation></translation>
</message>
<message> <message>
<source>Task arguments:</source> <source>Task arguments:</source>
<translation>Параметры задачи:</translation> <translation>Параметры задачи:</translation>
@@ -27491,77 +27045,22 @@ If set to false, the target will be moved straight to the current mouse position
<source>Tasks:</source> <source>Tasks:</source>
<translation>Задачи:</translation> <translation>Задачи:</translation>
</message> </message>
</context>
<context>
<name>Nim::NimbleTestConfiguration</name>
<message> <message>
<source>Nimble Test</source> <source>Nimble Test</source>
<translation>Тест Nimble</translation> <translation>Тест Nimble</translation>
</message> </message>
</context>
<context>
<name>Nim::ToolSettingsPage</name>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context>
<name>NimCodeStylePreferencesFactory</name>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context>
<name>NimCodeStyleSettingsPage</name>
<message> <message>
<source>Code Style</source> <source>Code Style</source>
<translation>Стиль кода</translation> <translation>Стиль кода</translation>
</message> </message>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context>
<name>NimCompilerBuildStep</name>
<message>
<source>Nim Compiler Build Step</source>
<translation>Этап сборки компилятора Nim</translation>
</message>
</context>
<context>
<name>NimCompilerBuildStepConfigWidget</name>
<message> <message>
<source>Nim build step</source> <source>Nim build step</source>
<translation>Этап сборки Nim</translation> <translation>Этап сборки Nim</translation>
</message> </message>
</context>
<context>
<name>NimToolsSettingsPage</name>
<message> <message>
<source>Tools</source> <source>Tools</source>
<translation>Инструменты</translation> <translation>Инструменты</translation>
</message> </message>
<message>
<source>Nim</source>
<translation>Nim</translation>
</message>
</context>
<context>
<name>NimbleBuildStep</name>
<message>
<source>Nimble Build</source>
<translation>Сборка Nimble</translation>
</message>
</context>
<context>
<name>NimbleTaskStep</name>
<message>
<source>Nimble Task</source>
<translation>Задача Nimble</translation>
</message>
</context> </context>
<context> <context>
<name>NoShowCheckbox</name> <name>NoShowCheckbox</name>
@@ -44973,7 +44472,7 @@ Row: %4, Column: %5
</message> </message>
</context> </context>
<context> <context>
<name>SdccToolChain</name> <name>BareMetal</name>
<message> <message>
<source>SDCC %1 (%2, %3)</source> <source>SDCC %1 (%2, %3)</source>
<translation>SDCC %1 (%2, %3)</translation> <translation>SDCC %1 (%2, %3)</translation>

View File

@@ -7537,8 +7537,8 @@ enojen »Vstopi« za oddajo signala pa vas bo privedel neposredno do ustrezne pr
</message> </message>
<message> <message>
<location/> <location/>
<source>&amp;Switch To</source> <source>&amp;Open</source>
<translation>P&amp;reklopi na</translation> <translation>&amp;Odpri</translation>
</message> </message>
<message> <message>
<location/> <location/>

View File

@@ -15576,8 +15576,8 @@ to project &apos;%2&apos;.</source>
<translation>Ви&amp;далити</translation> <translation>Ви&amp;далити</translation>
</message> </message>
<message> <message>
<source>&amp;Switch To</source> <source>&amp;Open</source>
<translation>&amp;Перемкнутись до</translation> <translation>&amp;Відкрити</translation>
</message> </message>
<message> <message>
<source>New session name</source> <source>New session name</source>
@@ -36314,7 +36314,7 @@ This wizard will guide you through the essential steps to deploy a ready-to-go d
</message> </message>
</context> </context>
<context> <context>
<name>BareMetal::BareMetalDeviceConfigurationWidget</name> <name>BareMetal</name>
<message> <message>
<source>Form</source> <source>Form</source>
<translation type="vanished">Форма</translation> <translation type="vanished">Форма</translation>
@@ -36323,25 +36323,6 @@ This wizard will guide you through the essential steps to deploy a ready-to-go d
<source>GDB host:</source> <source>GDB host:</source>
<translation type="vanished">Вузол GDB:</translation> <translation type="vanished">Вузол GDB:</translation>
</message> </message>
<message>
<source>GDB port:</source>
<translation type="vanished">Порт GDB:</translation>
</message>
<message>
<source>GDB commands:</source>
<translation type="vanished">Команди GDB:</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWizardSetupPage</name>
<message>
<source>Form</source>
<translation type="vanished">Форма</translation>
</message>
<message>
<source>Set up GDB Server or Hardware Debugger</source>
<translation>Налаштування сервера GDB або апаратного зневаджувача</translation>
</message>
<message> <message>
<source>Name:</source> <source>Name:</source>
<translation>Назва:</translation> <translation>Назва:</translation>
@@ -36350,34 +36331,10 @@ This wizard will guide you through the essential steps to deploy a ready-to-go d
<source>GDB server provider:</source> <source>GDB server provider:</source>
<translation>Постачальник сервера GDB:</translation> <translation>Постачальник сервера GDB:</translation>
</message> </message>
<message>
<source>Init commands:</source>
<translation type="vanished">Команди ініціалізації:</translation>
</message>
<message>
<source>Reset commands:</source>
<translation type="vanished">Команди скидання:</translation>
</message>
<message>
<source>Bare Metal Device</source>
<translation>Голий пристрій</translation>
</message>
<message> <message>
<source>localhost</source> <source>localhost</source>
<translation type="vanished">localhost</translation> <translation type="vanished">localhost</translation>
</message> </message>
<message>
<source>GDB port:</source>
<translation type="vanished">Порт GDB:</translation>
</message>
<message>
<source>GDB host:</source>
<translation type="vanished">Вузол GDB:</translation>
</message>
<message>
<source>GDB commands:</source>
<translation type="vanished">Команди GDB:</translation>
</message>
<message> <message>
<source>load <source>load
monitor reset</source> monitor reset</source>
@@ -37410,95 +37367,27 @@ Do you want to uninstall the existing package next time?</source>
</message> </message>
</context> </context>
<context> <context>
<name>BareMetal::Internal::BareMetalDevice</name> <name>BareMetal</name>
<message> <message>
<source>Bare Metal</source> <source>Bare Metal</source>
<translation>Голе залізо</translation> <translation>Голе залізо</translation>
</message> </message>
</context>
<context>
<name>BareMetal::BareMetalDeviceConfigurationFactory</name>
<message> <message>
<source>Bare Metal Device</source> <source>Bare Metal Device</source>
<translation type="vanished">Голий пристрій</translation> <translation type="vanished">Голий пристрій</translation>
</message> </message>
</context>
<context>
<name>BareMetal::BareMetalDeviceConfigurationWizard</name>
<message>
<source>New Bare Metal Device Configuration Setup</source>
<translation type="vanished">Налаштування нової конфігурації голого пристрою</translation>
</message>
</context>
<context>
<name>BareMetal::BareMetalDeviceConfigurationWizardSetupPage</name>
<message> <message>
<source>Set up GDB Server or Hardware Debugger</source> <source>Set up GDB Server or Hardware Debugger</source>
<translation type="vanished">Налаштування сервера GDB або апаратного зневаджувача</translation> <translation type="vanished">Налаштування сервера GDB або апаратного зневаджувача</translation>
</message> </message>
<message>
<source>Bare Metal Device</source>
<translation type="vanished">Голий пристрій</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::BareMetalGdbCommandsDeployStepWidget</name>
<message> <message>
<source>GDB commands:</source> <source>GDB commands:</source>
<translation>Команди GDB:</translation> <translation>Команди GDB:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::BareMetalGdbCommandsDeployStep</name>
<message>
<source>GDB commands</source>
<translation type="vanished">Команди GDB</translation>
</message>
</context>
<context>
<name>BareMetal::BareMetalRunConfiguration</name>
<message>
<source>%1 (via GDB server or hardware debugger)</source>
<translation type="vanished">%1 (через сервер GDB або апаратний зневаджувач)</translation>
</message>
<message>
<source>Run on GDB server or hardware debugger</source>
<extracomment>Bare Metal run configuration default run name</extracomment>
<translation type="vanished">Виконати на сервері GDB або апаратному зневаджувачі</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::BareMetalRunConfigurationFactory</name>
<message> <message>
<source>%1 (on GDB server or hardware debugger)</source> <source>%1 (on GDB server or hardware debugger)</source>
<translation>%1 (через сервер GDB або апаратний зневаджувач)</translation> <translation>%1 (через сервер GDB або апаратний зневаджувач)</translation>
</message> </message>
</context>
<context>
<name>BareMetal::BareMetalRunConfigurationWidget</name>
<message>
<source>Executable:</source>
<translation type="vanished">Виконуваний модуль:</translation>
</message>
<message>
<source>Arguments:</source>
<translation type="vanished">Аргументи:</translation>
</message>
<message>
<source>&lt;default&gt;</source>
<translation type="vanished">&lt;типово&gt;</translation>
</message>
<message>
<source>Working directory:</source>
<translation type="vanished">Робоча тека:</translation>
</message>
<message>
<source>Unknown</source>
<translation type="vanished">Невідомо</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::BareMetalRunControlFactory</name>
<message> <message>
<source>Cannot debug: Local executable is not set.</source> <source>Cannot debug: Local executable is not set.</source>
<translation>Неможливо зневадити: локальний виконуваний модуль не задано.</translation> <translation>Неможливо зневадити: локальний виконуваний модуль не задано.</translation>
@@ -41067,57 +40956,14 @@ Install an SDK of at least API version %1.</source>
<source>Enter GDB commands to reset the hardware. The MCU should be halted after these commands.</source> <source>Enter GDB commands to reset the hardware. The MCU should be halted after these commands.</source>
<translation>Введіть команди GDB для апаратного скидання. Мікроконтролер має бути зупинено після цих команд.</translation> <translation>Введіть команди GDB для апаратного скидання. Мікроконтролер має бути зупинено після цих команд.</translation>
</message> </message>
<message>
<source>Bare Metal</source>
<translation>Голе залізо</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationFactory</name>
<message>
<source>Bare Metal Device</source>
<translation>Голий пристрій</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWidget</name>
<message>
<source>GDB host:</source>
<translation type="vanished">Вузол GDB:</translation>
</message>
<message>
<source>GDB port:</source>
<translation type="vanished">Порт GDB:</translation>
</message>
<message>
<source>Init commands:</source>
<translation type="vanished">Команди ініціалізації:</translation>
</message>
<message>
<source>Reset commands:</source>
<translation type="vanished">Команди скидання:</translation>
</message>
<message>
<source>GDB server provider:</source>
<translation>Постачальник сервера GDB:</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDeviceConfigurationWizard</name>
<message> <message>
<source>New Bare Metal Device Configuration Setup</source> <source>New Bare Metal Device Configuration Setup</source>
<translation>Налаштування нової конфігурації голого пристрою</translation> <translation>Налаштування нової конфігурації голого пристрою</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalGdbCommandsDeployStep</name>
<message> <message>
<source>GDB commands</source> <source>GDB commands</source>
<translation>Команди GDB</translation> <translation>Команди GDB</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalRunConfiguration</name>
<message> <message>
<source>%1 (via GDB server or hardware debugger)</source> <source>%1 (via GDB server or hardware debugger)</source>
<translation>%1 (через сервер GDB або апаратний зневаджувач)</translation> <translation>%1 (через сервер GDB або апаратний зневаджувач)</translation>
@@ -41127,17 +40973,10 @@ Install an SDK of at least API version %1.</source>
<extracomment>Bare Metal run configuration default run name</extracomment> <extracomment>Bare Metal run configuration default run name</extracomment>
<translation>Виконати на сервері GDB або апаратному зневаджувачі</translation> <translation>Виконати на сервері GDB або апаратному зневаджувачі</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalRunConfigurationWidget</name>
<message> <message>
<source>Executable:</source> <source>Executable:</source>
<translation>Виконуваний модуль:</translation> <translation>Виконуваний модуль:</translation>
</message> </message>
<message>
<source>Arguments:</source>
<translation type="vanished">Аргументи:</translation>
</message>
<message> <message>
<source>&lt;default&gt;</source> <source>&lt;default&gt;</source>
<translation>&lt;типово&gt;</translation> <translation>&lt;типово&gt;</translation>
@@ -45881,22 +45720,11 @@ Affected are breakpoints %1</source>
</message> </message>
</context> </context>
<context> <context>
<name>BareMetal::Internal::BareMetalCustomRunConfigWidget</name> <name>BareMetal</name>
<message>
<source>Executable:</source>
<translation>Виконуваний модуль:</translation>
</message>
<message>
<source>Arguments:</source>
<translation type="vanished">Аргументи:</translation>
</message>
<message> <message>
<source>Work directory:</source> <source>Work directory:</source>
<translation>Робоча тека:</translation> <translation>Робоча тека:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalCustomRunConfiguration</name>
<message> <message>
<source>The remote executable must be set in order to run a custom remote run configuration.</source> <source>The remote executable must be set in order to run a custom remote run configuration.</source>
<translation>Має бути заданий віддалений виконуваний модуль, щоб виконати користувацьку віддалену конфігурацію запуску.</translation> <translation>Має бути заданий віддалений виконуваний модуль, щоб виконати користувацьку віддалену конфігурацію запуску.</translation>
@@ -45905,9 +45733,6 @@ Affected are breakpoints %1</source>
<source>Custom Executable (on GDB server or hardware debugger)</source> <source>Custom Executable (on GDB server or hardware debugger)</source>
<translation>Виконуваний модуль (через сервер GDB або апаратний зневаджувач)</translation> <translation>Виконуваний модуль (через сервер GDB або апаратний зневаджувач)</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::BareMetalDebugSupport</name>
<message> <message>
<source>Debugging failed.</source> <source>Debugging failed.</source>
<translation>Збій зневадження.</translation> <translation>Збій зневадження.</translation>
@@ -45920,16 +45745,10 @@ Affected are breakpoints %1</source>
<source>Starting GDB server...</source> <source>Starting GDB server...</source>
<translation>Запуск сервера GDB...</translation> <translation>Запуск сервера GDB...</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::DefaultGdbServerProviderFactory</name>
<message> <message>
<source>Default</source> <source>Default</source>
<translation>Типовий</translation> <translation>Типовий</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::DefaultGdbServerProviderConfigWidget</name>
<message> <message>
<source>Host:</source> <source>Host:</source>
<translation>Вузол:</translation> <translation>Вузол:</translation>
@@ -45942,24 +45761,14 @@ Affected are breakpoints %1</source>
<source>Reset commands:</source> <source>Reset commands:</source>
<translation>Команди скидання:</translation> <translation>Команди скидання:</translation>
</message> </message>
</context>
<context>
<name>BareMetal::GdbServerProvider</name>
<message> <message>
<source>Clone of %1</source> <source>Clone of %1</source>
<translation>Клон %1</translation> <translation>Клон %1</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProviderConfigWidget</name>
<message> <message>
<source>Enter the name of the GDB server provider.</source> <source>Enter the name of the GDB server provider.</source>
<translation>Введіть назву постачальника сервера GDB.</translation> <translation>Введіть назву постачальника сервера GDB.</translation>
</message> </message>
<message>
<source>Name:</source>
<translation>Назва:</translation>
</message>
<message> <message>
<source>Choose the desired startup mode of the GDB server provider.</source> <source>Choose the desired startup mode of the GDB server provider.</source>
<translation>Оберіть бажаний режим запуску постачальника сервера GDB.</translation> <translation>Оберіть бажаний режим запуску постачальника сервера GDB.</translation>
@@ -45980,9 +45789,6 @@ Affected are breakpoints %1</source>
<source>Startup in Pipe Mode</source> <source>Startup in Pipe Mode</source>
<translation>Запуск в режимі конвеєра</translation> <translation>Запуск в режимі конвеєра</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::HostWidget</name>
<message> <message>
<source>Enter TCP/IP hostname of the GDB server provider, like &quot;localhost&quot; or &quot;192.0.2.1&quot;.</source> <source>Enter TCP/IP hostname of the GDB server provider, like &quot;localhost&quot; or &quot;192.0.2.1&quot;.</source>
<translation>Введіть назву вузла постачальника сервера GDB (напр., &quot;localhost&quot; або &quot;192.0.2.1&quot;).</translation> <translation>Введіть назву вузла постачальника сервера GDB (напр., &quot;localhost&quot; або &quot;192.0.2.1&quot;).</translation>
@@ -45991,9 +45797,6 @@ Affected are breakpoints %1</source>
<source>Enter TCP/IP port which will be listened by the GDB server provider.</source> <source>Enter TCP/IP port which will be listened by the GDB server provider.</source>
<translation>Введіть порт, на якому буде слухати постачальник сервера GDB.</translation> <translation>Введіть порт, на якому буде слухати постачальник сервера GDB.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProviderChooser</name>
<message> <message>
<source>Manage...</source> <source>Manage...</source>
<translation>Управління...</translation> <translation>Управління...</translation>
@@ -46002,9 +45805,6 @@ Affected are breakpoints %1</source>
<source>None</source> <source>None</source>
<translation>Немає</translation> <translation>Немає</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProviderModel</name>
<message> <message>
<source>Name</source> <source>Name</source>
<translation>Назва</translation> <translation>Назва</translation>
@@ -46025,9 +45825,6 @@ Affected are breakpoints %1</source>
<source>The following providers were already configured:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;They were not configured again.</source> <source>The following providers were already configured:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;They were not configured again.</source>
<translation>Наступні постачальники вже сконфігуровано:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;Їх не буде сконфігуровано знову.</translation> <translation>Наступні постачальники вже сконфігуровано:&lt;br&gt;&amp;nbsp;%1&lt;br&gt;Їх не буде сконфігуровано знову.</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::GdbServerProvidersSettingsPage</name>
<message> <message>
<source>GDB Server Providers</source> <source>GDB Server Providers</source>
<translation>Постачальники сервера GDB</translation> <translation>Постачальники сервера GDB</translation>
@@ -46044,20 +45841,10 @@ Affected are breakpoints %1</source>
<source>Remove</source> <source>Remove</source>
<translation>Видалити</translation> <translation>Видалити</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::OpenOcdGdbServerProviderFactory</name>
<message> <message>
<source>OpenOCD</source> <source>OpenOCD</source>
<translation>OpenOCD</translation> <translation>OpenOCD</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::OpenOcdGdbServerProviderConfigWidget</name>
<message>
<source>Host:</source>
<translation>Вузол:</translation>
</message>
<message> <message>
<source>Executable file:</source> <source>Executable file:</source>
<translation>Виконуваний файл:</translation> <translation>Виконуваний файл:</translation>
@@ -46074,32 +45861,10 @@ Affected are breakpoints %1</source>
<source>Additional arguments:</source> <source>Additional arguments:</source>
<translation>Додаткові аргументи:</translation> <translation>Додаткові аргументи:</translation>
</message> </message>
<message>
<source>Init commands:</source>
<translation>Команди ініціалізації:</translation>
</message>
<message>
<source>Reset commands:</source>
<translation>Команди скидання:</translation>
</message>
</context>
<context>
<name>BareMetal::Internal::StLinkUtilGdbServerProviderFactory</name>
<message> <message>
<source>ST-LINK Utility</source> <source>ST-LINK Utility</source>
<translation>Утиліта ST-LINK</translation> <translation>Утиліта ST-LINK</translation>
</message> </message>
</context>
<context>
<name>BareMetal::Internal::StLinkUtilGdbServerProviderConfigWidget</name>
<message>
<source>Host:</source>
<translation>Вузол:</translation>
</message>
<message>
<source>Executable file:</source>
<translation>Виконуваний файл:</translation>
</message>
<message> <message>
<source>Specify the verbosity level (0..99).</source> <source>Specify the verbosity level (0..99).</source>
<translation>Вкажіть рівень деталізації (0..99).</translation> <translation>Вкажіть рівень деталізації (0..99).</translation>
@@ -46132,14 +45897,6 @@ Affected are breakpoints %1</source>
<source>Version:</source> <source>Version:</source>
<translation>Версія:</translation> <translation>Версія:</translation>
</message> </message>
<message>
<source>Init commands:</source>
<translation>Команди ініціалізації:</translation>
</message>
<message>
<source>Reset commands:</source>
<translation>Команди скидання:</translation>
</message>
<message> <message>
<source>ST-LINK/V1</source> <source>ST-LINK/V1</source>
<translation>ST-LINK/V1</translation> <translation>ST-LINK/V1</translation>

View File

@@ -10526,8 +10526,8 @@ SOURCES *= .../ide/main/bin/dumper/dumper.cpp
<translation>(&amp;D)</translation> <translation>(&amp;D)</translation>
</message> </message>
<message> <message>
<source>&amp;Switch To</source> <source>&amp;Open</source>
<translation>(&amp;S)</translation> <translation>(&amp;S)</translation>
</message> </message>
<message> <message>
<source>New session name</source> <source>New session name</source>

View File

@@ -6980,8 +6980,8 @@ Add, modify, and remove document filters, which determine the documentation set
<translation>(&amp;D)</translation> <translation>(&amp;D)</translation>
</message> </message>
<message> <message>
<source>&amp;Switch To</source> <source>&amp;Open</source>
<translation>(&amp;S)</translation> <translation>(&amp;S)</translation>
</message> </message>
<message> <message>
<source>New session name</source> <source>New session name</source>

View File

@@ -35,6 +35,7 @@
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/qtcprocess.h> #include <utils/qtcprocess.h>
#include <utils/qtcsettings.h> #include <utils/qtcsettings.h>
#include <utils/threadutils.h>
#ifdef WITH_TESTS #ifdef WITH_TESTS
#include <utils/hostosinfo.h> #include <utils/hostosinfo.h>
@@ -851,7 +852,7 @@ bool PluginManager::finishScenario()
// Waits until the running scenario is fully initialized // Waits until the running scenario is fully initialized
void PluginManager::waitForScenarioFullyInitialized() void PluginManager::waitForScenarioFullyInitialized()
{ {
if (QThread::currentThread() == qApp->thread()) { if (isMainThread()) {
qWarning("The waitForScenarioFullyInitialized() function can't be called from main thread."); qWarning("The waitForScenarioFullyInitialized() function can't be called from main thread.");
return; return;
} }
@@ -1378,7 +1379,7 @@ void PluginManagerPrivate::shutdown()
#ifdef WITH_TESTS #ifdef WITH_TESTS
if (PluginManager::isScenarioRunning("TestModelManagerInterface")) { if (PluginManager::isScenarioRunning("TestModelManagerInterface")) {
qDebug() << "Point 2: Expect the next call to Point 3 triggers a crash"; qDebug() << "Point 2: Expect the next call to Point 3 triggers a crash";
QThread::currentThread()->sleep(5); QThread::sleep(5);
} }
#endif #endif
if (!allObjects.isEmpty()) { if (!allObjects.isEmpty()) {

View File

@@ -7,7 +7,6 @@
#include "qmljsinterpreter.h" #include "qmljsinterpreter.h"
#include "qmljsmodelmanagerinterface.h" #include "qmljsmodelmanagerinterface.h"
#include "qmljsplugindumper.h" #include "qmljsplugindumper.h"
#include "qmljstypedescriptionreader.h"
#include "qmljsdialect.h" #include "qmljsdialect.h"
#include "qmljsviewercontext.h" #include "qmljsviewercontext.h"
#include "qmljsutils.h" #include "qmljsutils.h"
@@ -989,7 +988,7 @@ void ModelManagerInterface::parseLoop(QSet<Utils::FilePath> &scannedPaths,
ExtensionSystem::PluginManager::waitForScenarioFullyInitialized(); ExtensionSystem::PluginManager::waitForScenarioFullyInitialized();
if (ExtensionSystem::PluginManager::finishScenario()) { if (ExtensionSystem::PluginManager::finishScenario()) {
qDebug() << "Point 1: Shutdown triggered"; qDebug() << "Point 1: Shutdown triggered";
QThread::currentThread()->sleep(2); QThread::sleep(2);
qDebug() << "Point 3: If Point 2 was already reached, expect a crash now"; qDebug() << "Point 3: If Point 2 was already reached, expect a crash now";
} }
} }

View File

@@ -48,6 +48,7 @@ add_qtc_library(Utils
fileinprojectfinder.cpp fileinprojectfinder.h fileinprojectfinder.cpp fileinprojectfinder.h
filenamevalidatinglineedit.cpp filenamevalidatinglineedit.h filenamevalidatinglineedit.cpp filenamevalidatinglineedit.h
filepath.cpp filepath.h filepath.cpp filepath.h
filepathinfo.h
filesearch.cpp filesearch.h filesearch.cpp filesearch.h
filesystemmodel.cpp filesystemmodel.h filesystemmodel.cpp filesystemmodel.h
filesystemwatcher.cpp filesystemwatcher.h filesystemwatcher.cpp filesystemwatcher.h
@@ -264,6 +265,7 @@ extend_qtc_library(Utils
fsengine/fixedlistfsengine.h fsengine/fixedlistfsengine.h
fsengine/fsenginehandler.cpp fsengine/fsenginehandler.cpp
fsengine/fsenginehandler.h fsengine/fsenginehandler.h
fsengine/filepathinfocache.h
) )
if (WIN32) if (WIN32)

View File

@@ -513,8 +513,7 @@ FilePaths FilePath::dirEntries(QDir::Filters filters) const
// either of the specified \a nameFilters. // either of the specified \a nameFilters.
// An empty \nameFilters list matches every name. // An empty \nameFilters list matches every name.
void FilePath::iterateDirectory(const std::function<bool(const FilePath &item)> &callBack, void FilePath::iterateDirectory(const IterateDirCallback &callBack, const FileFilter &filter) const
const FileFilter &filter) const
{ {
if (needsDevice()) { if (needsDevice()) {
QTC_ASSERT(s_deviceHooks.iterateDirectory, return); QTC_ASSERT(s_deviceHooks.iterateDirectory, return);
@@ -529,8 +528,25 @@ void FilePath::iterateDirectory(const std::function<bool(const FilePath &item)>
} }
} }
void FilePath::iterateDirectory(const IterateDirWithInfoCallback &callBack,
const FileFilter &filter) const
{
if (needsDevice()) {
QTC_ASSERT(s_deviceHooks.iterateDirectoryWithInfo, return);
s_deviceHooks.iterateDirectoryWithInfo(*this, callBack, filter);
return;
}
QDirIterator it(path(), filter.nameFilters, filter.fileFilters, filter.iteratorFlags);
while (it.hasNext()) {
const FilePath path = FilePath::fromString(it.next());
if (!callBack(path, path.filePathInfo()))
return;
}
}
void FilePath::iterateDirectories(const FilePaths &dirs, void FilePath::iterateDirectories(const FilePaths &dirs,
const std::function<bool(const FilePath &)> &callBack, const IterateDirCallback &callBack,
const FileFilter &filter) const FileFilter &filter)
{ {
for (const FilePath &dir : dirs) for (const FilePath &dir : dirs)
@@ -586,28 +602,64 @@ void FilePath::asyncFileContents(const Continuation<const std::optional<QByteArr
cont(fileContents(maxSize, offset)); cont(fileContents(maxSize, offset));
} }
bool FilePath::writeFileContents(const QByteArray &data) const bool FilePath::writeFileContents(const QByteArray &data, qint64 offset) const
{ {
if (needsDevice()) { if (needsDevice()) {
QTC_ASSERT(s_deviceHooks.writeFileContents, return {}); QTC_ASSERT(s_deviceHooks.writeFileContents, return {});
return s_deviceHooks.writeFileContents(*this, data); return s_deviceHooks.writeFileContents(*this, data, offset);
} }
QFile file(path()); QFile file(path());
QTC_ASSERT(file.open(QFile::WriteOnly | QFile::Truncate), return false); QTC_ASSERT(file.open(QFile::WriteOnly | QFile::Truncate), return false);
if (offset != 0)
file.seek(offset);
qint64 res = file.write(data); qint64 res = file.write(data);
return res == data.size(); return res == data.size();
} }
void FilePath::asyncWriteFileContents(const Continuation<bool> &cont, const QByteArray &data) const FilePathInfo FilePath::filePathInfo() const
{
if (needsDevice()) {
QTC_ASSERT(s_deviceHooks.filePathInfo, return {});
return s_deviceHooks.filePathInfo(*this);
}
FilePathInfo result;
QFileInfo fi(path());
result.fileSize = fi.size();
result.lastModified = fi.lastModified();
result.fileFlags = (FilePathInfo::FileFlag) fi.permissions().toInt();
if (fi.isDir())
result.fileFlags |= FilePathInfo::DirectoryType;
if (fi.isFile())
result.fileFlags |= FilePathInfo::FileType;
if (fi.exists())
result.fileFlags |= FilePathInfo::ExistsFlag;
if (fi.isSymbolicLink())
result.fileFlags |= FilePathInfo::LinkType;
if (fi.isBundle())
result.fileFlags |= FilePathInfo::BundleType;
if (fi.isHidden())
result.fileFlags |= FilePathInfo::HiddenFlag;
if (fi.isRoot())
result.fileFlags |= FilePathInfo::RootFlag;
return result;
}
void FilePath::asyncWriteFileContents(const Continuation<bool> &cont,
const QByteArray &data,
qint64 offset) const
{ {
if (needsDevice()) { if (needsDevice()) {
QTC_ASSERT(s_deviceHooks.asyncWriteFileContents, return); QTC_ASSERT(s_deviceHooks.asyncWriteFileContents, return);
s_deviceHooks.asyncWriteFileContents(cont, *this, data); s_deviceHooks.asyncWriteFileContents(cont, *this, data, offset);
return; return;
} }
cont(writeFileContents(data)); cont(writeFileContents(data, offset));
} }
bool FilePath::needsDevice() const bool FilePath::needsDevice() const
@@ -733,9 +785,9 @@ FilePath FilePath::absolutePath() const
FilePath FilePath::absoluteFilePath() const FilePath FilePath::absoluteFilePath() const
{ {
if (isAbsolutePath()) if (isAbsolutePath())
return *this; return cleanPath();
if (!needsDevice() && isEmpty()) if (!needsDevice() && isEmpty())
return *this; return cleanPath();
return FilePath::currentWorkingPath().resolvePath(*this); return FilePath::currentWorkingPath().resolvePath(*this);
} }
@@ -1830,17 +1882,18 @@ FileFilter::FileFilter(const QStringList &nameFilters,
{ {
} }
QStringList FileFilter::asFindArguments() const QStringList FileFilter::asFindArguments(const QString &path) const
{ {
QStringList arguments; QStringList arguments;
const QDir::Filters filters = fileFilters; const QDir::Filters filters = fileFilters;
if (filters & QDir::NoSymLinks)
arguments.prepend("-H");
else
arguments.prepend("-L");
arguments.append({"-mindepth", "1"}); if (iteratorFlags.testFlag(QDirIterator::FollowSymlinks))
arguments << "-L";
else
arguments << "-H";
arguments << path;
if (!iteratorFlags.testFlag(QDirIterator::Subdirectories)) if (!iteratorFlags.testFlag(QDirIterator::Subdirectories))
arguments.append({"-maxdepth", "1"}); arguments.append({"-maxdepth", "1"});
@@ -1850,14 +1903,23 @@ QStringList FileFilter::asFindArguments() const
if (!(filters & QDir::Hidden)) if (!(filters & QDir::Hidden))
filterOptions << "!" << "-name" << ".*"; filterOptions << "!" << "-name" << ".*";
QStringList typesToList;
QStringList filterFilesAndDirs; QStringList filterFilesAndDirs;
if (filters & QDir::Dirs) if (filters.testFlag(QDir::Dirs))
filterFilesAndDirs << "-type" << "d"; filterFilesAndDirs << "-type" << "d";
if (filters & QDir::Files) { if (filters.testFlag(QDir::Files)) {
if (!filterFilesAndDirs.isEmpty()) if (!filterFilesAndDirs.isEmpty())
filterFilesAndDirs << "-o"; filterFilesAndDirs << "-o";
filterFilesAndDirs << "-type" << "f"; filterFilesAndDirs << "-type" << "f";
} }
if (!filters.testFlag(QDir::NoSymLinks)) {
if (!filterFilesAndDirs.isEmpty())
filterFilesAndDirs << "-o";
filterFilesAndDirs << "-type" << "l";
}
if (!filterFilesAndDirs.isEmpty()) if (!filterFilesAndDirs.isEmpty())
filterOptions << "(" << filterFilesAndDirs << ")"; filterOptions << "(" << filterFilesAndDirs << ")";

View File

@@ -5,6 +5,7 @@
#include "utils_global.h" #include "utils_global.h"
#include "filepathinfo.h"
#include "osspecificaspects.h" #include "osspecificaspects.h"
#include <QDir> #include <QDir>
@@ -36,7 +37,7 @@ public:
const QDir::Filters fileFilters = QDir::NoFilter, const QDir::Filters fileFilters = QDir::NoFilter,
const QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags); const QDirIterator::IteratorFlags flags = QDirIterator::NoIteratorFlags);
QStringList asFindArguments() const; QStringList asFindArguments(const QString &path) const;
const QStringList nameFilters; const QStringList nameFilters;
const QDir::Filters fileFilters = QDir::NoFilter; const QDir::Filters fileFilters = QDir::NoFilter;
@@ -118,7 +119,8 @@ public:
FilePaths dirEntries(const FileFilter &filter, QDir::SortFlags sort = QDir::NoSort) const; FilePaths dirEntries(const FileFilter &filter, QDir::SortFlags sort = QDir::NoSort) const;
FilePaths dirEntries(QDir::Filters filters) const; FilePaths dirEntries(QDir::Filters filters) const;
std::optional<QByteArray> fileContents(qint64 maxSize = -1, qint64 offset = 0) const; std::optional<QByteArray> fileContents(qint64 maxSize = -1, qint64 offset = 0) const;
bool writeFileContents(const QByteArray &data) const; bool writeFileContents(const QByteArray &data, qint64 offset = 0) const;
FilePathInfo filePathInfo() const;
bool operator==(const FilePath &other) const; bool operator==(const FilePath &other) const;
bool operator!=(const FilePath &other) const; bool operator!=(const FilePath &other) const;
@@ -151,10 +153,17 @@ public:
[[nodiscard]] Environment deviceEnvironment() const; [[nodiscard]] Environment deviceEnvironment() const;
[[nodiscard]] FilePath onDevice(const FilePath &deviceTemplate) const; [[nodiscard]] FilePath onDevice(const FilePath &deviceTemplate) const;
[[nodiscard]] FilePath withNewPath(const QString &newPath) const; [[nodiscard]] FilePath withNewPath(const QString &newPath) const;
void iterateDirectory(const std::function<bool(const FilePath &item)> &callBack,
using IterateDirCallback = std::function<bool(const FilePath &item)>;
using IterateDirWithInfoCallback
= std::function<bool(const FilePath &item, const FilePathInfo &info)>;
void iterateDirectory(const IterateDirCallback &callBack, const FileFilter &filter) const;
void iterateDirectory(const IterateDirWithInfoCallback &callBack,
const FileFilter &filter) const; const FileFilter &filter) const;
static void iterateDirectories(const FilePaths &dirs, static void iterateDirectories(const FilePaths &dirs,
const std::function<bool(const FilePath &item)> &callBack, const IterateDirCallback &callBack,
const FileFilter &filter); const FileFilter &filter);
enum PathAmending { AppendToPath, PrependToPath }; enum PathAmending { AppendToPath, PrependToPath };
@@ -180,7 +189,9 @@ public:
void asyncFileContents(const Continuation<const std::optional<QByteArray> &> &cont, void asyncFileContents(const Continuation<const std::optional<QByteArray> &> &cont,
qint64 maxSize = -1, qint64 maxSize = -1,
qint64 offset = 0) const; qint64 offset = 0) const;
void asyncWriteFileContents(const Continuation<bool> &cont, const QByteArray &data) const; void asyncWriteFileContents(const Continuation<bool> &cont,
const QByteArray &data,
qint64 offset = 0) const;
// Prefer not to use // Prefer not to use
// Using needsDevice() in "user" code is likely to result in code that // Using needsDevice() in "user" code is likely to result in code that
@@ -256,10 +267,15 @@ public:
std::function<FilePath(const FilePath &)> symLinkTarget; std::function<FilePath(const FilePath &)> symLinkTarget;
std::function<QString(const FilePath &)> mapToDevicePath; std::function<QString(const FilePath &)> mapToDevicePath;
std::function<void(const FilePath &, std::function<void(const FilePath &,
const std::function<bool(const FilePath &)> &, // Abort on 'false' return. const FilePath::IterateDirCallback &, // Abort on 'false' return.
const FileFilter &)> iterateDirectory; const FileFilter &)>
iterateDirectory;
std::function<void(const FilePath &,
const FilePath::IterateDirWithInfoCallback &, // Abort on 'false' return.
const FileFilter &)>
iterateDirectoryWithInfo;
std::function<std::optional<QByteArray>(const FilePath &, qint64, qint64)> fileContents; std::function<std::optional<QByteArray>(const FilePath &, qint64, qint64)> fileContents;
std::function<bool(const FilePath &, const QByteArray &)> writeFileContents; std::function<bool(const FilePath &, const QByteArray &, qint64)> writeFileContents;
std::function<QDateTime(const FilePath &)> lastModified; std::function<QDateTime(const FilePath &)> lastModified;
std::function<QFile::Permissions(const FilePath &)> permissions; std::function<QFile::Permissions(const FilePath &)> permissions;
std::function<bool(const FilePath &, QFile::Permissions)> setPermissions; std::function<bool(const FilePath &, QFile::Permissions)> setPermissions;
@@ -269,6 +285,7 @@ public:
std::function<qint64(const FilePath &)> bytesAvailable; std::function<qint64(const FilePath &)> bytesAvailable;
std::function<QString(const FilePath &)> deviceDisplayName; std::function<QString(const FilePath &)> deviceDisplayName;
std::function<bool(const FilePath &, const FilePath &)> isSameDevice; std::function<bool(const FilePath &, const FilePath &)> isSameDevice;
std::function<FilePathInfo(const FilePath &)> filePathInfo;
template <class ...Args> using Continuation = std::function<void(Args...)>; template <class ...Args> using Continuation = std::function<void(Args...)>;
@@ -276,7 +293,8 @@ public:
std::function<void( std::function<void(
const Continuation<const std::optional<QByteArray> &> &, const FilePath &, qint64, qint64)> const Continuation<const std::optional<QByteArray> &> &, const FilePath &, qint64, qint64)>
asyncFileContents; asyncFileContents;
std::function<void(const Continuation<bool> &, const FilePath &, const QByteArray &)> asyncWriteFileContents; std::function<void(const Continuation<bool> &, const FilePath &, const QByteArray &, qint64)>
asyncWriteFileContents;
std::function<bool(const FilePath &, const FilePath &)> ensureReachable; std::function<bool(const FilePath &, const FilePath &)> ensureReachable;
}; };

View File

@@ -0,0 +1,56 @@
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#pragma once
#include <QDateTime>
namespace Utils {
struct FilePathInfo
{
// Copy of QAbstractFileEngine::FileFlags so we don't need to include private headers.
enum FileFlag {
//perms (overlaps the QFile::Permission)
ReadOwnerPerm = 0x4000, // 0x100
WriteOwnerPerm = 0x2000, // 0x80
ExeOwnerPerm = 0x1000, // 0x40
ReadUserPerm = 0x0400,
WriteUserPerm = 0x0200,
ExeUserPerm = 0x0100,
ReadGroupPerm = 0x0040, // 0x20
WriteGroupPerm = 0x0020, // 0x10
ExeGroupPerm = 0x0010, // 0x8
ReadOtherPerm = 0x0004, // 0x4
WriteOtherPerm = 0x0002, // 0x2
ExeOtherPerm = 0x0001, // 0x1
//types
LinkType = 0x10000, // 0xa000
FileType = 0x20000, // 0x8000
DirectoryType = 0x40000, // 0x4000
BundleType = 0x80000,
//flags
HiddenFlag = 0x0100000,
LocalDiskFlag = 0x0200000, // 0x6000
ExistsFlag = 0x0400000,
RootFlag = 0x0800000,
Refresh = 0x1000000,
//masks
PermsMask = 0x0000FFFF,
TypesMask = 0x000F0000,
FlagsMask = 0x0FF00000,
FileInfoAll = FlagsMask | PermsMask | TypesMask
};
Q_DECLARE_FLAGS(FileFlags, FileFlag)
qint64 fileSize = 0;
FileFlags fileFlags;
QDateTime lastModified;
};
} // namespace Utils

View File

@@ -620,39 +620,162 @@ void FileUtils::iterateLsOutput(const FilePath &base,
} }
} }
FilePathInfo::FileFlags fileInfoFlagsfromStatRawModeHex(const QString &hexString)
{
bool ok = false;
uint mode = hexString.toUInt(&ok, 16);
QTC_ASSERT(ok, return {});
FilePathInfo::FileFlags result;
if (mode & 0x100) // S_IRUSR
result |= FilePathInfo::ReadOwnerPerm;
if (mode & 0x80) // S_IWUSR
result |= FilePathInfo::WriteOwnerPerm;
if (mode & 0x40) // S_IXUSR
result |= FilePathInfo::ExeOwnerPerm;
if (mode & 0x20) // S_IRGRP
result |= FilePathInfo::ReadGroupPerm;
if (mode & 0x10) // S_IWGRP
result |= FilePathInfo::WriteGroupPerm;
if (mode & 0x8) // S_IXGRP
result |= FilePathInfo::ExeGroupPerm;
if (mode & 0x4) // S_IROTH
result |= FilePathInfo::ReadOtherPerm;
if (mode & 0x2) // S_IWOTH
result |= FilePathInfo::WriteOtherPerm;
if (mode & 0x1) // S_IXOTH
result |= FilePathInfo::ExeOtherPerm;
if (mode & 0xa000) // S_IFLNK
result |= FilePathInfo::LinkType;
if (mode & 0x8000) // S_IFREG
result |= FilePathInfo::FileType;
if (mode & 0x4000) // S_IFDIR
result |= FilePathInfo::DirectoryType;
if (mode & 0x6000) // S_IFBLK
result |= FilePathInfo::LocalDiskFlag;
if (result != 0) // There is no Exist flag, but if anything was set before, it must exist.
result |= FilePathInfo::ExistsFlag;
return result;
}
FilePathInfo FileUtils::filePathInfoFromTriple(const QString &infos)
{
const QStringList parts = infos.split(' ', Qt::SkipEmptyParts);
if (parts.size() != 3)
return {};
FilePathInfo::FileFlags flags = fileInfoFlagsfromStatRawModeHex(parts[0]);
const QDateTime dt = QDateTime::fromSecsSinceEpoch(parts[1].toLongLong(), Qt::UTC);
qint64 size = parts[2].toLongLong();
return {size, flags, dt};
}
bool iterateWithFind(const FilePath &filePath,
const FileFilter &filter,
const std::function<RunResult(const CommandLine &)> &runInShell,
const std::function<bool(const QString &)> callBack,
const QString &extraArguments)
{
QTC_CHECK(filePath.isAbsolutePath());
const QStringList arguments = filter.asFindArguments(filePath.path());
CommandLine cmdLine{"find", arguments};
if (!extraArguments.isEmpty())
cmdLine.addArgs(extraArguments, CommandLine::Raw);
const RunResult result = runInShell(cmdLine);
const QString out = QString::fromUtf8(result.stdOut);
if (result.exitCode != 0) {
// Find returns non-zero exit code for any error it encounters, even if it finds some files.
if (!out.startsWith('"' + filePath.path())) {
if (!filePath.exists()) // File does not exist, so no files to find.
return true;
// If the output does not start with the path we are searching in, find has failed.
// Possibly due to unknown options.
return false;
}
}
QStringList entries = out.split("\n", Qt::SkipEmptyParts);
// Remove the first line, it is always the directory we are searching in.
// as long as we do not specify "mindepth > 0"
entries.pop_front();
for (const QString &entry : entries) {
if (!callBack(entry))
break;
}
return true;
}
// returns whether 'find' could be used. // returns whether 'find' could be used.
static bool iterateWithFind(const FilePath &filePath, static bool iterateWithFind(const FilePath &filePath,
const FileFilter &filter, const FileFilter &filter,
const std::function<RunResult(const CommandLine &)> &runInShell, const std::function<RunResult(const CommandLine &)> &runInShell,
const std::function<bool(const FilePath &)> &callBack) const FilePath::IterateDirCallback &callBack)
{ {
QTC_CHECK(filePath.isAbsolutePath()); const auto toFilePath = [&filePath, &callBack](const QString &entry){
QStringList arguments{filePath.path()}; return callBack(filePath.withNewPath(entry));
arguments << filter.asFindArguments(); };
const RunResult result = runInShell({"find", arguments}); return iterateWithFind(filePath, filter, runInShell, toFilePath, {});
if (!result.stdErr.isEmpty()) { }
// missing find, unknown option e.g. "find: unknown predicate `-L'\n"
// qDebug() << "find error: " << result.stdErr;
return false;
}
const QString out = QString::fromUtf8(result.stdOut); // returns whether 'find' could be used.
const QStringList entries = out.split("\n", Qt::SkipEmptyParts); static bool iterateWithFind(const FilePath &filePath,
for (const QString &entry : entries) { const FileFilter &filter,
const FilePath fp = FilePath::fromString(entry); const std::function<RunResult(const CommandLine &)> &runInShell,
// Call back returning 'false' indicates a request to abort iteration. const FilePath::IterateDirWithInfoCallback &callBack)
if (!callBack(fp.onDevice(filePath))) {
break; // TODO: Using stat -L will always return the link target, not the link itself.
} // We may wan't to add the information that it is a link at some point.
const QString infoArgs(R"(-exec echo -n \"{}\"" " \; -exec stat -L -c "%f %Y %s" "{}" \;)");
const auto toFilePathAndInfo = [&filePath, &callBack](const QString &entry) {
const QString fileName = entry.mid(1, entry.lastIndexOf('\"') - 1);
const QString infos = entry.mid(fileName.length() + 3);
const FilePathInfo fi = FileUtils::filePathInfoFromTriple(infos);
if (!fi.fileFlags)
return true; return true;
const FilePath fp = filePath.withNewPath(fileName);
return callBack(fp, fi);
};
return iterateWithFind(filePath, filter, runInShell, toFilePathAndInfo, infoArgs);
}
static void findUsingLs(const QString &current,
const FileFilter &filter,
const std::function<RunResult(const CommandLine &)> &runInShell,
QStringList *found)
{
const RunResult result = runInShell({"ls", {"-1", "-p", "--", current}});
const QStringList entries = QString::fromUtf8(result.stdOut).split('\n', Qt::SkipEmptyParts);
for (QString entry : entries) {
const QChar last = entry.back();
if (last == '/') {
entry.chop(1);
if (filter.iteratorFlags.testFlag(QDirIterator::Subdirectories))
findUsingLs(current + '/' + entry, filter, runInShell, found);
}
found->append(entry);
}
} }
void FileUtils::iterateUnixDirectory(const FilePath &filePath, void FileUtils::iterateUnixDirectory(const FilePath &filePath,
const FileFilter &filter, const FileFilter &filter,
bool *useFind, bool *useFind,
const std::function<RunResult (const CommandLine &)> &runInShell, const std::function<RunResult (const CommandLine &)> &runInShell,
const std::function<bool(const FilePath &)> &callBack) const FilePath::IterateDirCallback &callBack)
{ {
QTC_ASSERT(callBack, return); QTC_ASSERT(callBack, return);
@@ -665,12 +788,35 @@ void FileUtils::iterateUnixDirectory(const FilePath &filePath,
} }
// if we do not have find - use ls as fallback // if we do not have find - use ls as fallback
// FIXME: Recursion into subdirectories not implemented! QStringList entries;
const RunResult result = runInShell({"ls", {"-1", "-b", "--", filePath.path()}}); findUsingLs(filePath.path(), filter, runInShell, &entries);
const QStringList entries = QString::fromUtf8(result.stdOut).split('\n', Qt::SkipEmptyParts);
FileUtils::iterateLsOutput(filePath, entries, filter, callBack); FileUtils::iterateLsOutput(filePath, entries, filter, callBack);
} }
void FileUtils::iterateUnixDirectory(const FilePath &filePath,
const FileFilter &filter,
bool *useFind,
const std::function<RunResult(const CommandLine &)> &runInShell,
const FilePath::IterateDirWithInfoCallback &callBack)
{
QTC_ASSERT(callBack, return);
// We try to use 'find' first, because that can filter better directly.
// Unfortunately, it's not installed on all devices by default.
if (useFind && *useFind) {
if (iterateWithFind(filePath, filter, runInShell, callBack))
return;
*useFind = false; // remember the failure for the next time and use the 'ls' fallback below.
}
// if we do not have find - use ls as fallback
QStringList entries;
findUsingLs(filePath.path(), filter, runInShell, &entries);
FileUtils::iterateLsOutput(filePath, entries, filter, [&callBack](const FilePath & filePath){
return callBack(filePath, filePath.filePathInfo());
});
}
/*! /*!
Copies the directory specified by \a srcFilePath recursively to \a tgtFilePath. \a tgtFilePath will contain Copies the directory specified by \a srcFilePath recursively to \a tgtFilePath. \a tgtFilePath will contain
the target directory, which will be created. Example usage: the target directory, which will be created. Example usage:

View File

@@ -35,7 +35,7 @@ class CommandLine;
struct QTCREATOR_UTILS_EXPORT RunResult struct QTCREATOR_UTILS_EXPORT RunResult
{ {
int exitCode = 0; int exitCode = -1;
QByteArray stdOut; QByteArray stdOut;
QByteArray stdErr; QByteArray stdErr;
}; };
@@ -97,10 +97,19 @@ public:
const FileFilter &filter, const FileFilter &filter,
bool *useFind, bool *useFind,
const std::function<RunResult(const CommandLine &)> &runInShell, const std::function<RunResult(const CommandLine &)> &runInShell,
const std::function<bool(const FilePath &)> &callBack); const FilePath::IterateDirCallback &callBack);
static void iterateUnixDirectory(
const FilePath &base,
const FileFilter &filter,
bool *useFind,
const std::function<RunResult(const CommandLine &)> &runInShell,
const FilePath::IterateDirWithInfoCallback &callBack);
static qint64 bytesAvailableFromDFOutput(const QByteArray &dfOutput); static qint64 bytesAvailableFromDFOutput(const QByteArray &dfOutput);
static FilePathInfo filePathInfoFromTriple(const QString &infos);
#ifdef QT_WIDGETS_LIB #ifdef QT_WIDGETS_LIB
static void setDialogParentGetter(const std::function<QWidget *()> &getter); static void setDialogParentGetter(const std::function<QWidget *()> &getter);

View File

@@ -121,27 +121,22 @@ QIcon FileIconProviderImplementation::icon(IconType type) const
return QFileIconProvider::icon(type); return QFileIconProvider::icon(type);
} }
QIcon FileIconProviderImplementation::icon(const QFileInfo &fi) const
{
return icon(FilePath::fromString(fi.filePath()));
}
QString FileIconProviderImplementation::type(const QFileInfo &fi) const QString FileIconProviderImplementation::type(const QFileInfo &fi) const
{ {
const FilePath fPath = FilePath::fromString(fi.filePath()); const FilePath fPath = FilePath::fromString(fi.filePath());
if (fPath.needsDevice()) { if (fPath.needsDevice()) {
if (fPath.isDir()) { if (fi.isDir()) {
#ifdef Q_OS_WIN #ifdef Q_OS_WIN
return QGuiApplication::translate("QAbstractFileIconProvider", "File Folder", "Match Windows Explorer"); return QGuiApplication::translate("QAbstractFileIconProvider", "File Folder", "Match Windows Explorer");
#else #else
return QGuiApplication::translate("QAbstractFileIconProvider", "Folder", "All other platforms"); return QGuiApplication::translate("QAbstractFileIconProvider", "Folder", "All other platforms");
#endif #endif
} }
if (fPath.isExecutableFile()) { if (fi.isExecutable()) {
return "Program"; return "Program";
} }
return QFileIconProvider::type(fi); return "File";
} }
return QFileIconProvider::type(fi); return QFileIconProvider::type(fi);
} }
@@ -169,6 +164,55 @@ static const QIcon &dirIcon()
return icon; return icon;
} }
QIcon FileIconProviderImplementation::icon(const QFileInfo &fi) const
{
qCDebug(fileIconProvider) << "FileIconProvider::icon" << fi.absoluteFilePath();
const FilePath filePath = FilePath::fromString(fi.filePath());
if (filePath.isEmpty())
return unknownFileIcon();
// Check if its one of the virtual devices directories
if (filePath.path().startsWith(
FilePath::specialPath(FilePath::SpecialPathComponent::RootPath))) {
// If the filepath does not need a device, it is a virtual device directory
if (!filePath.needsDevice())
return dirIcon();
}
bool isDir = fi.isDir();
// Check for cached overlay icons by file suffix.
const QString filename = !isDir ? fi.fileName() : QString();
if (!filename.isEmpty()) {
const std::optional<QIcon> icon = getIcon(m_filenameCache, filename);
if (icon)
return *icon;
}
const QString suffix = !isDir ? fi.suffix() : QString();
if (!suffix.isEmpty()) {
const std::optional<QIcon> icon = getIcon(m_suffixCache, suffix);
if (icon)
return *icon;
}
if (filePath.needsDevice())
return isDir ? dirIcon() : unknownFileIcon();
// Get icon from OS (and cache it based on suffix!)
QIcon icon;
if (HostOsInfo::isWindowsHost() || HostOsInfo::isMacHost())
icon = QFileIconProvider::icon(filePath.toFileInfo());
else // File icons are unknown on linux systems.
icon = isDir ? QFileIconProvider::icon(filePath.toFileInfo()) : unknownFileIcon();
if (!isDir && !suffix.isEmpty())
m_suffixCache.insert(suffix, icon);
return icon;
}
QIcon FileIconProviderImplementation::icon(const FilePath &filePath) const QIcon FileIconProviderImplementation::icon(const FilePath &filePath) const
{ {
qCDebug(fileIconProvider) << "FileIconProvider::icon" << filePath.absoluteFilePath(); qCDebug(fileIconProvider) << "FileIconProvider::icon" << filePath.absoluteFilePath();

View File

@@ -0,0 +1,68 @@
// Copyright (C) 2022 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#pragma once
#include "../filepath.h"
#include <QCache>
#include <QMutex>
#include <QMutexLocker>
namespace Utils::Internal {
class FilePathInfoCache
{
public:
struct CachedData
{
FilePathInfo filePathInfo;
QDateTime timeout;
};
using RetrievalFunction = CachedData (*)(const FilePath &);
public:
FilePathInfoCache()
: m_cache(50000)
{}
CachedData cached(const FilePath &filePath, const RetrievalFunction &retrievalFunction)
{
QMutexLocker lk(&m_mutex);
CachedData *data = m_cache.object(filePath);
// If the cache entry is too old, don't use it ...
if (data && data->timeout < QDateTime::currentDateTime())
data = nullptr;
// If no data was found, retrieve it and store it in the cache ...
if (!data) {
data = new CachedData;
*data = retrievalFunction(filePath);
m_cache.insert(filePath, data);
}
// Return a copy of the data, so it cannot be deleted by the cache
return *data;
}
void cache(const FilePath &path, CachedData *data)
{
QMutexLocker lk(&m_mutex);
m_cache.insert(path, data);
}
void cache(const QList<QPair<FilePath, CachedData>> &fileDataList)
{
QMutexLocker lk(&m_mutex);
for (const auto &[path, data] : fileDataList)
m_cache.insert(path, new CachedData(data));
}
private:
QMutex m_mutex;
QCache<FilePath, CachedData> m_cache;
};
} // namespace Utils::Internal

View File

@@ -4,6 +4,7 @@
#include "fsengine_impl.h" #include "fsengine_impl.h"
#include "diriterator.h" #include "diriterator.h"
#include "filepathinfocache.h"
#include "../filepath.h" #include "../filepath.h"
#include "../qtcassert.h" #include "../qtcassert.h"
@@ -15,6 +16,15 @@ namespace Utils {
namespace Internal { namespace Internal {
FilePathInfoCache g_filePathInfoCache;
FilePathInfoCache::CachedData createCacheData(const FilePath &filePath) {
FilePathInfoCache::CachedData data;
data.filePathInfo = filePath.filePathInfo();
data.timeout = QDateTime::currentDateTime().addSecs(60);
return data;
};
FSEngineImpl::FSEngineImpl(FilePath filePath) FSEngineImpl::FSEngineImpl(FilePath filePath)
: m_filePath(std::move(filePath)) : m_filePath(std::move(filePath))
{} {}
@@ -30,6 +40,10 @@ bool FSEngineImpl::open(QIODeviceBase::OpenMode openMode, std::optional<QFile::P
bool FSEngineImpl::open(QIODevice::OpenMode openMode) bool FSEngineImpl::open(QIODevice::OpenMode openMode)
#endif #endif
{ {
const FilePathInfoCache::CachedData data = g_filePathInfoCache.cached(m_filePath,
createCacheData);
bool exists = (data.filePathInfo.fileFlags & QAbstractFileEngine::ExistsFlag);
ensureStorage(); ensureStorage();
QTC_ASSERT(m_tempStorage->open(), return false); QTC_ASSERT(m_tempStorage->open(), return false);
@@ -38,10 +52,10 @@ bool FSEngineImpl::open(QIODevice::OpenMode openMode)
bool write = openMode & QIODevice::WriteOnly; bool write = openMode & QIODevice::WriteOnly;
bool append = openMode & QIODevice::Append; bool append = openMode & QIODevice::Append;
if (!write && !m_filePath.exists()) if (!write && !exists)
return false; return false;
if (openMode & QIODevice::NewOnly && m_filePath.exists()) if (openMode & QIODevice::NewOnly && exists)
return false; return false;
if (read || append) { if (read || append) {
@@ -88,7 +102,7 @@ bool FSEngineImpl::syncToDisk()
qint64 FSEngineImpl::size() const qint64 FSEngineImpl::size() const
{ {
return m_filePath.fileSize(); return g_filePathInfoCache.cached(m_filePath, createCacheData).filePathInfo.fileSize;
} }
qint64 FSEngineImpl::pos() const qint64 FSEngineImpl::pos() const
@@ -175,8 +189,12 @@ QStringList FSEngineImpl::entryList(QDir::Filters filters, const QStringList &fi
{ {
QStringList result; QStringList result;
m_filePath.iterateDirectory( m_filePath.iterateDirectory(
[&result](const FilePath &p) { [&result](const FilePath &p, const FilePathInfo &fi) {
result.append(p.toFSPathString()); result.append(p.toFSPathString());
g_filePathInfoCache
.cache(p,
new FilePathInfoCache::CachedData{fi,
QDateTime::currentDateTime().addSecs(60)});
return true; return true;
}, },
{filterNames, filters}); {filterNames, filters});
@@ -185,22 +203,8 @@ QStringList FSEngineImpl::entryList(QDir::Filters filters, const QStringList &fi
QAbstractFileEngine::FileFlags FSEngineImpl::fileFlags(FileFlags type) const QAbstractFileEngine::FileFlags FSEngineImpl::fileFlags(FileFlags type) const
{ {
FileFlags result{0}; Q_UNUSED(type);
return {g_filePathInfoCache.cached(m_filePath, createCacheData).filePathInfo.fileFlags.toInt()};
if (type & FileInfoAll && m_filePath.exists()) {
result |= QAbstractFileEngine::ExistsFlag;
if (type & DirectoryType && m_filePath.isDir())
result |= QAbstractFileEngine::DirectoryType;
if (type & FileType && m_filePath.isFile())
result |= QAbstractFileEngine::FileType;
if (type & PermsMask) {
result |= FileFlags::fromInt(m_filePath.permissions().toInt());
}
}
return result;
} }
bool FSEngineImpl::setPermissions(uint /*perms*/) bool FSEngineImpl::setPermissions(uint /*perms*/)
@@ -265,7 +269,7 @@ bool FSEngineImpl::setFileTime(const QDateTime &newDate, FileTime time)
QDateTime FSEngineImpl::fileTime(FileTime time) const QDateTime FSEngineImpl::fileTime(FileTime time) const
{ {
Q_UNUSED(time) Q_UNUSED(time)
return m_filePath.lastModified(); return g_filePathInfoCache.cached(m_filePath, createCacheData).filePathInfo.lastModified;
} }
void FSEngineImpl::setFileName(const QString &file) void FSEngineImpl::setFileName(const QString &file)
@@ -289,8 +293,12 @@ QAbstractFileEngine::Iterator *FSEngineImpl::beginEntryList(QDir::Filters filter
{ {
FilePaths paths{m_filePath.pathAppended(".")}; FilePaths paths{m_filePath.pathAppended(".")};
m_filePath.iterateDirectory( m_filePath.iterateDirectory(
[&paths](const FilePath &p) { [&paths](const FilePath &p, const FilePathInfo &fi) {
paths.append(p); paths.append(p);
FilePathInfoCache::CachedData *data
= new FilePathInfoCache::CachedData{fi,
QDateTime::currentDateTime().addSecs(60)};
g_filePathInfoCache.cache(p, data);
return true; return true;
}, },
{filterNames, filters}); {filterNames, filters});

View File

@@ -2,7 +2,6 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "globalfilechangeblocker.h" #include "globalfilechangeblocker.h"
#include "qtcassert.h"
#include <QGuiApplication> #include <QGuiApplication>

View File

@@ -37,6 +37,21 @@ enum class EventLoopMode {
On // Avoid On // Avoid
}; };
enum class Channel {
Output,
Error
};
enum class TextChannelMode {
// Keep | Emit | Emit
// raw | text | content
// data | sig |
// -----+------+--------
Off, // yes | no | -
SingleLine, // no | yes | Single lines
MultiLine // yes | yes | All the available data
};
enum class ProcessResult { enum class ProcessResult {
// Finished successfully. Unless an ExitCodeInterpreter is set // Finished successfully. Unless an ExitCodeInterpreter is set
// this corresponds to a return code 0. // this corresponds to a return code 0.
@@ -53,6 +68,7 @@ enum class ProcessResult {
}; };
using ExitCodeInterpreter = std::function<ProcessResult(int /*exitCode*/)>; using ExitCodeInterpreter = std::function<ProcessResult(int /*exitCode*/)>;
using TextChannelCallback = std::function<void(const QString & /*text*/)>;
} // namespace Utils } // namespace Utils

View File

@@ -4,6 +4,7 @@
#include "processreaper.h" #include "processreaper.h"
#include "processutils.h" #include "processutils.h"
#include "qtcassert.h" #include "qtcassert.h"
#include "threadutils.h"
#include <QCoreApplication> #include <QCoreApplication>
#include <QDebug> #include <QDebug>
@@ -224,7 +225,7 @@ ProcessReaper::ProcessReaper()
ProcessReaper::~ProcessReaper() ProcessReaper::~ProcessReaper()
{ {
QTC_CHECK(QThread::currentThread() == qApp->thread()); QTC_CHECK(isMainThread());
QMutexLocker locker(&s_instanceMutex); QMutexLocker locker(&s_instanceMutex);
instance()->m_private->waitForFinished(); instance()->m_private->waitForFinished();
m_thread.quit(); m_thread.quit();

View File

@@ -12,6 +12,7 @@
#include "processreaper.h" #include "processreaper.h"
#include "processutils.h" #include "processutils.h"
#include "terminalprocess_p.h" #include "terminalprocess_p.h"
#include "threadutils.h"
#include <QCoreApplication> #include <QCoreApplication>
#include <QDebug> #include <QDebug>
@@ -62,25 +63,25 @@ public:
timer.start(); timer.start();
auto cleanup = qScopeGuard([this, &timer] { auto cleanup = qScopeGuard([this, &timer] {
const qint64 currentNsecs = timer.nsecsElapsed(); const qint64 currentNsecs = timer.nsecsElapsed();
const bool isMainThread = QThread::currentThread() == qApp->thread(); const bool mainThread = isMainThread();
const int hitThisAll = m_hitThisAll.fetch_add(1) + 1; const int hitThisAll = m_hitThisAll.fetch_add(1) + 1;
const int hitAllAll = m_hitAllAll.fetch_add(1) + 1; const int hitAllAll = m_hitAllAll.fetch_add(1) + 1;
const int hitThisMain = isMainThread const int hitThisMain = mainThread
? m_hitThisMain.fetch_add(1) + 1 ? m_hitThisMain.fetch_add(1) + 1
: m_hitThisMain.load(); : m_hitThisMain.load();
const int hitAllMain = isMainThread const int hitAllMain = mainThread
? m_hitAllMain.fetch_add(1) + 1 ? m_hitAllMain.fetch_add(1) + 1
: m_hitAllMain.load(); : m_hitAllMain.load();
const qint64 totalThisAll = toMs(m_totalThisAll.fetch_add(currentNsecs) + currentNsecs); const qint64 totalThisAll = toMs(m_totalThisAll.fetch_add(currentNsecs) + currentNsecs);
const qint64 totalAllAll = toMs(m_totalAllAll.fetch_add(currentNsecs) + currentNsecs); const qint64 totalAllAll = toMs(m_totalAllAll.fetch_add(currentNsecs) + currentNsecs);
const qint64 totalThisMain = toMs(isMainThread const qint64 totalThisMain = toMs(mainThread
? m_totalThisMain.fetch_add(currentNsecs) + currentNsecs ? m_totalThisMain.fetch_add(currentNsecs) + currentNsecs
: m_totalThisMain.load()); : m_totalThisMain.load());
const qint64 totalAllMain = toMs(isMainThread const qint64 totalAllMain = toMs(mainThread
? m_totalAllMain.fetch_add(currentNsecs) + currentNsecs ? m_totalAllMain.fetch_add(currentNsecs) + currentNsecs
: m_totalAllMain.load()); : m_totalAllMain.load());
printMeasurement(QLatin1String(m_functionName), hitThisAll, toMs(currentNsecs), printMeasurement(QLatin1String(m_functionName), hitThisAll, toMs(currentNsecs),
totalThisAll, hitAllAll, totalAllAll, isMainThread, totalThisAll, hitAllAll, totalAllAll, mainThread,
hitThisMain, totalThisMain, hitAllMain, totalAllMain); hitThisMain, totalThisMain, hitAllMain, totalAllMain);
}); });
return std::invoke(std::forward<Function>(function), std::forward<Args>(args)...); return std::invoke(std::forward<Function>(function), std::forward<Args>(args)...);
@@ -187,6 +188,7 @@ public:
QTextCodec *codec = nullptr; // Not owner QTextCodec *codec = nullptr; // Not owner
std::unique_ptr<QTextCodec::ConverterState> codecState; std::unique_ptr<QTextCodec::ConverterState> codecState;
std::function<void(const QString &lines)> outputCallback; std::function<void(const QString &lines)> outputCallback;
TextChannelMode m_textChannelMode = TextChannelMode::Off;
bool emitSingleLines = true; bool emitSingleLines = true;
bool keepRawData = true; bool keepRawData = true;
@@ -1211,7 +1213,7 @@ void QtcProcess::setRemoteProcessHooks(const DeviceProcessHooks &hooks)
static bool askToKill(const QString &command) static bool askToKill(const QString &command)
{ {
#ifdef QT_GUI_LIB #ifdef QT_GUI_LIB
if (QThread::currentThread() != QCoreApplication::instance()->thread()) if (!isMainThread())
return true; return true;
const QString title = QtcProcess::tr("Process Not Responding"); const QString title = QtcProcess::tr("Process Not Responding");
QString msg = command.isEmpty() ? QString msg = command.isEmpty() ?
@@ -1294,11 +1296,6 @@ ProcessResult QtcProcess::result() const
return d->m_result; return d->m_result;
} }
void QtcProcess::setResult(const ProcessResult &result)
{
d->m_result = result;
}
ProcessResultData QtcProcess::resultData() const ProcessResultData QtcProcess::resultData() const
{ {
return d->m_resultData; return d->m_resultData;
@@ -1774,13 +1771,6 @@ void QtcProcess::setWriteData(const QByteArray &writeData)
d->m_setup.m_writeData = writeData; d->m_setup.m_writeData = writeData;
} }
#ifdef QT_GUI_LIB
static bool isGuiThread()
{
return QThread::currentThread() == QCoreApplication::instance()->thread();
}
#endif
void QtcProcess::runBlocking(EventLoopMode eventLoopMode) void QtcProcess::runBlocking(EventLoopMode eventLoopMode)
{ {
// Attach a dynamic property with info about blocking type // Attach a dynamic property with info about blocking type
@@ -1801,7 +1791,7 @@ void QtcProcess::runBlocking(EventLoopMode eventLoopMode)
timer.setInterval(1000); timer.setInterval(1000);
timer.start(); timer.start();
#ifdef QT_GUI_LIB #ifdef QT_GUI_LIB
if (isGuiThread()) if (isMainThread())
QApplication::setOverrideCursor(Qt::WaitCursor); QApplication::setOverrideCursor(Qt::WaitCursor);
#endif #endif
QEventLoop eventLoop(this); QEventLoop eventLoop(this);
@@ -1811,7 +1801,7 @@ void QtcProcess::runBlocking(EventLoopMode eventLoopMode)
d->m_eventLoop = nullptr; d->m_eventLoop = nullptr;
timer.stop(); timer.stop();
#ifdef QT_GUI_LIB #ifdef QT_GUI_LIB
if (isGuiThread()) if (isMainThread())
QApplication::restoreOverrideCursor(); QApplication::restoreOverrideCursor();
#endif #endif
} }
@@ -1831,32 +1821,74 @@ void QtcProcess::runBlocking(EventLoopMode eventLoopMode)
} }
} }
void QtcProcess::setStdOutCallback(const std::function<void (const QString &)> &callback) void QtcProcess::setStdOutCallback(const TextChannelCallback &callback)
{ {
d->m_stdOut.outputCallback = callback; d->m_stdOut.outputCallback = callback;
d->m_stdOut.emitSingleLines = false; d->m_stdOut.emitSingleLines = false;
} }
void QtcProcess::setStdOutLineCallback(const std::function<void (const QString &)> &callback) void QtcProcess::setStdOutLineCallback(const TextChannelCallback &callback)
{ {
d->m_stdOut.outputCallback = callback; d->m_stdOut.outputCallback = callback;
d->m_stdOut.emitSingleLines = true; d->m_stdOut.emitSingleLines = true;
d->m_stdOut.keepRawData = false; d->m_stdOut.keepRawData = false;
} }
void QtcProcess::setStdErrCallback(const std::function<void (const QString &)> &callback) void QtcProcess::setStdErrCallback(const TextChannelCallback &callback)
{ {
d->m_stdErr.outputCallback = callback; d->m_stdErr.outputCallback = callback;
d->m_stdErr.emitSingleLines = false; d->m_stdErr.emitSingleLines = false;
} }
void QtcProcess::setStdErrLineCallback(const std::function<void (const QString &)> &callback) void QtcProcess::setStdErrLineCallback(const TextChannelCallback &callback)
{ {
d->m_stdErr.outputCallback = callback; d->m_stdErr.outputCallback = callback;
d->m_stdErr.emitSingleLines = true; d->m_stdErr.emitSingleLines = true;
d->m_stdErr.keepRawData = false; d->m_stdErr.keepRawData = false;
} }
void QtcProcess::setTextChannelMode(Channel channel, TextChannelMode mode)
{
const TextChannelCallback outputCb = [this](const QString &text) {
GuardLocker locker(d->m_guard);
emit textOnStandardOutput(text);
};
const TextChannelCallback errorCb = [this](const QString &text) {
GuardLocker locker(d->m_guard);
emit textOnStandardError(text);
};
const TextChannelCallback callback = (channel == Channel::Output) ? outputCb : errorCb;
ChannelBuffer *buffer = channel == Channel::Output ? &d->m_stdOut : &d->m_stdErr;
QTC_ASSERT(buffer->m_textChannelMode == TextChannelMode::Off, qWarning()
<< "QtcProcess::setTextChannelMode(): Changing text channel mode for"
<< (channel == Channel::Output ? "Output": "Error")
<< "channel while it was previously set for this channel.");
buffer->m_textChannelMode = mode;
switch (mode) {
case TextChannelMode::Off:
buffer->outputCallback = {};
buffer->emitSingleLines = true;
buffer->keepRawData = true;
break;
case TextChannelMode::SingleLine:
buffer->outputCallback = callback;
buffer->emitSingleLines = true;
buffer->keepRawData = false;
break;
case TextChannelMode::MultiLine:
buffer->outputCallback = callback;
buffer->emitSingleLines = false;
buffer->keepRawData = true;
break;
}
}
TextChannelMode QtcProcess::textChannelMode(Channel channel) const
{
ChannelBuffer *buffer = channel == Channel::Output ? &d->m_stdOut : &d->m_stdErr;
return buffer->m_textChannelMode;
}
void QtcProcessPrivate::slotTimeout() void QtcProcessPrivate::slotTimeout()
{ {
if (!m_waitingForUser && (++m_hangTimerCount > m_maxHangTimerCount)) { if (!m_waitingForUser && (++m_hangTimerCount > m_maxHangTimerCount)) {

View File

@@ -148,15 +148,17 @@ public:
void setTimeOutMessageBoxEnabled(bool); void setTimeOutMessageBoxEnabled(bool);
void setExitCodeInterpreter(const ExitCodeInterpreter &interpreter); void setExitCodeInterpreter(const ExitCodeInterpreter &interpreter);
void setStdOutCallback(const std::function<void(const QString &)> &callback); void setStdOutCallback(const TextChannelCallback &callback);
void setStdOutLineCallback(const std::function<void(const QString &)> &callback); void setStdOutLineCallback(const TextChannelCallback &callback);
void setStdErrCallback(const std::function<void(const QString &)> &callback); void setStdErrCallback(const TextChannelCallback &callback);
void setStdErrLineCallback(const std::function<void(const QString &)> &callback); void setStdErrLineCallback(const TextChannelCallback &callback);
void setTextChannelMode(Channel channel, TextChannelMode mode);
TextChannelMode textChannelMode(Channel channel) const;
bool readDataFromProcess(QByteArray *stdOut, QByteArray *stdErr, int timeoutS = 30); bool readDataFromProcess(QByteArray *stdOut, QByteArray *stdErr, int timeoutS = 30);
ProcessResult result() const; ProcessResult result() const;
void setResult(const ProcessResult &result);
QByteArray allRawOutput() const; QByteArray allRawOutput() const;
QString allOutput() const; QString allOutput() const;
@@ -182,6 +184,8 @@ signals:
void done(); // On Starting | Running -> NotRunning state transition void done(); // On Starting | Running -> NotRunning state transition
void readyReadStandardOutput(); void readyReadStandardOutput();
void readyReadStandardError(); void readyReadStandardError();
void textOnStandardOutput(const QString &text);
void textOnStandardError(const QString &text);
private: private:
friend QTCREATOR_UTILS_EXPORT QDebug operator<<(QDebug str, const QtcProcess &r); friend QTCREATOR_UTILS_EXPORT QDebug operator<<(QDebug str, const QtcProcess &r);

View File

@@ -3,10 +3,9 @@
#include "qtcassert.h" #include "qtcassert.h"
#include "singleton.h" #include "singleton.h"
#include "threadutils.h"
#include <QCoreApplication>
#include <QList> #include <QList>
#include <QThread>
#include <unordered_map> #include <unordered_map>
@@ -45,7 +44,7 @@ SingletonStaticData &Singleton::staticData(std::type_index index)
// only. // only.
void Singleton::deleteAll() void Singleton::deleteAll()
{ {
QTC_ASSERT(QThread::currentThread() == qApp->thread(), return); QTC_ASSERT(isMainThread(), return);
QList<Singleton *> oldList; QList<Singleton *> oldList;
{ {
QMutexLocker locker(&s_mutex); QMutexLocker locker(&s_mutex);

View File

@@ -2,7 +2,9 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "baremetaldebugsupport.h" #include "baremetaldebugsupport.h"
#include "baremetaldevice.h" #include "baremetaldevice.h"
#include "baremetaltr.h"
#include "debugserverprovidermanager.h" #include "debugserverprovidermanager.h"
#include "idebugserverprovider.h" #include "idebugserverprovider.h"
@@ -27,24 +29,21 @@ using namespace Debugger;
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils; using namespace Utils;
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
// BareMetalDebugSupport
BareMetalDebugSupport::BareMetalDebugSupport(RunControl *runControl) BareMetalDebugSupport::BareMetalDebugSupport(RunControl *runControl)
: Debugger::DebuggerRunTool(runControl) : Debugger::DebuggerRunTool(runControl)
{ {
const auto dev = qSharedPointerCast<const BareMetalDevice>(device()); const auto dev = qSharedPointerCast<const BareMetalDevice>(device());
if (!dev) { if (!dev) {
reportFailure(tr("Cannot debug: Kit has no device.")); reportFailure(Tr::tr("Cannot debug: Kit has no device."));
return; return;
} }
const QString providerId = dev->debugServerProviderId(); const QString providerId = dev->debugServerProviderId();
IDebugServerProvider *p = DebugServerProviderManager::findProvider(providerId); IDebugServerProvider *p = DebugServerProviderManager::findProvider(providerId);
if (!p) { if (!p) {
reportFailure(tr("No debug server provider found for %1").arg(providerId)); reportFailure(Tr::tr("No debug server provider found for %1").arg(providerId));
return; return;
} }
@@ -67,5 +66,4 @@ void BareMetalDebugSupport::start()
DebuggerRunTool::start(); DebuggerRunTool::start();
} }
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -5,21 +5,10 @@
#include <debugger/debuggerruncontrol.h> #include <debugger/debuggerruncontrol.h>
namespace ProjectExplorer { namespace BareMetal::Internal {
class RunControl;
}
namespace BareMetal {
namespace Internal {
class IDebugServerProvider;
// BareMetalDebugSupport
class BareMetalDebugSupport final : public Debugger::DebuggerRunTool class BareMetalDebugSupport final : public Debugger::DebuggerRunTool
{ {
Q_OBJECT
public: public:
explicit BareMetalDebugSupport(ProjectExplorer::RunControl *runControl); explicit BareMetalDebugSupport(ProjectExplorer::RunControl *runControl);
@@ -27,5 +16,4 @@ private:
void start() final; void start() final;
}; };
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -2,10 +2,12 @@
// Copyright (C) 2016 Denis Shienkov <denis.shienkov@gmail.com> // Copyright (C) 2016 Denis Shienkov <denis.shienkov@gmail.com>
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "baremetalconstants.h"
#include "baremetaldevice.h" #include "baremetaldevice.h"
#include "baremetalconstants.h"
#include "baremetaldeviceconfigurationwidget.h" #include "baremetaldeviceconfigurationwidget.h"
#include "baremetaldeviceconfigurationwizard.h" #include "baremetaldeviceconfigurationwizard.h"
#include "baremetaltr.h"
#include "debugserverprovidermanager.h" #include "debugserverprovidermanager.h"
#include "idebugserverprovider.h" #include "idebugserverprovider.h"
@@ -13,8 +15,7 @@
using namespace ProjectExplorer; using namespace ProjectExplorer;
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
const char debugServerProviderIdKeyC[] = "IDebugServerProviderId"; const char debugServerProviderIdKeyC[] = "IDebugServerProviderId";
@@ -22,7 +23,7 @@ const char debugServerProviderIdKeyC[] = "IDebugServerProviderId";
BareMetalDevice::BareMetalDevice() BareMetalDevice::BareMetalDevice()
{ {
setDisplayType(tr("Bare Metal")); setDisplayType(Tr::tr("Bare Metal"));
setDefaultDisplayName(defaultDisplayName()); setDefaultDisplayName(defaultDisplayName());
setOsType(Utils::OsTypeOther); setOsType(Utils::OsTypeOther);
} }
@@ -36,7 +37,7 @@ BareMetalDevice::~BareMetalDevice()
QString BareMetalDevice::defaultDisplayName() QString BareMetalDevice::defaultDisplayName()
{ {
return tr("Bare Metal Device"); return Tr::tr("Bare Metal Device");
} }
QString BareMetalDevice::debugServerProviderId() const QString BareMetalDevice::debugServerProviderId() const
@@ -100,7 +101,7 @@ IDeviceWidget *BareMetalDevice::createWidget()
BareMetalDeviceFactory::BareMetalDeviceFactory() BareMetalDeviceFactory::BareMetalDeviceFactory()
: IDeviceFactory(Constants::BareMetalOsType) : IDeviceFactory(Constants::BareMetalOsType)
{ {
setDisplayName(BareMetalDevice::tr("Bare Metal Device")); setDisplayName(Tr::tr("Bare Metal Device"));
setCombinedIcon(":/baremetal/images/baremetaldevicesmall.png", setCombinedIcon(":/baremetal/images/baremetaldevicesmall.png",
":/baremetal/images/baremetaldevice.png"); ":/baremetal/images/baremetaldevice.png");
setConstructionFunction(&BareMetalDevice::create); setConstructionFunction(&BareMetalDevice::create);
@@ -112,5 +113,4 @@ BareMetalDeviceFactory::BareMetalDeviceFactory()
}); });
} }
} //namespace Internal } // BareMetal::Internal
} //namespace BareMetal

View File

@@ -7,8 +7,7 @@
#include <projectexplorer/devicesupport/idevice.h> #include <projectexplorer/devicesupport/idevice.h>
#include <projectexplorer/devicesupport/idevicefactory.h> #include <projectexplorer/devicesupport/idevicefactory.h>
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
class IDebugServerProvider; class IDebugServerProvider;
@@ -16,8 +15,6 @@ class IDebugServerProvider;
class BareMetalDevice final : public ProjectExplorer::IDevice class BareMetalDevice final : public ProjectExplorer::IDevice
{ {
Q_DECLARE_TR_FUNCTIONS(BareMetal::Internal::BareMetalDevice)
public: public:
using Ptr = QSharedPointer<BareMetalDevice>; using Ptr = QSharedPointer<BareMetalDevice>;
using ConstPtr = QSharedPointer<const BareMetalDevice>; using ConstPtr = QSharedPointer<const BareMetalDevice>;
@@ -52,5 +49,4 @@ public:
BareMetalDeviceFactory(); BareMetalDeviceFactory();
}; };
} //namespace Internal } // BareMetal::Internal
} //namespace BareMetal

View File

@@ -3,8 +3,9 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "baremetaldevice.h" #include "baremetaldevice.h"
#include "baremetaldeviceconfigurationwidget.h"
#include "baremetaldeviceconfigurationwidget.h"
#include "baremetaltr.h"
#include "debugserverproviderchooser.h" #include "debugserverproviderchooser.h"
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
@@ -12,10 +13,7 @@
#include <QFormLayout> #include <QFormLayout>
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
// BareMetalDeviceConfigurationWidget
BareMetalDeviceConfigurationWidget::BareMetalDeviceConfigurationWidget( BareMetalDeviceConfigurationWidget::BareMetalDeviceConfigurationWidget(
const ProjectExplorer::IDevice::Ptr &deviceConfig) const ProjectExplorer::IDevice::Ptr &deviceConfig)
@@ -30,7 +28,7 @@ BareMetalDeviceConfigurationWidget::BareMetalDeviceConfigurationWidget(
m_debugServerProviderChooser = new DebugServerProviderChooser(true, this); m_debugServerProviderChooser = new DebugServerProviderChooser(true, this);
m_debugServerProviderChooser->populate(); m_debugServerProviderChooser->populate();
m_debugServerProviderChooser->setCurrentProviderId(dev->debugServerProviderId()); m_debugServerProviderChooser->setCurrentProviderId(dev->debugServerProviderId());
formLayout->addRow(tr("Debug server provider:"), m_debugServerProviderChooser); formLayout->addRow(Tr::tr("Debug server provider:"), m_debugServerProviderChooser);
connect(m_debugServerProviderChooser, &DebugServerProviderChooser::providerChanged, connect(m_debugServerProviderChooser, &DebugServerProviderChooser::providerChanged,
this, &BareMetalDeviceConfigurationWidget::debugServerProviderChanged); this, &BareMetalDeviceConfigurationWidget::debugServerProviderChanged);
@@ -48,5 +46,4 @@ void BareMetalDeviceConfigurationWidget::updateDeviceFromUi()
debugServerProviderChanged(); debugServerProviderChanged();
} }
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -6,18 +6,13 @@
#include <projectexplorer/devicesupport/idevicewidget.h> #include <projectexplorer/devicesupport/idevicewidget.h>
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
class DebugServerProviderChooser; class DebugServerProviderChooser;
// BareMetalDeviceConfigurationWidget
class BareMetalDeviceConfigurationWidget final class BareMetalDeviceConfigurationWidget final
: public ProjectExplorer::IDeviceWidget : public ProjectExplorer::IDeviceWidget
{ {
Q_OBJECT
public: public:
explicit BareMetalDeviceConfigurationWidget(const ProjectExplorer::IDevicePtr &deviceConfig); explicit BareMetalDeviceConfigurationWidget(const ProjectExplorer::IDevicePtr &deviceConfig);
@@ -28,5 +23,4 @@ private:
DebugServerProviderChooser *m_debugServerProviderChooser = nullptr; DebugServerProviderChooser *m_debugServerProviderChooser = nullptr;
}; };
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -2,25 +2,22 @@
// Copyright (C) 2016 Denis Shienkov <denis.shienkov@gmail.com> // Copyright (C) 2016 Denis Shienkov <denis.shienkov@gmail.com>
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "baremetaldeviceconfigurationwizard.h"
#include "baremetalconstants.h" #include "baremetalconstants.h"
#include "baremetaldevice.h" #include "baremetaldevice.h"
#include "baremetaldeviceconfigurationwizard.h"
#include "baremetaldeviceconfigurationwizardpages.h" #include "baremetaldeviceconfigurationwizardpages.h"
#include "baremetaltr.h"
#include <utils/fileutils.h> namespace BareMetal::Internal {
namespace BareMetal {
namespace Internal {
enum PageId { SetupPageId }; enum PageId { SetupPageId };
// BareMetalDeviceConfigurationWizard
BareMetalDeviceConfigurationWizard::BareMetalDeviceConfigurationWizard(QWidget *parent) : BareMetalDeviceConfigurationWizard::BareMetalDeviceConfigurationWizard(QWidget *parent) :
Utils::Wizard(parent), Utils::Wizard(parent),
m_setupPage(new BareMetalDeviceConfigurationWizardSetupPage(this)) m_setupPage(new BareMetalDeviceConfigurationWizardSetupPage(this))
{ {
setWindowTitle(tr("New Bare Metal Device Configuration Setup")); setWindowTitle(Tr::tr("New Bare Metal Device Configuration Setup"));
setPage(SetupPageId, m_setupPage); setPage(SetupPageId, m_setupPage);
m_setupPage->setCommitPage(true); m_setupPage->setCommitPage(true);
} }
@@ -36,5 +33,4 @@ ProjectExplorer::IDevice::Ptr BareMetalDeviceConfigurationWizard::device() const
return dev; return dev;
} }
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -6,17 +6,12 @@
#include <projectexplorer/devicesupport/idevicefwd.h> #include <projectexplorer/devicesupport/idevicefwd.h>
#include <utils/wizard.h> #include <utils/wizard.h>
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
class BareMetalDeviceConfigurationWizardSetupPage; class BareMetalDeviceConfigurationWizardSetupPage;
// BareMetalDeviceConfigurationWizard
class BareMetalDeviceConfigurationWizard final : public Utils::Wizard class BareMetalDeviceConfigurationWizard final : public Utils::Wizard
{ {
Q_OBJECT
public: public:
explicit BareMetalDeviceConfigurationWizard(QWidget *parent = nullptr); explicit BareMetalDeviceConfigurationWizard(QWidget *parent = nullptr);
@@ -26,5 +21,4 @@ private:
BareMetalDeviceConfigurationWizardSetupPage *m_setupPage = nullptr; BareMetalDeviceConfigurationWizardSetupPage *m_setupPage = nullptr;
}; };
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -2,9 +2,10 @@
// Copyright (C) 2016 Denis Shienkov <denis.shienkov@gmail.com> // Copyright (C) 2016 Denis Shienkov <denis.shienkov@gmail.com>
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "baremetaldevice.h"
#include "baremetaldeviceconfigurationwizardpages.h" #include "baremetaldeviceconfigurationwizardpages.h"
#include "baremetaldevice.h"
#include "baremetaltr.h"
#include "debugserverproviderchooser.h" #include "debugserverproviderchooser.h"
#include <utils/variablechooser.h> #include <utils/variablechooser.h>
@@ -14,24 +15,21 @@
#include <QFormLayout> #include <QFormLayout>
#include <QLineEdit> #include <QLineEdit>
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
// BareMetalDeviceConfigurationWizardSetupPage
BareMetalDeviceConfigurationWizardSetupPage::BareMetalDeviceConfigurationWizardSetupPage( BareMetalDeviceConfigurationWizardSetupPage::BareMetalDeviceConfigurationWizardSetupPage(
QWidget *parent) QWidget *parent)
: QWizardPage(parent) : QWizardPage(parent)
{ {
setTitle(tr("Set up Debug Server or Hardware Debugger")); setTitle(Tr::tr("Set up Debug Server or Hardware Debugger"));
const auto formLayout = new QFormLayout(this); const auto formLayout = new QFormLayout(this);
formLayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); formLayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow);
m_nameLineEdit = new QLineEdit(this); m_nameLineEdit = new QLineEdit(this);
formLayout->addRow(tr("Name:"), m_nameLineEdit); formLayout->addRow(Tr::tr("Name:"), m_nameLineEdit);
m_debugServerProviderChooser = new DebugServerProviderChooser(false, this); m_debugServerProviderChooser = new DebugServerProviderChooser(false, this);
m_debugServerProviderChooser->populate(); m_debugServerProviderChooser->populate();
formLayout->addRow(tr("Debug server provider:"), m_debugServerProviderChooser); formLayout->addRow(Tr::tr("Debug server provider:"), m_debugServerProviderChooser);
connect(m_nameLineEdit, &QLineEdit::textChanged, connect(m_nameLineEdit, &QLineEdit::textChanged,
this, &BareMetalDeviceConfigurationWizardSetupPage::completeChanged); this, &BareMetalDeviceConfigurationWizardSetupPage::completeChanged);
@@ -59,5 +57,4 @@ QString BareMetalDeviceConfigurationWizardSetupPage::debugServerProviderId() con
return m_debugServerProviderChooser->currentProviderId(); return m_debugServerProviderChooser->currentProviderId();
} }
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -10,17 +10,12 @@ QT_BEGIN_NAMESPACE
class QLineEdit; class QLineEdit;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
class DebugServerProviderChooser; class DebugServerProviderChooser;
// BareMetalDeviceConfigurationWizardSetupPage
class BareMetalDeviceConfigurationWizardSetupPage final : public QWizardPage class BareMetalDeviceConfigurationWizardSetupPage final : public QWizardPage
{ {
Q_OBJECT
public: public:
explicit BareMetalDeviceConfigurationWizardSetupPage(QWidget *parent = nullptr); explicit BareMetalDeviceConfigurationWizardSetupPage(QWidget *parent = nullptr);
@@ -34,5 +29,4 @@ private:
DebugServerProviderChooser *m_debugServerProviderChooser = nullptr; DebugServerProviderChooser *m_debugServerProviderChooser = nullptr;
}; };
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -1,104 +0,0 @@
// Copyright (C) 2016 Tim Sander <tim@krieglstein.org>
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "baremetalgdbcommandsdeploystep.h"
#include <QFormLayout>
using namespace ProjectExplorer;
namespace BareMetal {
namespace Internal {
const char GdbCommandsKey[] = "BareMetal.GdbCommandsStep.Commands";
// BareMetalGdbCommandsDeployStepWidget
BareMetalGdbCommandsDeployStepWidget::BareMetalGdbCommandsDeployStepWidget(BareMetalGdbCommandsDeployStep &step)
: BuildStepConfigWidget(&step), m_step(step)
{
const auto fl = new QFormLayout(this);
fl->setContentsMargins(0, 0, 0, 0);
fl->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow);
setLayout(fl);
m_commands = new QPlainTextEdit(this);
fl->addRow(tr("GDB commands:"), m_commands);
m_commands->setPlainText(m_step.gdbCommands());
connect(m_commands, &QPlainTextEdit::textChanged, this, &BareMetalGdbCommandsDeployStepWidget::update);
}
void BareMetalGdbCommandsDeployStepWidget::update()
{
m_step.updateGdbCommands(m_commands->toPlainText());
}
QString BareMetalGdbCommandsDeployStepWidget::displayName() const
{
return QLatin1String("<b>") + m_step.displayName() + QLatin1String("</b>");
}
QString BareMetalGdbCommandsDeployStepWidget::summaryText() const
{
return displayName();
}
// BareMetalGdbCommandsDeployStep
BareMetalGdbCommandsDeployStep::BareMetalGdbCommandsDeployStep(BuildStepList *bsl)
: BuildStep(bsl, stepId())
{
setDefaultDisplayName(displayName());
}
void BareMetalGdbCommandsDeployStep::doRun()
{
emit finished(true);
}
bool BareMetalGdbCommandsDeployStep::fromMap(const QVariantMap &map)
{
if (!BuildStep::fromMap(map))
return false;
m_gdbCommands = map.value(QLatin1String(GdbCommandsKey)).toString();
return true;
}
QVariantMap BareMetalGdbCommandsDeployStep::toMap() const
{
QVariantMap map = BuildStep::toMap();
map.insert(QLatin1String(GdbCommandsKey),m_gdbCommands);
return map;
}
BuildStepConfigWidget *BareMetalGdbCommandsDeployStep::createConfigWidget()
{
return new BareMetalGdbCommandsDeployStepWidget(*this);
}
Core::Id BareMetalGdbCommandsDeployStep::stepId()
{
return Core::Id("BareMetal.GdbCommandsDeployStep");
}
QString BareMetalGdbCommandsDeployStep::displayName()
{
return tr("GDB commands");
}
void BareMetalGdbCommandsDeployStep::updateGdbCommands(const QString &newCommands)
{
m_gdbCommands = newCommands;
}
QString BareMetalGdbCommandsDeployStep::gdbCommands() const
{
return m_gdbCommands;
}
bool BareMetalGdbCommandsDeployStep::init()
{
return true;
}
} // namespace Internal
} // namespace BareMetal

View File

@@ -1,61 +0,0 @@
// Copyright (C) 2016 Tim Sander <tim@krieglstein.org>
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#pragma once
#include <projectexplorer/buildstep.h>
#include <QPlainTextEdit>
#include <QVariantMap>
namespace BareMetal {
namespace Internal {
// BareMetalGdbCommandsDeployStep
class BareMetalGdbCommandsDeployStep final : public ProjectExplorer::BuildStep
{
Q_OBJECT
public:
explicit BareMetalGdbCommandsDeployStep(ProjectExplorer::BuildStepList *bsl);
bool fromMap(const QVariantMap &map) final;
QVariantMap toMap() const final;
ProjectExplorer::BuildStepConfigWidget *createConfigWidget() final;
static Core::Id stepId();
static QString displayName();
void updateGdbCommands(const QString &newCommands);
QString gdbCommands() const;
private:
bool init() final;
void doRun() final;
QString m_gdbCommands;
};
// BareMetalGdbCommandsDeployStepWidget
class BareMetalGdbCommandsDeployStepWidget final
: public ProjectExplorer::BuildStepConfigWidget
{
Q_OBJECT
public:
explicit BareMetalGdbCommandsDeployStepWidget(BareMetalGdbCommandsDeployStep &step);
void update();
private:
QString displayName() const;
QString summaryText() const;
BareMetalGdbCommandsDeployStep &m_step;
QPlainTextEdit *m_commands = nullptr;
};
} // namespace Internal
} // namespace BareMetal

View File

@@ -2,11 +2,13 @@
// Copyright (C) 2016 Denis Shienkov <denis.shienkov@gmail.com> // Copyright (C) 2016 Denis Shienkov <denis.shienkov@gmail.com>
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "baremetalplugin.h"
#include "baremetalconstants.h" #include "baremetalconstants.h"
#include "baremetaldebugsupport.h" #include "baremetaldebugsupport.h"
#include "baremetaldevice.h" #include "baremetaldevice.h"
#include "baremetalplugin.h"
#include "baremetalrunconfiguration.h" #include "baremetalrunconfiguration.h"
#include "baremetaltr.h"
#include "debugserverprovidermanager.h" #include "debugserverprovidermanager.h"
#include "debugserverproviderssettingspage.h" #include "debugserverproviderssettingspage.h"
@@ -27,8 +29,7 @@
using namespace ProjectExplorer; using namespace ProjectExplorer;
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
class BareMetalDeployConfigurationFactory : public DeployConfigurationFactory class BareMetalDeployConfigurationFactory : public DeployConfigurationFactory
{ {
@@ -36,8 +37,7 @@ public:
BareMetalDeployConfigurationFactory() BareMetalDeployConfigurationFactory()
{ {
setConfigBaseId("BareMetal.DeployConfiguration"); setConfigBaseId("BareMetal.DeployConfiguration");
setDefaultDisplayName(QCoreApplication::translate("BareMetalDeployConfiguration", setDefaultDisplayName(Tr::tr("Deploy to BareMetal Device"));
"Deploy to BareMetal Device"));
addSupportedTargetDeviceType(Constants::BareMetalOsType); addSupportedTargetDeviceType(Constants::BareMetalOsType);
} }
}; };
@@ -87,5 +87,4 @@ void BareMetalPlugin::extensionsInitialized()
DebugServerProviderManager::instance()->restoreProviders(); DebugServerProviderManager::instance()->restoreProviders();
} }
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -6,10 +6,7 @@
#include <extensionsystem/iplugin.h> #include <extensionsystem/iplugin.h>
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
// BareMetalPlugin
class BareMetalPlugin final : public ExtensionSystem::IPlugin class BareMetalPlugin final : public ExtensionSystem::IPlugin
{ {
@@ -34,5 +31,4 @@ private slots:
#endif // WITH_TESTS #endif // WITH_TESTS
}; };
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -1,9 +1,11 @@
// Copyright (C) 2016 Tim Sander <tim@krieglstein.org> // Copyright (C) 2016 Tim Sander <tim@krieglstein.org>
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "baremetalconstants.h"
#include "baremetalrunconfiguration.h" #include "baremetalrunconfiguration.h"
#include "baremetalconstants.h"
#include "baremetaltr.h"
#include <projectexplorer/buildsystem.h> #include <projectexplorer/buildsystem.h>
#include <projectexplorer/buildtargetinfo.h> #include <projectexplorer/buildtargetinfo.h>
#include <projectexplorer/project.h> #include <projectexplorer/project.h>
@@ -13,22 +15,19 @@
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils; using namespace Utils;
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
// RunConfigurations // RunConfigurations
class BareMetalRunConfiguration final : public RunConfiguration class BareMetalRunConfiguration final : public RunConfiguration
{ {
Q_DECLARE_TR_FUNCTIONS(BareMetal::Internal::BareMetalRunConfiguration)
public: public:
explicit BareMetalRunConfiguration(Target *target, Id id) explicit BareMetalRunConfiguration(Target *target, Id id)
: RunConfiguration(target, id) : RunConfiguration(target, id)
{ {
const auto exeAspect = addAspect<ExecutableAspect>(target, ExecutableAspect::RunDevice); const auto exeAspect = addAspect<ExecutableAspect>(target, ExecutableAspect::RunDevice);
exeAspect->setDisplayStyle(StringAspect::LabelDisplay); exeAspect->setDisplayStyle(StringAspect::LabelDisplay);
exeAspect->setPlaceHolderText(tr("Unknown")); exeAspect->setPlaceHolderText(Tr::tr("Unknown"));
addAspect<ArgumentsAspect>(macroExpander()); addAspect<ArgumentsAspect>(macroExpander());
addAspect<WorkingDirectoryAspect>(macroExpander(), nullptr); addAspect<WorkingDirectoryAspect>(macroExpander(), nullptr);
@@ -44,15 +43,13 @@ public:
class BareMetalCustomRunConfiguration final : public RunConfiguration class BareMetalCustomRunConfiguration final : public RunConfiguration
{ {
Q_DECLARE_TR_FUNCTIONS(BareMetal::Internal::BareMetalCustomRunConfiguration)
public: public:
explicit BareMetalCustomRunConfiguration(Target *target, Id id) explicit BareMetalCustomRunConfiguration(Target *target, Id id)
: RunConfiguration(target, id) : RunConfiguration(target, id)
{ {
const auto exeAspect = addAspect<ExecutableAspect>(target, ExecutableAspect::RunDevice); const auto exeAspect = addAspect<ExecutableAspect>(target, ExecutableAspect::RunDevice);
exeAspect->setSettingsKey("BareMetal.CustomRunConfig.Executable"); exeAspect->setSettingsKey("BareMetal.CustomRunConfig.Executable");
exeAspect->setPlaceHolderText(tr("Unknown")); exeAspect->setPlaceHolderText(Tr::tr("Unknown"));
exeAspect->setDisplayStyle(StringAspect::PathChooserDisplay); exeAspect->setDisplayStyle(StringAspect::PathChooserDisplay);
exeAspect->setHistoryCompleter("BareMetal.CustomRunConfig.History"); exeAspect->setHistoryCompleter("BareMetal.CustomRunConfig.History");
exeAspect->setExpectedKind(PathChooser::Any); exeAspect->setExpectedKind(PathChooser::Any);
@@ -60,7 +57,8 @@ public:
addAspect<ArgumentsAspect>(macroExpander()); addAspect<ArgumentsAspect>(macroExpander());
addAspect<WorkingDirectoryAspect>(macroExpander(), nullptr); addAspect<WorkingDirectoryAspect>(macroExpander(), nullptr);
setDefaultDisplayName(RunConfigurationFactory::decoratedTargetName(tr("Custom Executable"), target)); setDefaultDisplayName(RunConfigurationFactory::decoratedTargetName(
Tr::tr("Custom Executable"), target));
} }
public: public:
@@ -71,8 +69,8 @@ Tasks BareMetalCustomRunConfiguration::checkForIssues() const
{ {
Tasks tasks; Tasks tasks;
if (aspect<ExecutableAspect>()->executable().isEmpty()) { if (aspect<ExecutableAspect>()->executable().isEmpty()) {
tasks << createConfigurationIssue(tr("The remote executable must be set in order to run " tasks << createConfigurationIssue(Tr::tr("The remote executable must be set in order to "
"a custom remote run configuration.")); "run a custom remote run configuration."));
} }
return tasks; return tasks;
} }
@@ -89,12 +87,10 @@ BareMetalRunConfigurationFactory::BareMetalRunConfigurationFactory()
// BaseMetalCustomRunConfigurationFactory // BaseMetalCustomRunConfigurationFactory
BareMetalCustomRunConfigurationFactory::BareMetalCustomRunConfigurationFactory() BareMetalCustomRunConfigurationFactory::BareMetalCustomRunConfigurationFactory()
: FixedRunConfigurationFactory(BareMetalCustomRunConfiguration::tr("Custom Executable"), true) : FixedRunConfigurationFactory(Tr::tr("Custom Executable"), true)
{ {
registerRunConfiguration<BareMetalCustomRunConfiguration>("BareMetal"); registerRunConfiguration<BareMetalCustomRunConfiguration>("BareMetal");
addSupportedTargetDeviceType(BareMetal::Constants::BareMetalOsType); addSupportedTargetDeviceType(BareMetal::Constants::BareMetalOsType);
} }
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -5,8 +5,7 @@
#include <projectexplorer/runconfiguration.h> #include <projectexplorer/runconfiguration.h>
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
class BareMetalRunConfigurationFactory final class BareMetalRunConfigurationFactory final
: public ProjectExplorer::RunConfigurationFactory : public ProjectExplorer::RunConfigurationFactory
@@ -22,5 +21,4 @@ public:
BareMetalCustomRunConfigurationFactory(); BareMetalCustomRunConfigurationFactory();
}; };
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -3,6 +3,7 @@
#include "baremetalconstants.h" #include "baremetalconstants.h"
#include "baremetaltr.h"
#include "debugserverproviderchooser.h" #include "debugserverproviderchooser.h"
#include "debugserverprovidermanager.h" #include "debugserverprovidermanager.h"
#include "idebugserverprovider.h" #include "idebugserverprovider.h"
@@ -14,8 +15,7 @@
#include <QPushButton> #include <QPushButton>
#include <QSettings> #include <QSettings>
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
// DebugServerProviderChooser // DebugServerProviderChooser
@@ -25,7 +25,7 @@ DebugServerProviderChooser::DebugServerProviderChooser(
{ {
m_chooser = new QComboBox(this); m_chooser = new QComboBox(this);
m_chooser->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed); m_chooser->setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::Fixed);
m_manageButton = new QPushButton(tr("Manage..."), this); m_manageButton = new QPushButton(Tr::tr("Manage..."), this);
m_manageButton->setEnabled(useManageButton); m_manageButton->setEnabled(useManageButton);
m_manageButton->setVisible(useManageButton); m_manageButton->setVisible(useManageButton);
@@ -83,7 +83,7 @@ void DebugServerProviderChooser::populate()
{ {
const QSignalBlocker blocker(m_chooser); const QSignalBlocker blocker(m_chooser);
m_chooser->clear(); m_chooser->clear();
m_chooser->addItem(tr("None")); m_chooser->addItem(Tr::tr("None"));
for (const IDebugServerProvider *p : DebugServerProviderManager::providers()) { for (const IDebugServerProvider *p : DebugServerProviderManager::providers()) {
if (!providerMatches(p)) if (!providerMatches(p))
@@ -92,5 +92,4 @@ void DebugServerProviderChooser::populate()
} }
} }
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -10,13 +10,10 @@ class QComboBox;
class QPushButton; class QPushButton;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
class IDebugServerProvider; class IDebugServerProvider;
// DebugServerProviderChooser
class DebugServerProviderChooser final : public QWidget class DebugServerProviderChooser final : public QWidget
{ {
Q_OBJECT Q_OBJECT
@@ -42,5 +39,4 @@ private:
QPushButton *m_manageButton = nullptr; QPushButton *m_manageButton = nullptr;
}; };
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -24,10 +24,7 @@
#include <utils/persistentsettings.h> #include <utils/persistentsettings.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <QDir> namespace BareMetal::Internal {
namespace BareMetal {
namespace Internal {
const char dataKeyC[] = "DebugServerProvider."; const char dataKeyC[] = "DebugServerProvider.";
const char countKeyC[] = "DebugServerProvider.Count"; const char countKeyC[] = "DebugServerProvider.Count";
@@ -199,5 +196,4 @@ void DebugServerProviderManager::deregisterProvider(IDebugServerProvider *provid
delete provider; delete provider;
} }
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -10,8 +10,7 @@
namespace Utils { class PersistentSettingsWriter; } namespace Utils { class PersistentSettingsWriter; }
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
class BareMetalPlugin; class BareMetalPlugin;
class BareMetalPluginPrivate; class BareMetalPluginPrivate;
@@ -59,5 +58,4 @@ private:
friend class IDebugServerProvider; friend class IDebugServerProvider;
}; };
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -1,10 +1,11 @@
// Copyright (C) 2016 Denis Shienkov <denis.shienkov@gmail.com> // Copyright (C) 2016 Denis Shienkov <denis.shienkov@gmail.com>
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "baremetalconstants.h"
#include "debugserverprovidermanager.h"
#include "debugserverproviderssettingspage.h" #include "debugserverproviderssettingspage.h"
#include "baremetalconstants.h"
#include "baremetaltr.h"
#include "debugserverprovidermanager.h"
#include "idebugserverprovider.h" #include "idebugserverprovider.h"
#include <coreplugin/icore.h> #include <coreplugin/icore.h>
@@ -32,8 +33,7 @@
using namespace Debugger; using namespace Debugger;
using namespace Utils; using namespace Utils;
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
// DebugServerProviderNode // DebugServerProviderNode
@@ -47,11 +47,11 @@ static QString engineTypeName(DebuggerEngineType engineType)
{ {
switch (engineType) { switch (engineType) {
case NoEngineType: case NoEngineType:
return DebugServerProviderModel::tr("Not recognized"); return Tr::tr("Not recognized");
case GdbEngineType: case GdbEngineType:
return DebugServerProviderModel::tr("GDB"); return Tr::tr("GDB");
case UvscEngineType: case UvscEngineType:
return DebugServerProviderModel::tr("UVSC"); return Tr::tr("UVSC");
default: default:
return {}; return {};
} }
@@ -61,12 +61,12 @@ static QString engineTypeDescription(DebuggerEngineType engineType)
{ {
switch (engineType) { switch (engineType) {
case NoEngineType: case NoEngineType:
return DebugServerProviderModel::tr("Not recognized"); return Tr::tr("Not recognized");
case GdbEngineType: case GdbEngineType:
return DebugServerProviderModel::tr("GDB compatible provider engine\n" \ return Tr::tr("GDB compatible provider engine\n" \
"(used together with the GDB debuggers)."); "(used together with the GDB debuggers).");
case UvscEngineType: case UvscEngineType:
return DebugServerProviderModel::tr("UVSC compatible provider engine\n" \ return Tr::tr("UVSC compatible provider engine\n" \
"(used together with the KEIL uVision)."); "(used together with the KEIL uVision).");
default: default:
return {}; return {};
@@ -114,7 +114,7 @@ public:
DebugServerProviderModel::DebugServerProviderModel() DebugServerProviderModel::DebugServerProviderModel()
{ {
setHeader({tr("Name"), tr("Type"), tr("Engine")}); setHeader({Tr::tr("Name"), Tr::tr("Type"), Tr::tr("Engine")});
const DebugServerProviderManager *manager = DebugServerProviderManager::instance(); const DebugServerProviderManager *manager = DebugServerProviderManager::instance();
@@ -175,8 +175,8 @@ void DebugServerProviderModel::apply()
if (!skippedProviders.isEmpty()) { if (!skippedProviders.isEmpty()) {
QMessageBox::warning(Core::ICore::dialogParent(), QMessageBox::warning(Core::ICore::dialogParent(),
tr("Duplicate Providers Detected"), Tr::tr("Duplicate Providers Detected"),
tr("The following providers were already configured:<br>" Tr::tr("The following providers were already configured:<br>"
"&nbsp;%1<br>" "&nbsp;%1<br>"
"They were not configured again.") "They were not configured again.")
.arg(skippedProviders.join(",<br>&nbsp;"))); .arg(skippedProviders.join(",<br>&nbsp;")));
@@ -254,8 +254,6 @@ void DebugServerProviderModel::removeProvider(IDebugServerProvider *provider)
class DebugServerProvidersSettingsWidget final : public Core::IOptionsPageWidget class DebugServerProvidersSettingsWidget final : public Core::IOptionsPageWidget
{ {
Q_DECLARE_TR_FUNCTIONS(BareMetal::Internal::DebugServerProvidersSettingsPage)
public: public:
DebugServerProvidersSettingsWidget(); DebugServerProvidersSettingsWidget();
@@ -284,9 +282,9 @@ DebugServerProvidersSettingsWidget::DebugServerProvidersSettingsWidget()
m_providerView->setUniformRowHeights(true); m_providerView->setUniformRowHeights(true);
m_providerView->header()->setStretchLastSection(false); m_providerView->header()->setStretchLastSection(false);
m_addButton = new QPushButton(tr("Add"), this); m_addButton = new QPushButton(Tr::tr("Add"), this);
m_cloneButton = new QPushButton(tr("Clone"), this); m_cloneButton = new QPushButton(Tr::tr("Clone"), this);
m_delButton = new QPushButton(tr("Remove"), this); m_delButton = new QPushButton(Tr::tr("Remove"), this);
m_container = new Utils::DetailsWidget(this); m_container = new Utils::DetailsWidget(this);
m_container->setState(Utils::DetailsWidget::NoSummary); m_container->setState(Utils::DetailsWidget::NoSummary);
@@ -310,7 +308,7 @@ DebugServerProvidersSettingsWidget::DebugServerProvidersSettingsWidget()
horizontalLayout->addLayout(verticalLayout); horizontalLayout->addLayout(verticalLayout);
horizontalLayout->addWidget(m_container); horizontalLayout->addWidget(m_container);
const auto groupBox = new QGroupBox(tr("Debug Server Providers"), this); const auto groupBox = new QGroupBox(Tr::tr("Debug Server Providers"), this);
groupBox->setLayout(horizontalLayout); groupBox->setLayout(horizontalLayout);
const auto topLayout = new QVBoxLayout(this); const auto topLayout = new QVBoxLayout(this);
@@ -351,7 +349,7 @@ DebugServerProvidersSettingsWidget::DebugServerProvidersSettingsWidget()
if (id.startsWith(f->id())) { if (id.startsWith(f->id())) {
IDebugServerProvider *p = f->create(); IDebugServerProvider *p = f->create();
p->fromMap(old->toMap()); p->fromMap(old->toMap());
p->setDisplayName(tr("Clone of %1").arg(old->displayName())); p->setDisplayName(Tr::tr("Clone of %1").arg(old->displayName()));
p->resetId(); p->resetId();
addProviderToModel(p); addProviderToModel(p);
} }
@@ -432,10 +430,9 @@ QModelIndex DebugServerProvidersSettingsWidget::currentIndex() const
DebugServerProvidersSettingsPage::DebugServerProvidersSettingsPage() DebugServerProvidersSettingsPage::DebugServerProvidersSettingsPage()
{ {
setId(Constants::DEBUG_SERVER_PROVIDERS_SETTINGS_ID); setId(Constants::DEBUG_SERVER_PROVIDERS_SETTINGS_ID);
setDisplayName(DebugServerProvidersSettingsWidget::tr("Bare Metal")); setDisplayName(Tr::tr("Bare Metal"));
setCategory(ProjectExplorer::Constants::DEVICE_SETTINGS_CATEGORY); setCategory(ProjectExplorer::Constants::DEVICE_SETTINGS_CATEGORY);
setWidgetCreator([] { return new DebugServerProvidersSettingsWidget; }); setWidgetCreator([] { return new DebugServerProvidersSettingsWidget; });
} }
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -15,8 +15,7 @@ QT_END_NAMESPACE
namespace Utils { class DetailsWidget; } namespace Utils { class DetailsWidget; }
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
class DebugServerProviderNode; class DebugServerProviderNode;
class DebugServerProvidersSettingsWidget; class DebugServerProvidersSettingsWidget;
@@ -66,5 +65,4 @@ public:
DebugServerProvidersSettingsPage(); DebugServerProvidersSettingsPage();
}; };
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -4,6 +4,7 @@
#include "eblinkgdbserverprovider.h" #include "eblinkgdbserverprovider.h"
#include <baremetal/baremetalconstants.h> #include <baremetal/baremetalconstants.h>
#include <baremetal/baremetaltr.h>
#include <baremetal/debugserverprovidermanager.h> #include <baremetal/debugserverprovidermanager.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
@@ -16,13 +17,10 @@
#include <QFormLayout> #include <QFormLayout>
#include <QPlainTextEdit> #include <QPlainTextEdit>
#include <QSpinBox> #include <QSpinBox>
#include <QFileInfo>
#include <QDir>
using namespace Utils; using namespace Utils;
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
const char executableFileKeyC[] = "ExecutableFile"; const char executableFileKeyC[] = "ExecutableFile";
const char verboseLevelKeyC[] = "VerboseLevel"; const char verboseLevelKeyC[] = "VerboseLevel";
@@ -44,7 +42,7 @@ EBlinkGdbServerProvider::EBlinkGdbServerProvider()
setInitCommands(defaultInitCommands()); setInitCommands(defaultInitCommands());
setResetCommands(defaultResetCommands()); setResetCommands(defaultResetCommands());
setChannel("127.0.0.1", 2331); setChannel("127.0.0.1", 2331);
setTypeDisplayName(GdbServerProvider::tr("EBlink")); setTypeDisplayName(Tr::tr("EBlink"));
setConfigurationWidgetCreator([this] { return new EBlinkGdbServerProviderConfigWidget(this); }); setConfigurationWidgetCreator([this] { return new EBlinkGdbServerProviderConfigWidget(this); });
} }
@@ -208,7 +206,7 @@ bool EBlinkGdbServerProvider::operator==(const IDebugServerProvider &other) cons
EBlinkGdbServerProviderFactory::EBlinkGdbServerProviderFactory() EBlinkGdbServerProviderFactory::EBlinkGdbServerProviderFactory()
{ {
setId(Constants::GDBSERVER_EBLINK_PROVIDER_ID); setId(Constants::GDBSERVER_EBLINK_PROVIDER_ID);
setDisplayName(GdbServerProvider::tr("EBlink")); setDisplayName(Tr::tr("EBlink"));
setCreator([] { return new EBlinkGdbServerProvider; }); setCreator([] { return new EBlinkGdbServerProvider; });
} }
@@ -221,52 +219,52 @@ EBlinkGdbServerProviderConfigWidget::EBlinkGdbServerProviderConfigWidget(
Q_ASSERT(p); Q_ASSERT(p);
m_gdbHostWidget = new HostWidget(this); m_gdbHostWidget = new HostWidget(this);
m_mainLayout->addRow(tr("Host:"), m_gdbHostWidget); m_mainLayout->addRow(Tr::tr("Host:"), m_gdbHostWidget);
m_executableFileChooser = new PathChooser; m_executableFileChooser = new PathChooser;
m_executableFileChooser->setExpectedKind(Utils::PathChooser::ExistingCommand); m_executableFileChooser->setExpectedKind(Utils::PathChooser::ExistingCommand);
m_mainLayout->addRow(tr("Executable file:"), m_executableFileChooser); m_mainLayout->addRow(Tr::tr("Executable file:"), m_executableFileChooser);
m_scriptFileChooser = new Utils::PathChooser; m_scriptFileChooser = new Utils::PathChooser;
m_scriptFileChooser->setExpectedKind(Utils::PathChooser::File); m_scriptFileChooser->setExpectedKind(Utils::PathChooser::File);
m_scriptFileChooser->setPromptDialogFilter("*.script"); m_scriptFileChooser->setPromptDialogFilter("*.script");
m_mainLayout->addRow(tr("Script file:"), m_scriptFileChooser); m_mainLayout->addRow(Tr::tr("Script file:"), m_scriptFileChooser);
m_verboseLevelSpinBox = new QSpinBox; m_verboseLevelSpinBox = new QSpinBox;
m_verboseLevelSpinBox->setRange(0, 7); m_verboseLevelSpinBox->setRange(0, 7);
m_verboseLevelSpinBox->setMaximumWidth(80); m_verboseLevelSpinBox->setMaximumWidth(80);
m_verboseLevelSpinBox->setToolTip(tr("Specify the verbosity level (0 to 7).")); m_verboseLevelSpinBox->setToolTip(Tr::tr("Specify the verbosity level (0 to 7)."));
m_mainLayout->addRow(tr("Verbosity level:"), m_verboseLevelSpinBox); m_mainLayout->addRow(Tr::tr("Verbosity level:"), m_verboseLevelSpinBox);
m_resetOnConnectCheckBox = new QCheckBox; m_resetOnConnectCheckBox = new QCheckBox;
m_resetOnConnectCheckBox->setToolTip(tr("Connect under reset (hotplug).")); m_resetOnConnectCheckBox->setToolTip(Tr::tr("Connect under reset (hotplug)."));
m_mainLayout->addRow(tr("Connect under reset:"), m_resetOnConnectCheckBox); m_mainLayout->addRow(Tr::tr("Connect under reset:"), m_resetOnConnectCheckBox);
m_interfaceTypeComboBox = new QComboBox; m_interfaceTypeComboBox = new QComboBox;
m_interfaceTypeComboBox->setToolTip(tr("Interface type.")); m_interfaceTypeComboBox->setToolTip(Tr::tr("Interface type."));
m_mainLayout->addRow(tr("Type:"), m_interfaceTypeComboBox); m_mainLayout->addRow(Tr::tr("Type:"), m_interfaceTypeComboBox);
m_interfaceSpeedSpinBox = new QSpinBox; m_interfaceSpeedSpinBox = new QSpinBox;
m_interfaceSpeedSpinBox->setRange(120, 8000); m_interfaceSpeedSpinBox->setRange(120, 8000);
m_interfaceSpeedSpinBox->setMaximumWidth(120); m_interfaceSpeedSpinBox->setMaximumWidth(120);
m_interfaceSpeedSpinBox->setToolTip(tr("Specify the speed of the interface (120 to 8000) in kilohertz (kHz).")); m_interfaceSpeedSpinBox->setToolTip(Tr::tr("Specify the speed of the interface (120 to 8000) in kilohertz (kHz)."));
m_mainLayout->addRow(tr("Speed:"), m_interfaceSpeedSpinBox); m_mainLayout->addRow(Tr::tr("Speed:"), m_interfaceSpeedSpinBox);
m_notUseCacheCheckBox = new QCheckBox; m_notUseCacheCheckBox = new QCheckBox;
m_notUseCacheCheckBox->setToolTip(tr("Do not use EBlink flash cache.")); m_notUseCacheCheckBox->setToolTip(Tr::tr("Do not use EBlink flash cache."));
m_mainLayout->addRow(tr("Disable cache:"), m_notUseCacheCheckBox); m_mainLayout->addRow(Tr::tr("Disable cache:"), m_notUseCacheCheckBox);
m_shutDownAfterDisconnectCheckBox = new QCheckBox; m_shutDownAfterDisconnectCheckBox = new QCheckBox;
m_shutDownAfterDisconnectCheckBox->setEnabled(false); m_shutDownAfterDisconnectCheckBox->setEnabled(false);
m_shutDownAfterDisconnectCheckBox->setToolTip(tr("Shut down EBlink server after disconnect.")); m_shutDownAfterDisconnectCheckBox->setToolTip(Tr::tr("Shut down EBlink server after disconnect."));
m_mainLayout->addRow(tr("Auto shutdown:"), m_shutDownAfterDisconnectCheckBox); m_mainLayout->addRow(Tr::tr("Auto shutdown:"), m_shutDownAfterDisconnectCheckBox);
m_initCommandsTextEdit = new QPlainTextEdit(this); m_initCommandsTextEdit = new QPlainTextEdit(this);
m_initCommandsTextEdit->setToolTip(defaultInitCommandsTooltip()); m_initCommandsTextEdit->setToolTip(defaultInitCommandsTooltip());
m_mainLayout->addRow(tr("Init commands:"), m_initCommandsTextEdit); m_mainLayout->addRow(Tr::tr("Init commands:"), m_initCommandsTextEdit);
m_resetCommandsTextEdit = new QPlainTextEdit(this); m_resetCommandsTextEdit = new QPlainTextEdit(this);
m_resetCommandsTextEdit->setToolTip(defaultResetCommandsTooltip()); m_resetCommandsTextEdit->setToolTip(defaultResetCommandsTooltip());
m_mainLayout->addRow(tr("Reset commands:"), m_resetCommandsTextEdit); m_mainLayout->addRow(Tr::tr("Reset commands:"), m_resetCommandsTextEdit);
populateInterfaceTypes(); populateInterfaceTypes();
addErrorLabel(); addErrorLabel();
@@ -316,9 +314,9 @@ EBlinkGdbServerProviderConfigWidget::interfaceTypeFromWidget() const
void EBlinkGdbServerProviderConfigWidget::populateInterfaceTypes() void EBlinkGdbServerProviderConfigWidget::populateInterfaceTypes()
{ {
m_interfaceTypeComboBox->insertItem(EBlinkGdbServerProvider::SWD, tr("SWD"), m_interfaceTypeComboBox->insertItem(EBlinkGdbServerProvider::SWD, Tr::tr("SWD"),
EBlinkGdbServerProvider::SWD); EBlinkGdbServerProvider::SWD);
m_interfaceTypeComboBox->insertItem(EBlinkGdbServerProvider::JTAG, tr("JTAG"), m_interfaceTypeComboBox->insertItem(EBlinkGdbServerProvider::JTAG, Tr::tr("JTAG"),
EBlinkGdbServerProvider::JTAG); EBlinkGdbServerProvider::JTAG);
} }
@@ -368,5 +366,4 @@ void EBlinkGdbServerProviderConfigWidget::discard()
GdbServerProviderConfigWidget::discard(); GdbServerProviderConfigWidget::discard();
} }
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -12,8 +12,7 @@ QT_END_NAMESPACE
namespace Utils { class PathChooser; } namespace Utils { class PathChooser; }
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
// EBlinkGdbServerProvider // EBlinkGdbServerProvider
@@ -71,8 +70,6 @@ public:
class EBlinkGdbServerProviderConfigWidget final class EBlinkGdbServerProviderConfigWidget final
: public GdbServerProviderConfigWidget : public GdbServerProviderConfigWidget
{ {
Q_OBJECT
public: public:
explicit EBlinkGdbServerProviderConfigWidget( explicit EBlinkGdbServerProviderConfigWidget(
EBlinkGdbServerProvider *provider); EBlinkGdbServerProvider *provider);
@@ -101,6 +98,5 @@ private:
QPlainTextEdit *m_resetCommandsTextEdit = nullptr; QPlainTextEdit *m_resetCommandsTextEdit = nullptr;
}; };
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -5,6 +5,7 @@
#include <baremetal/baremetaldebugsupport.h> #include <baremetal/baremetaldebugsupport.h>
#include <baremetal/baremetaldevice.h> #include <baremetal/baremetaldevice.h>
#include <baremetal/baremetaltr.h>
#include <baremetal/debugserverprovidermanager.h> #include <baremetal/debugserverprovidermanager.h>
#include <projectexplorer/runconfigurationaspects.h> #include <projectexplorer/runconfigurationaspects.h>
@@ -22,8 +23,7 @@ using namespace Debugger;
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils; using namespace Utils;
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
const char startupModeKeyC[] = "Mode"; const char startupModeKeyC[] = "Mode";
const char peripheralDescriptionFileKeyC[] = "PeripheralDescriptionFile"; const char peripheralDescriptionFileKeyC[] = "PeripheralDescriptionFile";
@@ -144,13 +144,11 @@ bool GdbServerProvider::aboutToRun(DebuggerRunTool *runTool,
const FilePath bin = FilePath::fromString(exeAspect->executable.path()); const FilePath bin = FilePath::fromString(exeAspect->executable.path());
if (bin.isEmpty()) { if (bin.isEmpty()) {
errorMessage = BareMetalDebugSupport::tr( errorMessage = Tr::tr("Cannot debug: Local executable is not set.");
"Cannot debug: Local executable is not set.");
return false; return false;
} }
if (!bin.exists()) { if (!bin.exists()) {
errorMessage = BareMetalDebugSupport::tr( errorMessage = Tr::tr("Cannot debug: Could not find executable for \"%1\".")
"Cannot debug: Could not find executable for \"%1\".")
.arg(bin.toString()); .arg(bin.toString());
return false; return false;
} }
@@ -201,17 +199,17 @@ GdbServerProviderConfigWidget::GdbServerProviderConfigWidget(
: IDebugServerProviderConfigWidget(provider) : IDebugServerProviderConfigWidget(provider)
{ {
m_startupModeComboBox = new QComboBox(this); m_startupModeComboBox = new QComboBox(this);
m_startupModeComboBox->setToolTip(tr("Choose the desired startup mode " m_startupModeComboBox->setToolTip(Tr::tr("Choose the desired startup mode "
"of the GDB server provider.")); "of the GDB server provider."));
m_mainLayout->addRow(tr("Startup mode:"), m_startupModeComboBox); m_mainLayout->addRow(Tr::tr("Startup mode:"), m_startupModeComboBox);
m_peripheralDescriptionFileChooser = new PathChooser(this); m_peripheralDescriptionFileChooser = new PathChooser(this);
m_peripheralDescriptionFileChooser->setExpectedKind(PathChooser::File); m_peripheralDescriptionFileChooser->setExpectedKind(PathChooser::File);
m_peripheralDescriptionFileChooser->setPromptDialogFilter( m_peripheralDescriptionFileChooser->setPromptDialogFilter(
tr("Peripheral description files (*.svd)")); Tr::tr("Peripheral description files (*.svd)"));
m_peripheralDescriptionFileChooser->setPromptDialogTitle( m_peripheralDescriptionFileChooser->setPromptDialogTitle(
tr("Select Peripheral Description File")); Tr::tr("Select Peripheral Description File"));
m_mainLayout->addRow(tr("Peripheral description file:"), m_mainLayout->addRow(Tr::tr("Peripheral description file:"),
m_peripheralDescriptionFileChooser); m_peripheralDescriptionFileChooser);
populateStartupModes(); populateStartupModes();
@@ -264,9 +262,9 @@ static QString startupModeName(GdbServerProvider::StartupMode m)
{ {
switch (m) { switch (m) {
case GdbServerProvider::StartupOnNetwork: case GdbServerProvider::StartupOnNetwork:
return GdbServerProviderConfigWidget::tr("Startup in TCP/IP Mode"); return Tr::tr("Startup in TCP/IP Mode");
case GdbServerProvider::StartupOnPipe: case GdbServerProvider::StartupOnPipe:
return GdbServerProviderConfigWidget::tr("Startup in Pipe Mode"); return Tr::tr("Startup in Pipe Mode");
default: default:
return {}; return {};
} }
@@ -299,15 +297,13 @@ void GdbServerProviderConfigWidget::setFromProvider()
QString GdbServerProviderConfigWidget::defaultInitCommandsTooltip() QString GdbServerProviderConfigWidget::defaultInitCommandsTooltip()
{ {
return QCoreApplication::translate("BareMetal", return Tr::tr("Enter GDB commands to reset the board "
"Enter GDB commands to reset the board "
"and to write the nonvolatile memory."); "and to write the nonvolatile memory.");
} }
QString GdbServerProviderConfigWidget::defaultResetCommandsTooltip() QString GdbServerProviderConfigWidget::defaultResetCommandsTooltip()
{ {
return QCoreApplication::translate("BareMetal", return Tr::tr("Enter GDB commands to reset the hardware. "
"Enter GDB commands to reset the hardware. "
"The MCU should be halted after these commands."); "The MCU should be halted after these commands.");
} }
@@ -325,5 +321,4 @@ GdbServerProviderRunner::GdbServerProviderRunner(ProjectExplorer::RunControl *ru
}); });
} }
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -7,23 +7,18 @@
#include <projectexplorer/runcontrol.h> #include <projectexplorer/runcontrol.h>
#include <utils/fileutils.h>
QT_BEGIN_NAMESPACE QT_BEGIN_NAMESPACE
class QComboBox; class QComboBox;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace Utils { class PathChooser; } namespace Utils { class PathChooser; }
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
// GdbServerProvider // GdbServerProvider
class GdbServerProvider : public IDebugServerProvider class GdbServerProvider : public IDebugServerProvider
{ {
Q_DECLARE_TR_FUNCTIONS(BareMetal::Internal::GdbServerProvider)
public: public:
enum StartupMode { enum StartupMode {
StartupOnNetwork, StartupOnNetwork,
@@ -75,8 +70,6 @@ protected:
class GdbServerProviderConfigWidget : public IDebugServerProviderConfigWidget class GdbServerProviderConfigWidget : public IDebugServerProviderConfigWidget
{ {
Q_OBJECT
public: public:
explicit GdbServerProviderConfigWidget(GdbServerProvider *provider); explicit GdbServerProviderConfigWidget(GdbServerProvider *provider);
void apply() override; void apply() override;
@@ -107,5 +100,4 @@ public:
const Utils::CommandLine &commandLine); const Utils::CommandLine &commandLine);
}; };
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -4,6 +4,7 @@
#include "genericgdbserverprovider.h" #include "genericgdbserverprovider.h"
#include <baremetal/baremetalconstants.h> #include <baremetal/baremetalconstants.h>
#include <baremetal/baremetaltr.h>
#include <baremetal/debugserverprovidermanager.h> #include <baremetal/debugserverprovidermanager.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
@@ -13,8 +14,7 @@
#include <QFormLayout> #include <QFormLayout>
#include <QPlainTextEdit> #include <QPlainTextEdit>
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
// GenericGdbServerProvider // GenericGdbServerProvider
@@ -22,7 +22,7 @@ GenericGdbServerProvider::GenericGdbServerProvider()
: GdbServerProvider(Constants::GDBSERVER_GENERIC_PROVIDER_ID) : GdbServerProvider(Constants::GDBSERVER_GENERIC_PROVIDER_ID)
{ {
setChannel("localhost", 3333); setChannel("localhost", 3333);
setTypeDisplayName(GdbServerProvider::tr("Generic")); setTypeDisplayName(Tr::tr("Generic"));
setConfigurationWidgetCreator([this] { return new GenericGdbServerProviderConfigWidget(this); }); setConfigurationWidgetCreator([this] { return new GenericGdbServerProviderConfigWidget(this); });
} }
@@ -36,7 +36,7 @@ QSet<GdbServerProvider::StartupMode> GenericGdbServerProvider::supportedStartupM
GenericGdbServerProviderFactory::GenericGdbServerProviderFactory() GenericGdbServerProviderFactory::GenericGdbServerProviderFactory()
{ {
setId(Constants::GDBSERVER_GENERIC_PROVIDER_ID); setId(Constants::GDBSERVER_GENERIC_PROVIDER_ID);
setDisplayName(GdbServerProvider::tr("Generic")); setDisplayName(Tr::tr("Generic"));
setCreator([] { return new GenericGdbServerProvider; }); setCreator([] { return new GenericGdbServerProvider; });
} }
@@ -49,17 +49,17 @@ GenericGdbServerProviderConfigWidget::GenericGdbServerProviderConfigWidget(
Q_ASSERT(provider); Q_ASSERT(provider);
m_hostWidget = new HostWidget(this); m_hostWidget = new HostWidget(this);
m_mainLayout->addRow(tr("Host:"), m_hostWidget); m_mainLayout->addRow(Tr::tr("Host:"), m_hostWidget);
m_useExtendedRemoteCheckBox = new QCheckBox(this); m_useExtendedRemoteCheckBox = new QCheckBox(this);
m_useExtendedRemoteCheckBox->setToolTip("Use GDB target extended-remote"); m_useExtendedRemoteCheckBox->setToolTip(Tr::tr("Use GDB target extended-remote"));
m_mainLayout->addRow(tr("Extended mode:"), m_useExtendedRemoteCheckBox); m_mainLayout->addRow(Tr::tr("Extended mode:"), m_useExtendedRemoteCheckBox);
m_initCommandsTextEdit = new QPlainTextEdit(this); m_initCommandsTextEdit = new QPlainTextEdit(this);
m_initCommandsTextEdit->setToolTip(defaultInitCommandsTooltip()); m_initCommandsTextEdit->setToolTip(defaultInitCommandsTooltip());
m_mainLayout->addRow(tr("Init commands:"), m_initCommandsTextEdit); m_mainLayout->addRow(Tr::tr("Init commands:"), m_initCommandsTextEdit);
m_resetCommandsTextEdit = new QPlainTextEdit(this); m_resetCommandsTextEdit = new QPlainTextEdit(this);
m_resetCommandsTextEdit->setToolTip(defaultResetCommandsTooltip()); m_resetCommandsTextEdit->setToolTip(defaultResetCommandsTooltip());
m_mainLayout->addRow(tr("Reset commands:"), m_resetCommandsTextEdit); m_mainLayout->addRow(Tr::tr("Reset commands:"), m_resetCommandsTextEdit);
addErrorLabel(); addErrorLabel();
setFromProvider(); setFromProvider();
@@ -108,5 +108,4 @@ void GenericGdbServerProviderConfigWidget::setFromProvider()
m_resetCommandsTextEdit->setPlainText(p->resetCommands()); m_resetCommandsTextEdit->setPlainText(p->resetCommands());
} }
} // namespace Internal } // ProjectExplorer::Internal
} // namespace ProjectExplorer

View File

@@ -10,8 +10,7 @@ class QCheckBox;
class QPlainTextEdit; class QPlainTextEdit;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
// GenericGdbServerProvider // GenericGdbServerProvider
@@ -39,8 +38,6 @@ public:
class GenericGdbServerProviderConfigWidget final class GenericGdbServerProviderConfigWidget final
: public GdbServerProviderConfigWidget : public GdbServerProviderConfigWidget
{ {
Q_OBJECT
public: public:
explicit GenericGdbServerProviderConfigWidget( explicit GenericGdbServerProviderConfigWidget(
GenericGdbServerProvider *provider); GenericGdbServerProvider *provider);
@@ -57,5 +54,4 @@ private:
QPlainTextEdit *m_resetCommandsTextEdit = nullptr; QPlainTextEdit *m_resetCommandsTextEdit = nullptr;
}; };
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -4,6 +4,7 @@
#include "jlinkgdbserverprovider.h" #include "jlinkgdbserverprovider.h"
#include <baremetal/baremetalconstants.h> #include <baremetal/baremetalconstants.h>
#include <baremetal/baremetaltr.h>
#include <baremetal/debugserverprovidermanager.h> #include <baremetal/debugserverprovidermanager.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
@@ -21,8 +22,7 @@
using namespace Utils; using namespace Utils;
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
const char executableFileKeyC[] = "ExecutableFile"; const char executableFileKeyC[] = "ExecutableFile";
const char jlinkDeviceKeyC[] = "JLinkDevice"; const char jlinkDeviceKeyC[] = "JLinkDevice";
@@ -40,7 +40,7 @@ JLinkGdbServerProvider::JLinkGdbServerProvider()
setInitCommands(defaultInitCommands()); setInitCommands(defaultInitCommands());
setResetCommands(defaultResetCommands()); setResetCommands(defaultResetCommands());
setChannel("localhost", 2331); setChannel("localhost", 2331);
setTypeDisplayName(GdbServerProvider::tr("JLink")); setTypeDisplayName(Tr::tr("JLink"));
setConfigurationWidgetCreator([this] { return new JLinkGdbServerProviderConfigWidget(this); }); setConfigurationWidgetCreator([this] { return new JLinkGdbServerProviderConfigWidget(this); });
} }
@@ -166,7 +166,7 @@ bool JLinkGdbServerProvider::operator==(const IDebugServerProvider &other) const
JLinkGdbServerProviderFactory::JLinkGdbServerProviderFactory() JLinkGdbServerProviderFactory::JLinkGdbServerProviderFactory()
{ {
setId(Constants::GDBSERVER_JLINK_PROVIDER_ID); setId(Constants::GDBSERVER_JLINK_PROVIDER_ID);
setDisplayName(GdbServerProvider::tr("JLink")); setDisplayName(Tr::tr("JLink"));
setCreator([] { return new JLinkGdbServerProvider; }); setCreator([] { return new JLinkGdbServerProvider; });
} }
@@ -179,58 +179,58 @@ JLinkGdbServerProviderConfigWidget::JLinkGdbServerProviderConfigWidget(
Q_ASSERT(provider); Q_ASSERT(provider);
m_hostWidget = new HostWidget(this); m_hostWidget = new HostWidget(this);
m_mainLayout->addRow(tr("Host:"), m_hostWidget); m_mainLayout->addRow(Tr::tr("Host:"), m_hostWidget);
m_executableFileChooser = new Utils::PathChooser; m_executableFileChooser = new Utils::PathChooser;
m_executableFileChooser->setExpectedKind(Utils::PathChooser::ExistingCommand); m_executableFileChooser->setExpectedKind(Utils::PathChooser::ExistingCommand);
m_executableFileChooser->setCommandVersionArguments({"--version"}); m_executableFileChooser->setCommandVersionArguments({"--version"});
if (HostOsInfo::hostOs() == OsTypeWindows) { if (HostOsInfo::hostOs() == OsTypeWindows) {
m_executableFileChooser->setPromptDialogFilter(tr("JLink GDB Server (JLinkGDBServerCL.exe)")); m_executableFileChooser->setPromptDialogFilter(Tr::tr("JLink GDB Server (JLinkGDBServerCL.exe)"));
m_executableFileChooser->lineEdit()->setPlaceholderText("JLinkGDBServerCL.exe"); m_executableFileChooser->lineEdit()->setPlaceholderText("JLinkGDBServerCL.exe");
} else { } else {
m_executableFileChooser->setPromptDialogFilter(tr("JLink GDB Server (JLinkGDBServer)")); m_executableFileChooser->setPromptDialogFilter(Tr::tr("JLink GDB Server (JLinkGDBServer)"));
m_executableFileChooser->lineEdit()->setPlaceholderText("JLinkGDBServer"); m_executableFileChooser->lineEdit()->setPlaceholderText("JLinkGDBServer");
} }
m_mainLayout->addRow(tr("Executable file:"), m_executableFileChooser); m_mainLayout->addRow(Tr::tr("Executable file:"), m_executableFileChooser);
// Host interface settings. // Host interface settings.
m_hostInterfaceWidget = new QWidget(this); m_hostInterfaceWidget = new QWidget(this);
m_hostInterfaceComboBox = new QComboBox(m_hostInterfaceWidget); m_hostInterfaceComboBox = new QComboBox(m_hostInterfaceWidget);
m_hostInterfaceAddressLabel = new QLabel(m_hostInterfaceWidget); m_hostInterfaceAddressLabel = new QLabel(m_hostInterfaceWidget);
m_hostInterfaceAddressLabel->setText(tr("IP Address")); m_hostInterfaceAddressLabel->setText(Tr::tr("IP Address"));
m_hostInterfaceAddressLineEdit = new QLineEdit(m_hostInterfaceWidget); m_hostInterfaceAddressLineEdit = new QLineEdit(m_hostInterfaceWidget);
const auto hostInterfaceLayout = new QHBoxLayout(m_hostInterfaceWidget); const auto hostInterfaceLayout = new QHBoxLayout(m_hostInterfaceWidget);
hostInterfaceLayout->setContentsMargins(0, 0, 0, 0); hostInterfaceLayout->setContentsMargins(0, 0, 0, 0);
hostInterfaceLayout->addWidget(m_hostInterfaceComboBox); hostInterfaceLayout->addWidget(m_hostInterfaceComboBox);
hostInterfaceLayout->addWidget(m_hostInterfaceAddressLabel); hostInterfaceLayout->addWidget(m_hostInterfaceAddressLabel);
hostInterfaceLayout->addWidget(m_hostInterfaceAddressLineEdit); hostInterfaceLayout->addWidget(m_hostInterfaceAddressLineEdit);
m_mainLayout->addRow(tr("Host interface:"), m_hostInterfaceWidget); m_mainLayout->addRow(Tr::tr("Host interface:"), m_hostInterfaceWidget);
// Target interface settings. // Target interface settings.
m_targetInterfaceWidget = new QWidget(this); m_targetInterfaceWidget = new QWidget(this);
m_targetInterfaceComboBox = new QComboBox(m_targetInterfaceWidget); m_targetInterfaceComboBox = new QComboBox(m_targetInterfaceWidget);
m_targetInterfaceSpeedLabel = new QLabel(m_targetInterfaceWidget); m_targetInterfaceSpeedLabel = new QLabel(m_targetInterfaceWidget);
m_targetInterfaceSpeedLabel->setText(tr("Speed")); m_targetInterfaceSpeedLabel->setText(Tr::tr("Speed"));
m_targetInterfaceSpeedComboBox = new QComboBox(m_targetInterfaceWidget); m_targetInterfaceSpeedComboBox = new QComboBox(m_targetInterfaceWidget);
const auto targetInterfaceLayout = new QHBoxLayout(m_targetInterfaceWidget); const auto targetInterfaceLayout = new QHBoxLayout(m_targetInterfaceWidget);
targetInterfaceLayout->setContentsMargins(0, 0, 0, 0); targetInterfaceLayout->setContentsMargins(0, 0, 0, 0);
targetInterfaceLayout->addWidget(m_targetInterfaceComboBox); targetInterfaceLayout->addWidget(m_targetInterfaceComboBox);
targetInterfaceLayout->addWidget(m_targetInterfaceSpeedLabel); targetInterfaceLayout->addWidget(m_targetInterfaceSpeedLabel);
targetInterfaceLayout->addWidget(m_targetInterfaceSpeedComboBox); targetInterfaceLayout->addWidget(m_targetInterfaceSpeedComboBox);
m_mainLayout->addRow(tr("Target interface:"), m_targetInterfaceWidget); m_mainLayout->addRow(Tr::tr("Target interface:"), m_targetInterfaceWidget);
m_jlinkDeviceLineEdit = new QLineEdit(this); m_jlinkDeviceLineEdit = new QLineEdit(this);
m_mainLayout->addRow(tr("Device:"), m_jlinkDeviceLineEdit); m_mainLayout->addRow(Tr::tr("Device:"), m_jlinkDeviceLineEdit);
m_additionalArgumentsTextEdit = new QPlainTextEdit(this); m_additionalArgumentsTextEdit = new QPlainTextEdit(this);
m_mainLayout->addRow(tr("Additional arguments:"), m_additionalArgumentsTextEdit); m_mainLayout->addRow(Tr::tr("Additional arguments:"), m_additionalArgumentsTextEdit);
m_initCommandsTextEdit = new QPlainTextEdit(this); m_initCommandsTextEdit = new QPlainTextEdit(this);
m_initCommandsTextEdit->setToolTip(defaultInitCommandsTooltip()); m_initCommandsTextEdit->setToolTip(defaultInitCommandsTooltip());
m_mainLayout->addRow(tr("Init commands:"), m_initCommandsTextEdit); m_mainLayout->addRow(Tr::tr("Init commands:"), m_initCommandsTextEdit);
m_resetCommandsTextEdit = new QPlainTextEdit(this); m_resetCommandsTextEdit = new QPlainTextEdit(this);
m_resetCommandsTextEdit->setToolTip(defaultResetCommandsTooltip()); m_resetCommandsTextEdit->setToolTip(defaultResetCommandsTooltip());
m_mainLayout->addRow(tr("Reset commands:"), m_resetCommandsTextEdit); m_mainLayout->addRow(Tr::tr("Reset commands:"), m_resetCommandsTextEdit);
populateHostInterfaces(); populateHostInterfaces();
populateTargetInterfaces(); populateTargetInterfaces();
@@ -297,26 +297,26 @@ void JLinkGdbServerProviderConfigWidget::discard()
void JLinkGdbServerProviderConfigWidget::populateHostInterfaces() void JLinkGdbServerProviderConfigWidget::populateHostInterfaces()
{ {
m_hostInterfaceComboBox->addItem(tr("Default")); m_hostInterfaceComboBox->addItem(Tr::tr("Default"));
m_hostInterfaceComboBox->addItem(tr("USB"), "USB"); m_hostInterfaceComboBox->addItem(Tr::tr("USB"), "USB");
m_hostInterfaceComboBox->addItem(tr("TCP/IP"), "IP"); m_hostInterfaceComboBox->addItem(Tr::tr("TCP/IP"), "IP");
} }
void JLinkGdbServerProviderConfigWidget::populateTargetInterfaces() void JLinkGdbServerProviderConfigWidget::populateTargetInterfaces()
{ {
m_targetInterfaceComboBox->addItem(tr("Default")); m_targetInterfaceComboBox->addItem(Tr::tr("Default"));
m_targetInterfaceComboBox->addItem(tr("JTAG"), "JTAG"); m_targetInterfaceComboBox->addItem(Tr::tr("JTAG"), "JTAG");
m_targetInterfaceComboBox->addItem(tr("Compact JTAG"), "cJTAG"); m_targetInterfaceComboBox->addItem(Tr::tr("Compact JTAG"), "cJTAG");
m_targetInterfaceComboBox->addItem(tr("SWD"), "SWD"); m_targetInterfaceComboBox->addItem(Tr::tr("SWD"), "SWD");
m_targetInterfaceComboBox->addItem(tr("Renesas RX FINE"), "FINE"); m_targetInterfaceComboBox->addItem(Tr::tr("Renesas RX FINE"), "FINE");
m_targetInterfaceComboBox->addItem(tr("ICSP"), "ICSP"); m_targetInterfaceComboBox->addItem(Tr::tr("ICSP"), "ICSP");
} }
void JLinkGdbServerProviderConfigWidget::populateTargetSpeeds() void JLinkGdbServerProviderConfigWidget::populateTargetSpeeds()
{ {
m_targetInterfaceSpeedComboBox->addItem(tr("Default")); m_targetInterfaceSpeedComboBox->addItem(Tr::tr("Default"));
m_targetInterfaceSpeedComboBox->addItem(tr("Auto"), "auto"); m_targetInterfaceSpeedComboBox->addItem(Tr::tr("Auto"), "auto");
m_targetInterfaceSpeedComboBox->addItem(tr("Adaptive"), "adaptive"); m_targetInterfaceSpeedComboBox->addItem(Tr::tr("Adaptive"), "adaptive");
const QStringList fixedSpeeds = {"1", "5", "10", "20", "30", "50", "100", "200", "300", const QStringList fixedSpeeds = {"1", "5", "10", "20", "30", "50", "100", "200", "300",
"400", "500", "600", "750", "800", "900", "1000", "1334", "400", "500", "600", "750", "800", "900", "1000", "1334",
@@ -324,7 +324,7 @@ void JLinkGdbServerProviderConfigWidget::populateTargetSpeeds()
"6000", "8000", "9600", "12000", "15000", "20000", "25000", "6000", "8000", "9600", "12000", "15000", "20000", "25000",
"30000", "40000", "50000"}; "30000", "40000", "50000"};
for (const auto &fixedSpeed : fixedSpeeds) for (const auto &fixedSpeed : fixedSpeeds)
m_targetInterfaceSpeedComboBox->addItem(tr("%1 kHz").arg(fixedSpeed), fixedSpeed); m_targetInterfaceSpeedComboBox->addItem(Tr::tr("%1 kHz").arg(fixedSpeed), fixedSpeed);
} }
void JLinkGdbServerProviderConfigWidget::setHostInterface(const QString &newIface) void JLinkGdbServerProviderConfigWidget::setHostInterface(const QString &newIface)
@@ -388,7 +388,6 @@ void JLinkGdbServerProviderConfigWidget::setFromProvider()
m_hostInterfaceAddressLineEdit->setText(p->m_jlinkHostAddr); m_hostInterfaceAddressLineEdit->setText(p->m_jlinkHostAddr);
m_hostWidget->setChannel(p->channel()); m_hostWidget->setChannel(p->channel());
m_initCommandsTextEdit->setPlainText(p->initCommands()); m_initCommandsTextEdit->setPlainText(p->initCommands());
m_jlinkDeviceLineEdit->setText( p->m_jlinkDevice);
m_jlinkDeviceLineEdit->setText(p->m_jlinkDevice); m_jlinkDeviceLineEdit->setText(p->m_jlinkDevice);
m_resetCommandsTextEdit->setPlainText(p->resetCommands()); m_resetCommandsTextEdit->setPlainText(p->resetCommands());
@@ -399,5 +398,4 @@ void JLinkGdbServerProviderConfigWidget::setFromProvider()
updateAllowedControls(); updateAllowedControls();
} }
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -11,8 +11,7 @@ QT_END_NAMESPACE
namespace Utils { class PathChooser; } namespace Utils { class PathChooser; }
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
// JLinkGdbServerProvider // JLinkGdbServerProvider
@@ -62,11 +61,8 @@ public:
class JLinkGdbServerProviderConfigWidget final class JLinkGdbServerProviderConfigWidget final
: public GdbServerProviderConfigWidget : public GdbServerProviderConfigWidget
{ {
Q_OBJECT
public: public:
explicit JLinkGdbServerProviderConfigWidget( explicit JLinkGdbServerProviderConfigWidget(JLinkGdbServerProvider *provider);
JLinkGdbServerProvider *provider);
private: private:
void apply() final; void apply() final;
@@ -103,5 +99,4 @@ private:
QPlainTextEdit *m_resetCommandsTextEdit = nullptr; QPlainTextEdit *m_resetCommandsTextEdit = nullptr;
}; };
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -4,6 +4,7 @@
#include "openocdgdbserverprovider.h" #include "openocdgdbserverprovider.h"
#include <baremetal/baremetalconstants.h> #include <baremetal/baremetalconstants.h>
#include <baremetal/baremetaltr.h>
#include <baremetal/debugserverprovidermanager.h> #include <baremetal/debugserverprovidermanager.h>
#include <utils/fileutils.h> #include <utils/fileutils.h>
@@ -19,8 +20,7 @@
using namespace Utils; using namespace Utils;
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
const char executableFileKeyC[] = "ExecutableFile"; const char executableFileKeyC[] = "ExecutableFile";
const char rootScriptsDirKeyC[] = "RootScriptsDir"; const char rootScriptsDirKeyC[] = "RootScriptsDir";
@@ -35,7 +35,7 @@ OpenOcdGdbServerProvider::OpenOcdGdbServerProvider()
setInitCommands(defaultInitCommands()); setInitCommands(defaultInitCommands());
setResetCommands(defaultResetCommands()); setResetCommands(defaultResetCommands());
setChannel("localhost", 3333); setChannel("localhost", 3333);
setTypeDisplayName(GdbServerProvider::tr("OpenOCD")); setTypeDisplayName(Tr::tr("OpenOCD"));
setConfigurationWidgetCreator([this] { return new OpenOcdGdbServerProviderConfigWidget(this); }); setConfigurationWidgetCreator([this] { return new OpenOcdGdbServerProviderConfigWidget(this); });
} }
@@ -164,7 +164,7 @@ bool OpenOcdGdbServerProvider::operator==(const IDebugServerProvider &other) con
OpenOcdGdbServerProviderFactory::OpenOcdGdbServerProviderFactory() OpenOcdGdbServerProviderFactory::OpenOcdGdbServerProviderFactory()
{ {
setId(Constants::GDBSERVER_OPENOCD_PROVIDER_ID); setId(Constants::GDBSERVER_OPENOCD_PROVIDER_ID);
setDisplayName(GdbServerProvider::tr("OpenOCD")); setDisplayName(Tr::tr("OpenOCD"));
setCreator([] { return new OpenOcdGdbServerProvider; }); setCreator([] { return new OpenOcdGdbServerProvider; });
} }
@@ -177,31 +177,31 @@ OpenOcdGdbServerProviderConfigWidget::OpenOcdGdbServerProviderConfigWidget(
Q_ASSERT(provider); Q_ASSERT(provider);
m_hostWidget = new HostWidget(this); m_hostWidget = new HostWidget(this);
m_mainLayout->addRow(tr("Host:"), m_hostWidget); m_mainLayout->addRow(Tr::tr("Host:"), m_hostWidget);
m_executableFileChooser = new Utils::PathChooser; m_executableFileChooser = new Utils::PathChooser;
m_executableFileChooser->setExpectedKind(Utils::PathChooser::ExistingCommand); m_executableFileChooser->setExpectedKind(Utils::PathChooser::ExistingCommand);
m_executableFileChooser->setCommandVersionArguments({"--version"}); m_executableFileChooser->setCommandVersionArguments({"--version"});
m_mainLayout->addRow(tr("Executable file:"), m_executableFileChooser); m_mainLayout->addRow(Tr::tr("Executable file:"), m_executableFileChooser);
m_rootScriptsDirChooser = new Utils::PathChooser; m_rootScriptsDirChooser = new Utils::PathChooser;
m_rootScriptsDirChooser->setExpectedKind(Utils::PathChooser::Directory); m_rootScriptsDirChooser->setExpectedKind(Utils::PathChooser::Directory);
m_mainLayout->addRow(tr("Root scripts directory:"), m_rootScriptsDirChooser); m_mainLayout->addRow(Tr::tr("Root scripts directory:"), m_rootScriptsDirChooser);
m_configurationFileChooser = new Utils::PathChooser; m_configurationFileChooser = new Utils::PathChooser;
m_configurationFileChooser->setExpectedKind(Utils::PathChooser::File); m_configurationFileChooser->setExpectedKind(Utils::PathChooser::File);
m_configurationFileChooser->setPromptDialogFilter("*.cfg"); m_configurationFileChooser->setPromptDialogFilter("*.cfg");
m_mainLayout->addRow(tr("Configuration file:"), m_configurationFileChooser); m_mainLayout->addRow(Tr::tr("Configuration file:"), m_configurationFileChooser);
m_additionalArgumentsLineEdit = new QLineEdit(this); m_additionalArgumentsLineEdit = new QLineEdit(this);
m_mainLayout->addRow(tr("Additional arguments:"), m_additionalArgumentsLineEdit); m_mainLayout->addRow(Tr::tr("Additional arguments:"), m_additionalArgumentsLineEdit);
m_initCommandsTextEdit = new QPlainTextEdit(this); m_initCommandsTextEdit = new QPlainTextEdit(this);
m_initCommandsTextEdit->setToolTip(defaultInitCommandsTooltip()); m_initCommandsTextEdit->setToolTip(defaultInitCommandsTooltip());
m_mainLayout->addRow(tr("Init commands:"), m_initCommandsTextEdit); m_mainLayout->addRow(Tr::tr("Init commands:"), m_initCommandsTextEdit);
m_resetCommandsTextEdit = new QPlainTextEdit(this); m_resetCommandsTextEdit = new QPlainTextEdit(this);
m_resetCommandsTextEdit->setToolTip(defaultResetCommandsTooltip()); m_resetCommandsTextEdit->setToolTip(defaultResetCommandsTooltip());
m_mainLayout->addRow(tr("Reset commands:"), m_resetCommandsTextEdit); m_mainLayout->addRow(Tr::tr("Reset commands:"), m_resetCommandsTextEdit);
addErrorLabel(); addErrorLabel();
setFromProvider(); setFromProvider();
@@ -274,5 +274,4 @@ void OpenOcdGdbServerProviderConfigWidget::setFromProvider()
m_resetCommandsTextEdit->setPlainText(p->resetCommands()); m_resetCommandsTextEdit->setPlainText(p->resetCommands());
} }
} // namespace Internal } // BareMetal::Internal
} // namespace ProjectExplorer

View File

@@ -11,8 +11,7 @@ QT_END_NAMESPACE
namespace Utils { class PathChooser; } namespace Utils { class PathChooser; }
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
// OpenOcdGdbServerProvider // OpenOcdGdbServerProvider
@@ -59,11 +58,8 @@ public:
class OpenOcdGdbServerProviderConfigWidget final class OpenOcdGdbServerProviderConfigWidget final
: public GdbServerProviderConfigWidget : public GdbServerProviderConfigWidget
{ {
Q_OBJECT
public: public:
explicit OpenOcdGdbServerProviderConfigWidget( explicit OpenOcdGdbServerProviderConfigWidget(OpenOcdGdbServerProvider *provider);
OpenOcdGdbServerProvider *provider);
private: private:
void apply() final; void apply() final;
@@ -81,5 +77,4 @@ private:
QPlainTextEdit *m_resetCommandsTextEdit = nullptr; QPlainTextEdit *m_resetCommandsTextEdit = nullptr;
}; };
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -4,9 +4,10 @@
#include "stlinkutilgdbserverprovider.h" #include "stlinkutilgdbserverprovider.h"
#include <baremetal/baremetalconstants.h> #include <baremetal/baremetalconstants.h>
#include <baremetal/baremetaltr.h>
#include <baremetal/debugserverprovidermanager.h> #include <baremetal/debugserverprovidermanager.h>
#include <utils/fileutils.h> #include <utils/filepath.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
#include <utils/qtcassert.h> #include <utils/qtcassert.h>
#include <utils/variablechooser.h> #include <utils/variablechooser.h>
@@ -19,8 +20,7 @@
using namespace Utils; using namespace Utils;
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
const char executableFileKeyC[] = "ExecutableFile"; const char executableFileKeyC[] = "ExecutableFile";
const char verboseLevelKeyC[] = "VerboseLevel"; const char verboseLevelKeyC[] = "VerboseLevel";
@@ -36,7 +36,7 @@ StLinkUtilGdbServerProvider::StLinkUtilGdbServerProvider()
setInitCommands(defaultInitCommands()); setInitCommands(defaultInitCommands());
setResetCommands(defaultResetCommands()); setResetCommands(defaultResetCommands());
setChannel("localhost", 4242); setChannel("localhost", 4242);
setTypeDisplayName(GdbServerProvider::tr("ST-LINK Utility")); setTypeDisplayName(Tr::tr("ST-LINK Utility"));
setConfigurationWidgetCreator([this] { return new StLinkUtilGdbServerProviderConfigWidget(this); }); setConfigurationWidgetCreator([this] { return new StLinkUtilGdbServerProviderConfigWidget(this); });
} }
@@ -151,7 +151,7 @@ bool StLinkUtilGdbServerProvider::operator==(const IDebugServerProvider &other)
StLinkUtilGdbServerProviderFactory::StLinkUtilGdbServerProviderFactory() StLinkUtilGdbServerProviderFactory::StLinkUtilGdbServerProviderFactory()
{ {
setId(Constants::GDBSERVER_STLINK_UTIL_PROVIDER_ID); setId(Constants::GDBSERVER_STLINK_UTIL_PROVIDER_ID);
setDisplayName(GdbServerProvider::tr("ST-LINK Utility")); setDisplayName(Tr::tr("ST-LINK Utility"));
setCreator([] { return new StLinkUtilGdbServerProvider; }); setCreator([] { return new StLinkUtilGdbServerProvider; });
} }
@@ -164,36 +164,36 @@ StLinkUtilGdbServerProviderConfigWidget::StLinkUtilGdbServerProviderConfigWidget
Q_ASSERT(p); Q_ASSERT(p);
m_hostWidget = new HostWidget(this); m_hostWidget = new HostWidget(this);
m_mainLayout->addRow(tr("Host:"), m_hostWidget); m_mainLayout->addRow(Tr::tr("Host:"), m_hostWidget);
m_executableFileChooser = new Utils::PathChooser; m_executableFileChooser = new Utils::PathChooser;
m_executableFileChooser->setExpectedKind(Utils::PathChooser::ExistingCommand); m_executableFileChooser->setExpectedKind(Utils::PathChooser::ExistingCommand);
m_mainLayout->addRow(tr("Executable file:"), m_executableFileChooser); m_mainLayout->addRow(Tr::tr("Executable file:"), m_executableFileChooser);
m_verboseLevelSpinBox = new QSpinBox; m_verboseLevelSpinBox = new QSpinBox;
m_verboseLevelSpinBox->setRange(0, 99); m_verboseLevelSpinBox->setRange(0, 99);
m_verboseLevelSpinBox->setToolTip(tr("Specify the verbosity level (0..99).")); m_verboseLevelSpinBox->setToolTip(Tr::tr("Specify the verbosity level (0..99)."));
m_mainLayout->addRow(tr("Verbosity level:"), m_verboseLevelSpinBox); m_mainLayout->addRow(Tr::tr("Verbosity level:"), m_verboseLevelSpinBox);
m_extendedModeCheckBox = new QCheckBox; m_extendedModeCheckBox = new QCheckBox;
m_extendedModeCheckBox->setToolTip(tr("Continue listening for connections " m_extendedModeCheckBox->setToolTip(Tr::tr("Continue listening for connections "
"after disconnect.")); "after disconnect."));
m_mainLayout->addRow(tr("Extended mode:"), m_extendedModeCheckBox); m_mainLayout->addRow(Tr::tr("Extended mode:"), m_extendedModeCheckBox);
m_resetBoardCheckBox = new QCheckBox; m_resetBoardCheckBox = new QCheckBox;
m_resetBoardCheckBox->setToolTip(tr("Reset board on connection.")); m_resetBoardCheckBox->setToolTip(Tr::tr("Reset board on connection."));
m_mainLayout->addRow(tr("Reset on connection:"), m_resetBoardCheckBox); m_mainLayout->addRow(Tr::tr("Reset on connection:"), m_resetBoardCheckBox);
m_transportLayerComboBox = new QComboBox; m_transportLayerComboBox = new QComboBox;
m_transportLayerComboBox->setToolTip(tr("Transport layer type.")); m_transportLayerComboBox->setToolTip(Tr::tr("Transport layer type."));
m_mainLayout->addRow(tr("Version:"), m_transportLayerComboBox); m_mainLayout->addRow(Tr::tr("Version:"), m_transportLayerComboBox);
m_initCommandsTextEdit = new QPlainTextEdit(this); m_initCommandsTextEdit = new QPlainTextEdit(this);
m_initCommandsTextEdit->setToolTip(defaultInitCommandsTooltip()); m_initCommandsTextEdit->setToolTip(defaultInitCommandsTooltip());
m_mainLayout->addRow(tr("Init commands:"), m_initCommandsTextEdit); m_mainLayout->addRow(Tr::tr("Init commands:"), m_initCommandsTextEdit);
m_resetCommandsTextEdit = new QPlainTextEdit(this); m_resetCommandsTextEdit = new QPlainTextEdit(this);
m_resetCommandsTextEdit->setToolTip(defaultResetCommandsTooltip()); m_resetCommandsTextEdit->setToolTip(defaultResetCommandsTooltip());
m_mainLayout->addRow(tr("Reset commands:"), m_resetCommandsTextEdit); m_mainLayout->addRow(Tr::tr("Reset commands:"), m_resetCommandsTextEdit);
populateTransportLayers(); populateTransportLayers();
addErrorLabel(); addErrorLabel();
@@ -273,13 +273,13 @@ void StLinkUtilGdbServerProviderConfigWidget::setTransportLayer(
void StLinkUtilGdbServerProviderConfigWidget::populateTransportLayers() void StLinkUtilGdbServerProviderConfigWidget::populateTransportLayers()
{ {
m_transportLayerComboBox->insertItem( m_transportLayerComboBox->insertItem(
m_transportLayerComboBox->count(), tr("ST-LINK/V1"), m_transportLayerComboBox->count(), Tr::tr("ST-LINK/V1"),
StLinkUtilGdbServerProvider::ScsiOverUsb); StLinkUtilGdbServerProvider::ScsiOverUsb);
m_transportLayerComboBox->insertItem( m_transportLayerComboBox->insertItem(
m_transportLayerComboBox->count(), tr("ST-LINK/V2"), m_transportLayerComboBox->count(), Tr::tr("ST-LINK/V2"),
StLinkUtilGdbServerProvider::RawUsb); StLinkUtilGdbServerProvider::RawUsb);
m_transportLayerComboBox->insertItem( m_transportLayerComboBox->insertItem(
m_transportLayerComboBox->count(), tr("Keep unspecified"), m_transportLayerComboBox->count(), Tr::tr("Keep unspecified"),
StLinkUtilGdbServerProvider::UnspecifiedTransport); StLinkUtilGdbServerProvider::UnspecifiedTransport);
} }
@@ -299,5 +299,4 @@ void StLinkUtilGdbServerProviderConfigWidget::setFromProvider()
m_resetCommandsTextEdit->setPlainText(p->resetCommands()); m_resetCommandsTextEdit->setPlainText(p->resetCommands());
} }
} // namespace Internal } // ProjectExplorer::Internal
} // namespace ProjectExplorer

View File

@@ -12,8 +12,7 @@ QT_END_NAMESPACE
namespace Utils { class PathChooser; } namespace Utils { class PathChooser; }
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
// StLinkUtilGdbServerProvider // StLinkUtilGdbServerProvider
@@ -63,11 +62,8 @@ public:
class StLinkUtilGdbServerProviderConfigWidget final class StLinkUtilGdbServerProviderConfigWidget final
: public GdbServerProviderConfigWidget : public GdbServerProviderConfigWidget
{ {
Q_OBJECT
public: public:
explicit StLinkUtilGdbServerProviderConfigWidget( explicit StLinkUtilGdbServerProviderConfigWidget(StLinkUtilGdbServerProvider *provider);
StLinkUtilGdbServerProvider *provider);
private: private:
void apply() final; void apply() final;
@@ -90,5 +86,4 @@ private:
QPlainTextEdit *m_resetCommandsTextEdit = nullptr; QPlainTextEdit *m_resetCommandsTextEdit = nullptr;
}; };
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -8,6 +8,7 @@
#include <baremetal/baremetalconstants.h> #include <baremetal/baremetalconstants.h>
#include <baremetal/baremetaldebugsupport.h> #include <baremetal/baremetaldebugsupport.h>
#include <baremetal/baremetaltr.h>
#include <baremetal/debugserverprovidermanager.h> #include <baremetal/debugserverprovidermanager.h>
#include <debugger/debuggerruncontrol.h> #include <debugger/debuggerruncontrol.h>
@@ -25,8 +26,7 @@ using namespace Debugger;
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils; using namespace Utils;
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
using namespace Uv; using namespace Uv;
@@ -155,7 +155,7 @@ bool JLinkUvscAdapterOptions::operator==(const JLinkUvscAdapterOptions &other) c
JLinkUvscServerProvider::JLinkUvscServerProvider() JLinkUvscServerProvider::JLinkUvscServerProvider()
: UvscServerProvider(Constants::UVSC_JLINK_PROVIDER_ID) : UvscServerProvider(Constants::UVSC_JLINK_PROVIDER_ID)
{ {
setTypeDisplayName(UvscServerProvider::tr("uVision JLink")); setTypeDisplayName(Tr::tr("uVision JLink"));
setConfigurationWidgetCreator([this] { return new JLinkUvscServerProviderConfigWidget(this); }); setConfigurationWidgetCreator([this] { return new JLinkUvscServerProviderConfigWidget(this); });
setSupportedDrivers({"Segger\\JL2CM3.dll"}); setSupportedDrivers({"Segger\\JL2CM3.dll"});
} }
@@ -192,8 +192,7 @@ FilePath JLinkUvscServerProvider::optionsFilePath(DebuggerRunTool *runTool,
Uv::ProjectOptionsWriter writer(&ofs); Uv::ProjectOptionsWriter writer(&ofs);
const JLinkUvProjectOptions projectOptions(this); const JLinkUvProjectOptions projectOptions(this);
if (!writer.write(&projectOptions)) { if (!writer.write(&projectOptions)) {
errorMessage = BareMetalDebugSupport::tr( errorMessage = Tr::tr("Unable to create a uVision project options template.");
"Unable to create a uVision project options template.");
return {}; return {};
} }
return optionsPath; return optionsPath;
@@ -204,7 +203,7 @@ FilePath JLinkUvscServerProvider::optionsFilePath(DebuggerRunTool *runTool,
JLinkUvscServerProviderFactory::JLinkUvscServerProviderFactory() JLinkUvscServerProviderFactory::JLinkUvscServerProviderFactory()
{ {
setId(Constants::UVSC_JLINK_PROVIDER_ID); setId(Constants::UVSC_JLINK_PROVIDER_ID);
setDisplayName(UvscServerProvider::tr("uVision JLink")); setDisplayName(Tr::tr("uVision JLink"));
setCreator([] { return new JLinkUvscServerProvider; }); setCreator([] { return new JLinkUvscServerProvider; });
} }
@@ -217,7 +216,7 @@ JLinkUvscServerProviderConfigWidget::JLinkUvscServerProviderConfigWidget(
Q_ASSERT(p); Q_ASSERT(p);
m_adapterOptionsWidget = new JLinkUvscAdapterOptionsWidget; m_adapterOptionsWidget = new JLinkUvscAdapterOptionsWidget;
m_mainLayout->addRow(tr("Adapter options:"), m_adapterOptionsWidget); m_mainLayout->addRow(Tr::tr("Adapter options:"), m_adapterOptionsWidget);
setFromProvider(); setFromProvider();
@@ -265,10 +264,10 @@ JLinkUvscAdapterOptionsWidget::JLinkUvscAdapterOptionsWidget(QWidget *parent)
{ {
const auto layout = new QHBoxLayout; const auto layout = new QHBoxLayout;
layout->setContentsMargins(0, 0, 0, 0); layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(new QLabel(tr("Port:"))); layout->addWidget(new QLabel(Tr::tr("Port:")));
m_portBox = new QComboBox; m_portBox = new QComboBox;
layout->addWidget(m_portBox); layout->addWidget(m_portBox);
layout->addWidget(new QLabel(tr("Speed:"))); layout->addWidget(new QLabel(Tr::tr("Speed:")));
m_speedBox = new QComboBox; m_speedBox = new QComboBox;
layout->addWidget(m_speedBox); layout->addWidget(m_speedBox);
setLayout(layout); setLayout(layout);
@@ -324,26 +323,25 @@ JLinkUvscAdapterOptions::Speed JLinkUvscAdapterOptionsWidget::speedAt(int index)
void JLinkUvscAdapterOptionsWidget::populatePorts() void JLinkUvscAdapterOptionsWidget::populatePorts()
{ {
m_portBox->addItem(tr("JTAG"), JLinkUvscAdapterOptions::JTAG); m_portBox->addItem(Tr::tr("JTAG"), JLinkUvscAdapterOptions::JTAG);
m_portBox->addItem(tr("SWD"), JLinkUvscAdapterOptions::SWD); m_portBox->addItem(Tr::tr("SWD"), JLinkUvscAdapterOptions::SWD);
} }
void JLinkUvscAdapterOptionsWidget::populateSpeeds() void JLinkUvscAdapterOptionsWidget::populateSpeeds()
{ {
m_speedBox->clear(); m_speedBox->clear();
m_speedBox->addItem(tr("50MHz"), JLinkUvscAdapterOptions::Speed_50MHz); m_speedBox->addItem(Tr::tr("50MHz"), JLinkUvscAdapterOptions::Speed_50MHz);
m_speedBox->addItem(tr("33MHz"), JLinkUvscAdapterOptions::Speed_33MHz); m_speedBox->addItem(Tr::tr("33MHz"), JLinkUvscAdapterOptions::Speed_33MHz);
m_speedBox->addItem(tr("25MHz"), JLinkUvscAdapterOptions::Speed_25MHz); m_speedBox->addItem(Tr::tr("25MHz"), JLinkUvscAdapterOptions::Speed_25MHz);
m_speedBox->addItem(tr("20MHz"), JLinkUvscAdapterOptions::Speed_20MHz); m_speedBox->addItem(Tr::tr("20MHz"), JLinkUvscAdapterOptions::Speed_20MHz);
m_speedBox->addItem(tr("10MHz"), JLinkUvscAdapterOptions::Speed_10MHz); m_speedBox->addItem(Tr::tr("10MHz"), JLinkUvscAdapterOptions::Speed_10MHz);
m_speedBox->addItem(tr("5MHz"), JLinkUvscAdapterOptions::Speed_5MHz); m_speedBox->addItem(Tr::tr("5MHz"), JLinkUvscAdapterOptions::Speed_5MHz);
m_speedBox->addItem(tr("3MHz"), JLinkUvscAdapterOptions::Speed_3MHz); m_speedBox->addItem(Tr::tr("3MHz"), JLinkUvscAdapterOptions::Speed_3MHz);
m_speedBox->addItem(tr("2MHz"), JLinkUvscAdapterOptions::Speed_2MHz); m_speedBox->addItem(Tr::tr("2MHz"), JLinkUvscAdapterOptions::Speed_2MHz);
m_speedBox->addItem(tr("1MHz"), JLinkUvscAdapterOptions::Speed_1MHz); m_speedBox->addItem(Tr::tr("1MHz"), JLinkUvscAdapterOptions::Speed_1MHz);
m_speedBox->addItem(tr("500kHz"), JLinkUvscAdapterOptions::Speed_500kHz); m_speedBox->addItem(Tr::tr("500kHz"), JLinkUvscAdapterOptions::Speed_500kHz);
m_speedBox->addItem(tr("200kHz"), JLinkUvscAdapterOptions::Speed_200kHz); m_speedBox->addItem(Tr::tr("200kHz"), JLinkUvscAdapterOptions::Speed_200kHz);
m_speedBox->addItem(tr("100kHz"), JLinkUvscAdapterOptions::Speed_100kHz); m_speedBox->addItem(Tr::tr("100kHz"), JLinkUvscAdapterOptions::Speed_100kHz);
} }
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -9,8 +9,7 @@ QT_BEGIN_NAMESPACE
class QComboBox; class QComboBox;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
// JLinkUvscAdapterOptions // JLinkUvscAdapterOptions
@@ -66,8 +65,6 @@ public:
class JLinkUvscAdapterOptionsWidget; class JLinkUvscAdapterOptionsWidget;
class JLinkUvscServerProviderConfigWidget final : public UvscServerProviderConfigWidget class JLinkUvscServerProviderConfigWidget final : public UvscServerProviderConfigWidget
{ {
Q_OBJECT
public: public:
explicit JLinkUvscServerProviderConfigWidget(JLinkUvscServerProvider *provider); explicit JLinkUvscServerProviderConfigWidget(JLinkUvscServerProvider *provider);
@@ -107,5 +104,4 @@ private:
QComboBox *m_speedBox = nullptr; QComboBox *m_speedBox = nullptr;
}; };
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -8,6 +8,7 @@
#include <baremetal/baremetalconstants.h> #include <baremetal/baremetalconstants.h>
#include <baremetal/baremetaldebugsupport.h> #include <baremetal/baremetaldebugsupport.h>
#include <baremetal/baremetaltr.h>
#include <baremetal/debugserverprovidermanager.h> #include <baremetal/debugserverprovidermanager.h>
#include <debugger/debuggerruncontrol.h> #include <debugger/debuggerruncontrol.h>
@@ -23,8 +24,7 @@ using namespace Debugger;
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils; using namespace Utils;
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
using namespace Uv; using namespace Uv;
@@ -60,7 +60,7 @@ public:
SimulatorUvscServerProvider::SimulatorUvscServerProvider() SimulatorUvscServerProvider::SimulatorUvscServerProvider()
: UvscServerProvider(Constants::UVSC_SIMULATOR_PROVIDER_ID) : UvscServerProvider(Constants::UVSC_SIMULATOR_PROVIDER_ID)
{ {
setTypeDisplayName(UvscServerProvider::tr("uVision Simulator")); setTypeDisplayName(Tr::tr("uVision Simulator"));
setConfigurationWidgetCreator([this] { return new SimulatorUvscServerProviderConfigWidget(this); }); setConfigurationWidgetCreator([this] { return new SimulatorUvscServerProviderConfigWidget(this); });
setDriverSelection(defaultSimulatorDriverSelection()); setDriverSelection(defaultSimulatorDriverSelection());
} }
@@ -96,8 +96,7 @@ FilePath SimulatorUvscServerProvider::optionsFilePath(DebuggerRunTool *runTool,
Uv::ProjectOptionsWriter writer(&ofs); Uv::ProjectOptionsWriter writer(&ofs);
const SimulatorUvProjectOptions projectOptions(this); const SimulatorUvProjectOptions projectOptions(this);
if (!writer.write(&projectOptions)) { if (!writer.write(&projectOptions)) {
errorMessage = BareMetalDebugSupport::tr( errorMessage = Tr::tr("Unable to create a uVision project options template.");
"Unable to create a uVision project options template.");
return {}; return {};
} }
return optionsPath; return optionsPath;
@@ -108,7 +107,7 @@ FilePath SimulatorUvscServerProvider::optionsFilePath(DebuggerRunTool *runTool,
SimulatorUvscServerProviderFactory::SimulatorUvscServerProviderFactory() SimulatorUvscServerProviderFactory::SimulatorUvscServerProviderFactory()
{ {
setId(Constants::UVSC_SIMULATOR_PROVIDER_ID); setId(Constants::UVSC_SIMULATOR_PROVIDER_ID);
setDisplayName(UvscServerProvider::tr("uVision Simulator")); setDisplayName(Tr::tr("uVision Simulator"));
setCreator([] { return new SimulatorUvscServerProvider; }); setCreator([] { return new SimulatorUvscServerProvider; });
} }
@@ -121,8 +120,8 @@ SimulatorUvscServerProviderConfigWidget::SimulatorUvscServerProviderConfigWidget
Q_ASSERT(p); Q_ASSERT(p);
m_limitSpeedCheckBox = new QCheckBox; m_limitSpeedCheckBox = new QCheckBox;
m_limitSpeedCheckBox->setToolTip(tr("Limit speed to real-time.")); m_limitSpeedCheckBox->setToolTip(Tr::tr("Limit speed to real-time."));
m_mainLayout->addRow(tr("Limit speed to real-time:"), m_limitSpeedCheckBox); m_mainLayout->addRow(Tr::tr("Limit speed to real-time:"), m_limitSpeedCheckBox);
setFromProvider(); setFromProvider();
@@ -152,5 +151,4 @@ void SimulatorUvscServerProviderConfigWidget::setFromProvider()
m_limitSpeedCheckBox->setChecked(p->m_limitSpeed); m_limitSpeedCheckBox->setChecked(p->m_limitSpeed);
} }
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -9,8 +9,7 @@ QT_BEGIN_NAMESPACE
class QCheckBox; class QCheckBox;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
// SimulatorUvscServerProvider // SimulatorUvscServerProvider
@@ -48,8 +47,6 @@ public:
class SimulatorUvscServerProviderConfigWidget final : public UvscServerProviderConfigWidget class SimulatorUvscServerProviderConfigWidget final : public UvscServerProviderConfigWidget
{ {
Q_OBJECT
public: public:
explicit SimulatorUvscServerProviderConfigWidget(SimulatorUvscServerProvider *provider); explicit SimulatorUvscServerProviderConfigWidget(SimulatorUvscServerProvider *provider);
@@ -62,5 +59,4 @@ private:
QCheckBox *m_limitSpeedCheckBox = nullptr; QCheckBox *m_limitSpeedCheckBox = nullptr;
}; };
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -7,6 +7,7 @@
#include "uvprojectwriter.h" #include "uvprojectwriter.h"
#include <baremetal/baremetalconstants.h> #include <baremetal/baremetalconstants.h>
#include <baremetal/baremetaltr.h>
#include <baremetal/baremetaldebugsupport.h> #include <baremetal/baremetaldebugsupport.h>
#include <baremetal/debugserverprovidermanager.h> #include <baremetal/debugserverprovidermanager.h>
@@ -25,8 +26,7 @@ using namespace Debugger;
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils; using namespace Utils;
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
using namespace Uv; using namespace Uv;
@@ -111,7 +111,7 @@ bool StLinkUvscAdapterOptions::operator==(const StLinkUvscAdapterOptions &other)
StLinkUvscServerProvider::StLinkUvscServerProvider() StLinkUvscServerProvider::StLinkUvscServerProvider()
: UvscServerProvider(Constants::UVSC_STLINK_PROVIDER_ID) : UvscServerProvider(Constants::UVSC_STLINK_PROVIDER_ID)
{ {
setTypeDisplayName(UvscServerProvider::tr("uVision St-Link")); setTypeDisplayName(Tr::tr("uVision St-Link"));
setConfigurationWidgetCreator([this] { return new StLinkUvscServerProviderConfigWidget(this); }); setConfigurationWidgetCreator([this] { return new StLinkUvscServerProviderConfigWidget(this); });
setSupportedDrivers({"STLink\\ST-LINKIII-KEIL_SWO.dll"}); setSupportedDrivers({"STLink\\ST-LINKIII-KEIL_SWO.dll"});
} }
@@ -148,8 +148,7 @@ FilePath StLinkUvscServerProvider::optionsFilePath(DebuggerRunTool *runTool,
Uv::ProjectOptionsWriter writer(&ofs); Uv::ProjectOptionsWriter writer(&ofs);
const StLinkUvProjectOptions projectOptions(this); const StLinkUvProjectOptions projectOptions(this);
if (!writer.write(&projectOptions)) { if (!writer.write(&projectOptions)) {
errorMessage = BareMetalDebugSupport::tr( errorMessage = Tr::tr("Unable to create a uVision project options template.");
"Unable to create a uVision project options template.");
return {}; return {};
} }
return optionsPath; return optionsPath;
@@ -160,7 +159,7 @@ FilePath StLinkUvscServerProvider::optionsFilePath(DebuggerRunTool *runTool,
StLinkUvscServerProviderFactory::StLinkUvscServerProviderFactory() StLinkUvscServerProviderFactory::StLinkUvscServerProviderFactory()
{ {
setId(Constants::UVSC_STLINK_PROVIDER_ID); setId(Constants::UVSC_STLINK_PROVIDER_ID);
setDisplayName(UvscServerProvider::tr("uVision St-Link")); setDisplayName(Tr::tr("uVision St-Link"));
setCreator([] { return new StLinkUvscServerProvider; }); setCreator([] { return new StLinkUvscServerProvider; });
} }
@@ -173,7 +172,7 @@ StLinkUvscServerProviderConfigWidget::StLinkUvscServerProviderConfigWidget(
Q_ASSERT(p); Q_ASSERT(p);
m_adapterOptionsWidget = new StLinkUvscAdapterOptionsWidget; m_adapterOptionsWidget = new StLinkUvscAdapterOptionsWidget;
m_mainLayout->addRow(tr("Adapter options:"), m_adapterOptionsWidget); m_mainLayout->addRow(Tr::tr("Adapter options:"), m_adapterOptionsWidget);
setFromProvider(); setFromProvider();
@@ -221,10 +220,10 @@ StLinkUvscAdapterOptionsWidget::StLinkUvscAdapterOptionsWidget(QWidget *parent)
{ {
const auto layout = new QHBoxLayout; const auto layout = new QHBoxLayout;
layout->setContentsMargins(0, 0, 0, 0); layout->setContentsMargins(0, 0, 0, 0);
layout->addWidget(new QLabel(tr("Port:"))); layout->addWidget(new QLabel(Tr::tr("Port:")));
m_portBox = new QComboBox; m_portBox = new QComboBox;
layout->addWidget(m_portBox); layout->addWidget(m_portBox);
layout->addWidget(new QLabel(tr("Speed:"))); layout->addWidget(new QLabel(Tr::tr("Speed:")));
m_speedBox = new QComboBox; m_speedBox = new QComboBox;
layout->addWidget(m_speedBox); layout->addWidget(m_speedBox);
setLayout(layout); setLayout(layout);
@@ -280,8 +279,8 @@ StLinkUvscAdapterOptions::Speed StLinkUvscAdapterOptionsWidget::speedAt(int inde
void StLinkUvscAdapterOptionsWidget::populatePorts() void StLinkUvscAdapterOptionsWidget::populatePorts()
{ {
m_portBox->addItem(tr("JTAG"), StLinkUvscAdapterOptions::JTAG); m_portBox->addItem(Tr::tr("JTAG"), StLinkUvscAdapterOptions::JTAG);
m_portBox->addItem(tr("SWD"), StLinkUvscAdapterOptions::SWD); m_portBox->addItem(Tr::tr("SWD"), StLinkUvscAdapterOptions::SWD);
} }
void StLinkUvscAdapterOptionsWidget::populateSpeeds() void StLinkUvscAdapterOptionsWidget::populateSpeeds()
@@ -290,27 +289,26 @@ void StLinkUvscAdapterOptionsWidget::populateSpeeds()
const auto port = portAt(m_portBox->currentIndex()); const auto port = portAt(m_portBox->currentIndex());
if (port == StLinkUvscAdapterOptions::JTAG) { if (port == StLinkUvscAdapterOptions::JTAG) {
m_speedBox->addItem(tr("9MHz"), StLinkUvscAdapterOptions::Speed_9MHz); m_speedBox->addItem(Tr::tr("9MHz"), StLinkUvscAdapterOptions::Speed_9MHz);
m_speedBox->addItem(tr("4.5MHz"), StLinkUvscAdapterOptions::Speed_4_5MHz); m_speedBox->addItem(Tr::tr("4.5MHz"), StLinkUvscAdapterOptions::Speed_4_5MHz);
m_speedBox->addItem(tr("2.25MHz"), StLinkUvscAdapterOptions::Speed_2_25MHz); m_speedBox->addItem(Tr::tr("2.25MHz"), StLinkUvscAdapterOptions::Speed_2_25MHz);
m_speedBox->addItem(tr("1.12MHz"), StLinkUvscAdapterOptions::Speed_1_12MHz); m_speedBox->addItem(Tr::tr("1.12MHz"), StLinkUvscAdapterOptions::Speed_1_12MHz);
m_speedBox->addItem(tr("560kHz"), StLinkUvscAdapterOptions::Speed_560kHz); m_speedBox->addItem(Tr::tr("560kHz"), StLinkUvscAdapterOptions::Speed_560kHz);
m_speedBox->addItem(tr("280kHz"), StLinkUvscAdapterOptions::Speed_280kHz); m_speedBox->addItem(Tr::tr("280kHz"), StLinkUvscAdapterOptions::Speed_280kHz);
m_speedBox->addItem(tr("140kHz"), StLinkUvscAdapterOptions::Speed_140kHz); m_speedBox->addItem(Tr::tr("140kHz"), StLinkUvscAdapterOptions::Speed_140kHz);
} else if (port == StLinkUvscAdapterOptions::SWD) { } else if (port == StLinkUvscAdapterOptions::SWD) {
m_speedBox->addItem(tr("4MHz"), StLinkUvscAdapterOptions::Speed_4MHz); m_speedBox->addItem(Tr::tr("4MHz"), StLinkUvscAdapterOptions::Speed_4MHz);
m_speedBox->addItem(tr("1.8MHz"), StLinkUvscAdapterOptions::Speed_1_8MHz); m_speedBox->addItem(Tr::tr("1.8MHz"), StLinkUvscAdapterOptions::Speed_1_8MHz);
m_speedBox->addItem(tr("950kHz"), StLinkUvscAdapterOptions::Speed_950kHz); m_speedBox->addItem(Tr::tr("950kHz"), StLinkUvscAdapterOptions::Speed_950kHz);
m_speedBox->addItem(tr("480kHz"), StLinkUvscAdapterOptions::Speed_480kHz); m_speedBox->addItem(Tr::tr("480kHz"), StLinkUvscAdapterOptions::Speed_480kHz);
m_speedBox->addItem(tr("240kHz"), StLinkUvscAdapterOptions::Speed_240kHz); m_speedBox->addItem(Tr::tr("240kHz"), StLinkUvscAdapterOptions::Speed_240kHz);
m_speedBox->addItem(tr("125kHz"), StLinkUvscAdapterOptions::Speed_125kHz); m_speedBox->addItem(Tr::tr("125kHz"), StLinkUvscAdapterOptions::Speed_125kHz);
m_speedBox->addItem(tr("100kHz"), StLinkUvscAdapterOptions::Speed_100kHz); m_speedBox->addItem(Tr::tr("100kHz"), StLinkUvscAdapterOptions::Speed_100kHz);
m_speedBox->addItem(tr("50kHz"), StLinkUvscAdapterOptions::Speed_50kHz); m_speedBox->addItem(Tr::tr("50kHz"), StLinkUvscAdapterOptions::Speed_50kHz);
m_speedBox->addItem(tr("25kHz"), StLinkUvscAdapterOptions::Speed_25kHz); m_speedBox->addItem(Tr::tr("25kHz"), StLinkUvscAdapterOptions::Speed_25kHz);
m_speedBox->addItem(tr("15kHz"), StLinkUvscAdapterOptions::Speed_15kHz); m_speedBox->addItem(Tr::tr("15kHz"), StLinkUvscAdapterOptions::Speed_15kHz);
m_speedBox->addItem(tr("5kHz"), StLinkUvscAdapterOptions::Speed_5kHz); m_speedBox->addItem(Tr::tr("5kHz"), StLinkUvscAdapterOptions::Speed_5kHz);
} }
} }
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -9,8 +9,7 @@ QT_BEGIN_NAMESPACE
class QComboBox; class QComboBox;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
// StLinkUvscAdapterOptions // StLinkUvscAdapterOptions
@@ -69,8 +68,6 @@ public:
class StLinkUvscAdapterOptionsWidget; class StLinkUvscAdapterOptionsWidget;
class StLinkUvscServerProviderConfigWidget final : public UvscServerProviderConfigWidget class StLinkUvscServerProviderConfigWidget final : public UvscServerProviderConfigWidget
{ {
Q_OBJECT
public: public:
explicit StLinkUvscServerProviderConfigWidget(StLinkUvscServerProvider *provider); explicit StLinkUvscServerProviderConfigWidget(StLinkUvscServerProvider *provider);
@@ -110,5 +107,4 @@ private:
QComboBox *m_speedBox = nullptr; QComboBox *m_speedBox = nullptr;
}; };
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -21,9 +21,7 @@ using namespace Debugger;
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils; using namespace Utils;
namespace BareMetal { namespace BareMetal::Internal::Uv {
namespace Internal {
namespace Uv {
const char kProjectSchema[] = "2.1"; const char kProjectSchema[] = "2.1";
@@ -238,6 +236,4 @@ ProjectOptions::ProjectOptions(const UvscServerProvider *provider)
m_debugOpt->appendProperty("uTrg", int(!useSimulator)); m_debugOpt->appendProperty("uTrg", int(!useSimulator));
} }
} // namespace Uv } // namespace BareMetal::Internal::Uv
} // namespace Internal
} // namespace BareMetal

View File

@@ -10,8 +10,7 @@
namespace Debugger { class DebuggerRunTool; } namespace Debugger { class DebuggerRunTool; }
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
class UvscServerProvider; class UvscServerProvider;
@@ -49,6 +48,6 @@ protected:
Gen::Xml::PropertyGroup *m_debugOpt = nullptr; Gen::Xml::PropertyGroup *m_debugOpt = nullptr;
}; };
} // namespace Uv } // Uv
} // namespace Internal
} // namespace BareMetal } // BareMetal::Internal

View File

@@ -3,9 +3,7 @@
#include "uvprojectwriter.h" #include "uvprojectwriter.h"
namespace BareMetal { namespace BareMetal::Internal::Uv {
namespace Internal {
namespace Uv {
// ProjectWriter // ProjectWriter
@@ -51,6 +49,4 @@ void ProjectOptionsWriter::visitProjectOptionsEnd(
writer()->writeEndElement(); writer()->writeEndElement();
} }
} // namespace Uv } // BareMetal::Internal::Uv
} // namespace Internal
} // namespace BareMetal

View File

@@ -5,9 +5,7 @@
#include "xmlprojectwriter.h" #include "xmlprojectwriter.h"
namespace BareMetal { namespace BareMetal::Internal::Uv {
namespace Internal {
namespace Uv {
// ProjectWriter // ProjectWriter
@@ -35,6 +33,4 @@ private:
void visitProjectOptionsEnd(const Gen::Xml::ProjectOptions *projectOptions) final; void visitProjectOptionsEnd(const Gen::Xml::ProjectOptions *projectOptions) final;
}; };
} // namespace Uv } // BareMetal::Internal::Uv
} // namespace Internal
} // namespace BareMetal

View File

@@ -1,15 +1,16 @@
// Copyright (C) 2020 Denis Shienkov <denis.shienkov@gmail.com> // Copyright (C) 2020 Denis Shienkov <denis.shienkov@gmail.com>
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "uvscserverprovider.h"
#include "uvproject.h" #include "uvproject.h"
#include "uvprojectwriter.h" #include "uvprojectwriter.h"
#include "uvtargetdeviceviewer.h" #include "uvtargetdeviceviewer.h"
#include "uvtargetdriverviewer.h" #include "uvtargetdriverviewer.h"
#include "uvscserverprovider.h"
#include <baremetal/baremetaldebugsupport.h> #include <baremetal/baremetaldebugsupport.h>
#include <baremetal/baremetaldevice.h> #include <baremetal/baremetaldevice.h>
#include <baremetal/baremetaltr.h>
#include <baremetal/debugserverprovidermanager.h> #include <baremetal/debugserverprovidermanager.h>
#include <debugger/debuggerkitinformation.h> #include <debugger/debuggerkitinformation.h>
@@ -30,8 +31,7 @@ using namespace Debugger;
using namespace ProjectExplorer; using namespace ProjectExplorer;
using namespace Utils; using namespace Utils;
namespace BareMetal { namespace BareMetal::Internal {
namespace Internal {
using namespace Uv; using namespace Uv;
@@ -174,10 +174,10 @@ bool UvscServerProvider::aboutToRun(DebuggerRunTool *runTool, QString &errorMess
const FilePath bin = exeAspect->executable; const FilePath bin = exeAspect->executable;
if (bin.isEmpty()) { if (bin.isEmpty()) {
errorMessage = BareMetalDebugSupport::tr("Cannot debug: Local executable is not set."); errorMessage = Tr::tr("Cannot debug: Local executable is not set.");
return false; return false;
} else if (!bin.exists()) { } else if (!bin.exists()) {
errorMessage = BareMetalDebugSupport::tr( errorMessage = Tr::tr(
"Cannot debug: Could not find executable for \"%1\".").arg(bin.toString()); "Cannot debug: Could not find executable for \"%1\".").arg(bin.toString());
return false; return false;
} }
@@ -236,8 +236,7 @@ FilePath UvscServerProvider::projectFilePath(DebuggerRunTool *runTool, QString &
Uv::ProjectWriter writer(&ofs); Uv::ProjectWriter writer(&ofs);
const Uv::Project project(this, runTool); const Uv::Project project(this, runTool);
if (!writer.write(&project)) { if (!writer.write(&project)) {
errorMessage = BareMetalDebugSupport::tr( errorMessage = Tr::tr("Unable to create a uVision project template.");
"Unable to create a uVision project template.");
return {}; return {};
} }
return projectPath; return projectPath;
@@ -262,16 +261,16 @@ UvscServerProviderConfigWidget::UvscServerProviderConfigWidget(UvscServerProvide
: IDebugServerProviderConfigWidget(provider) : IDebugServerProviderConfigWidget(provider)
{ {
m_hostWidget = new HostWidget; m_hostWidget = new HostWidget;
m_mainLayout->addRow(tr("Host:"), m_hostWidget); m_mainLayout->addRow(Tr::tr("Host:"), m_hostWidget);
m_toolsIniChooser = new PathChooser; m_toolsIniChooser = new PathChooser;
m_toolsIniChooser->setExpectedKind(PathChooser::File); m_toolsIniChooser->setExpectedKind(PathChooser::File);
m_toolsIniChooser->setPromptDialogFilter("tools.ini"); m_toolsIniChooser->setPromptDialogFilter("tools.ini");
m_toolsIniChooser->setPromptDialogTitle(tr("Choose Keil Toolset Configuration File")); m_toolsIniChooser->setPromptDialogTitle(Tr::tr("Choose Keil Toolset Configuration File"));
m_mainLayout->addRow(tr("Tools file path:"), m_toolsIniChooser); m_mainLayout->addRow(Tr::tr("Tools file path:"), m_toolsIniChooser);
m_deviceSelector = new DeviceSelector; m_deviceSelector = new DeviceSelector;
m_mainLayout->addRow(tr("Target device:"), m_deviceSelector); m_mainLayout->addRow(Tr::tr("Target device:"), m_deviceSelector);
m_driverSelector = new DriverSelector(provider->supportedDrivers()); m_driverSelector = new DriverSelector(provider->supportedDrivers());
m_mainLayout->addRow(tr("Target driver:"), m_driverSelector); m_mainLayout->addRow(Tr::tr("Target driver:"), m_driverSelector);
setFromProvider(); setFromProvider();
@@ -371,7 +370,8 @@ UvscServerProviderRunner::UvscServerProviderRunner(ProjectExplorer::RunControl *
void UvscServerProviderRunner::start() void UvscServerProviderRunner::start()
{ {
const QString msg = RunControl::tr("Starting %1 ...").arg(m_process.commandLine().displayName()); const QString msg = Tr::tr("Starting %1 ...")
.arg(m_process.commandLine().displayName());
appendMessage(msg, NormalMessageFormat); appendMessage(msg, NormalMessageFormat);
m_process.start(); m_process.start();
@@ -382,5 +382,4 @@ void UvscServerProviderRunner::stop()
m_process.terminate(); m_process.terminate();
} }
} // namespace Internal } // BareMetal::Internal
} // namespace BareMetal

View File

@@ -28,8 +28,6 @@ class DriverSelector;
class UvscServerProvider : public IDebugServerProvider class UvscServerProvider : public IDebugServerProvider
{ {
Q_DECLARE_TR_FUNCTIONS(BareMetal::Internal::UvscServerProvider)
public: public:
enum ToolsetNumber { enum ToolsetNumber {
UnknownToolsetNumber = -1, UnknownToolsetNumber = -1,

View File

@@ -3,6 +3,8 @@
#include "uvtargetdevicemodel.h" #include "uvtargetdevicemodel.h"
#include <baremetal/baremetaltr.h>
#include <utils/algorithm.h> #include <utils/algorithm.h>
#include <QDirIterator> #include <QDirIterator>
@@ -12,9 +14,7 @@
using namespace Utils; using namespace Utils;
namespace BareMetal { namespace BareMetal::Internal::Uv {
namespace Internal {
namespace Uv {
static QString extractPacksPath(const FilePath &toolsIniFile) static QString extractPacksPath(const FilePath &toolsIniFile)
{ {
@@ -188,7 +188,7 @@ public:
DeviceSelectionModel::DeviceSelectionModel(QObject *parent) DeviceSelectionModel::DeviceSelectionModel(QObject *parent)
: TreeModel<DeviceSelectionItem>(parent) : TreeModel<DeviceSelectionItem>(parent)
{ {
setHeader({tr("Name"), tr("Version"), tr("Vendor")}); setHeader({Tr::tr("Name"), Tr::tr("Version"), Tr::tr("Vendor")});
} }
void DeviceSelectionModel::fillAllPacks(const FilePath &toolsIniFile) void DeviceSelectionModel::fillAllPacks(const FilePath &toolsIniFile)
@@ -478,6 +478,4 @@ DeviceSelection DeviceSelectionView::buildSelection(const DeviceSelectionItem *i
return selection; return selection;
} }
} // namespace Uv } // BareMetal::Internal::Uv
} // namespace Internal
} // namespace BareMetal

View File

@@ -13,9 +13,7 @@ QT_BEGIN_NAMESPACE
class QXmlStreamReader; class QXmlStreamReader;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace BareMetal { namespace BareMetal::Internal::Uv {
namespace Internal {
namespace Uv {
// DeviceSelectionModel // DeviceSelectionModel
@@ -56,6 +54,4 @@ private:
DeviceSelection buildSelection(const DeviceSelectionItem *item) const; DeviceSelection buildSelection(const DeviceSelectionItem *item) const;
}; };
} // namespace Uv } // BareMetal::Internal::Uv
} // namespace Internal
} // namespace BareMetal

View File

@@ -3,6 +3,8 @@
#include "uvtargetdeviceselection.h" #include "uvtargetdeviceselection.h"
#include <baremetal/baremetaltr.h>
#include <QComboBox> #include <QComboBox>
#include <QDataWidgetMapper> #include <QDataWidgetMapper>
#include <QGridLayout> #include <QGridLayout>
@@ -11,9 +13,7 @@
using namespace Utils; using namespace Utils;
namespace BareMetal { namespace BareMetal::Internal::Uv {
namespace Internal {
namespace Uv {
// Software package data keys. // Software package data keys.
constexpr char packageDescrKeyC[] = "PackageDescription"; constexpr char packageDescrKeyC[] = "PackageDescription";
@@ -243,7 +243,7 @@ private:
DeviceSelectionMemoryModel::DeviceSelectionMemoryModel(DeviceSelection &selection, QObject *parent) DeviceSelectionMemoryModel::DeviceSelectionMemoryModel(DeviceSelection &selection, QObject *parent)
: TreeModel<TreeItem, DeviceSelectionMemoryItem>(parent), m_selection(selection) : TreeModel<TreeItem, DeviceSelectionMemoryItem>(parent), m_selection(selection)
{ {
setHeader({tr("ID"), tr("Start"), tr("Size")}); setHeader({Tr::tr("ID"), Tr::tr("Start"), Tr::tr("Size")});
refresh(); refresh();
} }
@@ -347,7 +347,7 @@ DeviceSelectionAlgorithmModel::DeviceSelectionAlgorithmModel(DeviceSelection &se
QObject *parent) QObject *parent)
: TreeModel<TreeItem, DeviceSelectionAlgorithmItem>(parent), m_selection(selection) : TreeModel<TreeItem, DeviceSelectionAlgorithmItem>(parent), m_selection(selection)
{ {
setHeader({tr("Name"), tr("FLASH Start"), tr("FLASH Size"), tr("RAM Start"), tr("RAM Size")}); setHeader({Tr::tr("Name"), Tr::tr("FLASH Start"), Tr::tr("FLASH Size"), Tr::tr("RAM Start"), Tr::tr("RAM Size")});
refresh(); refresh();
} }
@@ -373,27 +373,27 @@ DeviceSelectionAlgorithmView::DeviceSelectionAlgorithmView(DeviceSelection &sele
const auto layout = new QGridLayout; const auto layout = new QGridLayout;
layout->setContentsMargins(0, 0, 0, 0); layout->setContentsMargins(0, 0, 0, 0);
m_comboBox = new QComboBox; m_comboBox = new QComboBox;
m_comboBox->setToolTip(tr("Algorithm path.")); m_comboBox->setToolTip(Tr::tr("Algorithm path."));
m_comboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents); m_comboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);
m_comboBox->setModel(model); m_comboBox->setModel(model);
layout->addWidget(m_comboBox, 0, 0, 1, 0); layout->addWidget(m_comboBox, 0, 0, 1, 0);
// Add FLASH area settings. // Add FLASH area settings.
const auto flashLabel = new QLabel(tr("FLASH:")); const auto flashLabel = new QLabel(Tr::tr("FLASH:"));
layout->addWidget(flashLabel, 1, 0); layout->addWidget(flashLabel, 1, 0);
const auto flashStartEdit = new QLineEdit; const auto flashStartEdit = new QLineEdit;
flashStartEdit->setToolTip(tr("Start address.")); flashStartEdit->setToolTip(Tr::tr("Start address."));
layout->addWidget(flashStartEdit, 1, 1); layout->addWidget(flashStartEdit, 1, 1);
const auto flashSizeEdit = new QLineEdit; const auto flashSizeEdit = new QLineEdit;
flashSizeEdit->setToolTip(tr("Size.")); flashSizeEdit->setToolTip(Tr::tr("Size."));
layout->addWidget(flashSizeEdit, 1, 2); layout->addWidget(flashSizeEdit, 1, 2);
// Add RAM area settings. // Add RAM area settings.
const auto ramLabel = new QLabel(tr("RAM:")); const auto ramLabel = new QLabel(Tr::tr("RAM:"));
layout->addWidget(ramLabel, 2, 0); layout->addWidget(ramLabel, 2, 0);
const auto ramStartEdit = new QLineEdit; const auto ramStartEdit = new QLineEdit;
ramStartEdit->setToolTip(tr("Start address.")); ramStartEdit->setToolTip(Tr::tr("Start address."));
layout->addWidget(ramStartEdit, 2, 1); layout->addWidget(ramStartEdit, 2, 1);
const auto ramSizeEdit = new QLineEdit; const auto ramSizeEdit = new QLineEdit;
ramSizeEdit->setToolTip(tr("Size.")); ramSizeEdit->setToolTip(Tr::tr("Size."));
layout->addWidget(ramSizeEdit, 2, 2); layout->addWidget(ramSizeEdit, 2, 2);
setLayout(layout); setLayout(layout);
@@ -431,6 +431,4 @@ void DeviceSelectionAlgorithmView::refresh()
qobject_cast<DeviceSelectionAlgorithmModel *>(m_comboBox->model())->refresh(); qobject_cast<DeviceSelectionAlgorithmModel *>(m_comboBox->model())->refresh();
} }
} // namespace Uv } // BareMetal::Internal::Uv
} // namespace Internal
} // namespace BareMetal

View File

@@ -10,9 +10,7 @@ QT_BEGIN_NAMESPACE
class QComboBox; class QComboBox;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace BareMetal { namespace BareMetal::Internal::Uv {
namespace Internal {
namespace Uv {
// DeviceSelection // DeviceSelection
@@ -142,8 +140,6 @@ private:
QComboBox *m_comboBox = nullptr; QComboBox *m_comboBox = nullptr;
}; };
} // namespace Uv } // BareMetal::Internal::Uv
} // namespace Internal
} // namespace BareMetal
Q_DECLARE_METATYPE(BareMetal::Internal::Uv::DeviceSelection) Q_DECLARE_METATYPE(BareMetal::Internal::Uv::DeviceSelection)

View File

@@ -1,9 +1,12 @@
// Copyright (C) 2020 Denis Shienkov <denis.shienkov@gmail.com> // Copyright (C) 2020 Denis Shienkov <denis.shienkov@gmail.com>
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "uvtargetdeviceviewer.h"
#include "uvproject.h" // for buildPackageId() #include "uvproject.h" // for buildPackageId()
#include "uvtargetdevicemodel.h" #include "uvtargetdevicemodel.h"
#include "uvtargetdeviceviewer.h"
#include <baremetal/baremetaltr.h>
#include <utils/pathchooser.h> #include <utils/pathchooser.h>
@@ -16,9 +19,7 @@
#include <QPushButton> #include <QPushButton>
#include <QVBoxLayout> #include <QVBoxLayout>
namespace BareMetal { namespace BareMetal::Internal::Uv {
namespace Internal {
namespace Uv {
// DeviceSelectorToolPanel // DeviceSelectorToolPanel
@@ -27,7 +28,7 @@ DeviceSelectorToolPanel::DeviceSelectorToolPanel(QWidget *parent)
{ {
const auto layout = new QHBoxLayout; const auto layout = new QHBoxLayout;
layout->setContentsMargins(0, 0, 0, 0); layout->setContentsMargins(0, 0, 0, 0);
const auto button = new QPushButton(tr("Manage...")); const auto button = new QPushButton(Tr::tr("Manage..."));
layout->addWidget(button); layout->addWidget(button);
setLayout(layout); setLayout(layout);
connect(button, &QPushButton::clicked, this, &DeviceSelectorToolPanel::clicked); connect(button, &QPushButton::clicked, this, &DeviceSelectorToolPanel::clicked);
@@ -52,24 +53,24 @@ DeviceSelectorDetailsPanel::DeviceSelectorDetailsPanel(DeviceSelection &selectio
const auto layout = new QFormLayout; const auto layout = new QFormLayout;
m_vendorEdit = new QLineEdit; m_vendorEdit = new QLineEdit;
m_vendorEdit->setReadOnly(true); m_vendorEdit->setReadOnly(true);
layout->addRow(tr("Vendor:"), m_vendorEdit); layout->addRow(Tr::tr("Vendor:"), m_vendorEdit);
m_packageEdit = new QLineEdit; m_packageEdit = new QLineEdit;
m_packageEdit->setReadOnly(true); m_packageEdit->setReadOnly(true);
layout->addRow(tr("Package:"), m_packageEdit); layout->addRow(Tr::tr("Package:"), m_packageEdit);
m_descEdit = new QPlainTextEdit; m_descEdit = new QPlainTextEdit;
m_descEdit->setReadOnly(true); m_descEdit->setReadOnly(true);
layout->addRow(tr("Description:"), m_descEdit); layout->addRow(Tr::tr("Description:"), m_descEdit);
m_memoryView = new DeviceSelectionMemoryView(m_selection); m_memoryView = new DeviceSelectionMemoryView(m_selection);
layout->addRow(tr("Memory:"), m_memoryView); layout->addRow(Tr::tr("Memory:"), m_memoryView);
m_algorithmView = new DeviceSelectionAlgorithmView(m_selection); m_algorithmView = new DeviceSelectionAlgorithmView(m_selection);
layout->addRow(tr("Flash algorithm:"), m_algorithmView); layout->addRow(Tr::tr("Flash algorithm:"), m_algorithmView);
m_peripheralDescriptionFileChooser = new Utils::PathChooser(this); m_peripheralDescriptionFileChooser = new Utils::PathChooser(this);
m_peripheralDescriptionFileChooser->setExpectedKind(Utils::PathChooser::File); m_peripheralDescriptionFileChooser->setExpectedKind(Utils::PathChooser::File);
m_peripheralDescriptionFileChooser->setPromptDialogFilter( m_peripheralDescriptionFileChooser->setPromptDialogFilter(
tr("Peripheral description files (*.svd)")); Tr::tr("Peripheral description files (*.svd)"));
m_peripheralDescriptionFileChooser->setPromptDialogTitle( m_peripheralDescriptionFileChooser->setPromptDialogTitle(
tr("Select Peripheral Description File")); Tr::tr("Select Peripheral Description File"));
layout->addRow(tr("Peripheral description file:"), layout->addRow(Tr::tr("Peripheral description file:"),
m_peripheralDescriptionFileChooser); m_peripheralDescriptionFileChooser);
setLayout(layout); setLayout(layout);
@@ -142,8 +143,8 @@ Utils::FilePath DeviceSelector::toolsIniFile() const
void DeviceSelector::setSelection(const DeviceSelection &selection) void DeviceSelector::setSelection(const DeviceSelection &selection)
{ {
m_selection = selection; m_selection = selection;
const auto summary = m_selection.name.isEmpty() const QString summary = m_selection.name.isEmpty()
? tr("Target device not selected.") : m_selection.name; ? Tr::tr("Target device not selected.") : m_selection.name;
setSummaryText(summary); setSummaryText(summary);
setExpandable(!m_selection.name.isEmpty()); setExpandable(!m_selection.name.isEmpty());
@@ -163,7 +164,7 @@ DeviceSelection DeviceSelector::selection() const
DeviceSelectionDialog::DeviceSelectionDialog(const Utils::FilePath &toolsIniFile, QWidget *parent) DeviceSelectionDialog::DeviceSelectionDialog(const Utils::FilePath &toolsIniFile, QWidget *parent)
: QDialog(parent), m_model(new DeviceSelectionModel(this)), m_view(new DeviceSelectionView(this)) : QDialog(parent), m_model(new DeviceSelectionModel(this)), m_view(new DeviceSelectionView(this))
{ {
setWindowTitle(tr("Available Target Devices")); setWindowTitle(Tr::tr("Available Target Devices"));
const auto layout = new QVBoxLayout; const auto layout = new QVBoxLayout;
layout->setContentsMargins(0, 0, 0, 0); layout->setContentsMargins(0, 0, 0, 0);
@@ -194,6 +195,4 @@ DeviceSelection DeviceSelectionDialog::selection() const
return m_selection; return m_selection;
} }
} // namespace Uv } // BareMetal::Internal::Uv
} // namespace Internal
} // namespace BareMetal

View File

@@ -18,9 +18,7 @@ QT_END_NAMESPACE
namespace Utils { class PathChooser; } namespace Utils { class PathChooser; }
namespace BareMetal { namespace BareMetal::Internal::Uv {
namespace Internal {
namespace Uv {
class DeviceSelectionModel; class DeviceSelectionModel;
class DeviceSelectionView; class DeviceSelectionView;
@@ -108,6 +106,4 @@ private:
DeviceSelectionView *m_view = nullptr; DeviceSelectionView *m_view = nullptr;
}; };
} // namespace Uv } // BareMetal::Internal::Uv
} // namespace Internal
} // namespace BareMetal

View File

@@ -3,14 +3,14 @@
#include "uvtargetdrivermodel.h" #include "uvtargetdrivermodel.h"
#include <baremetal/baremetaltr.h>
#include <QFile> #include <QFile>
#include <QTextStream> #include <QTextStream>
using namespace Utils; using namespace Utils;
namespace BareMetal { namespace BareMetal::Internal::Uv {
namespace Internal {
namespace Uv {
constexpr char cpuDllKey[] = "CPUDLL"; constexpr char cpuDllKey[] = "CPUDLL";
constexpr char driverKey[] = "TDRV"; constexpr char driverKey[] = "TDRV";
@@ -106,7 +106,7 @@ public:
DriverSelectionModel::DriverSelectionModel(QObject *parent) DriverSelectionModel::DriverSelectionModel(QObject *parent)
: TreeModel<DriverSelectionItem>(parent) : TreeModel<DriverSelectionItem>(parent)
{ {
setHeader({tr("Path")}); setHeader({Tr::tr("Path")});
} }
void DriverSelectionModel::fillDrivers(const FilePath &toolsIniFile, void DriverSelectionModel::fillDrivers(const FilePath &toolsIniFile,
@@ -181,6 +181,4 @@ void DriverSelectionView::currentChanged(const QModelIndex &current, const QMode
emit driverSelected(selection); emit driverSelected(selection);
} }
} // namespace Uv } // BareMetal::Internal::Uv
} // namespace Internal
} // namespace BareMetal

View File

@@ -9,9 +9,7 @@
#include <utils/fileutils.h> #include <utils/fileutils.h>
#include <utils/treemodel.h> #include <utils/treemodel.h>
namespace BareMetal { namespace BareMetal::Internal::Uv {
namespace Internal {
namespace Uv {
// DriverSelectionModel // DriverSelectionModel
@@ -41,6 +39,4 @@ private:
void currentChanged(const QModelIndex &current, const QModelIndex &previous) final; void currentChanged(const QModelIndex &current, const QModelIndex &previous) final;
}; };
} // namespace Uv } // BareMetal::Internal::Uv
} // namespace Internal
} // namespace BareMetal

View File

@@ -3,15 +3,15 @@
#include "uvtargetdriverselection.h" #include "uvtargetdriverselection.h"
#include <baremetal/baremetaltr.h>
#include <QComboBox> #include <QComboBox>
#include <QHBoxLayout> #include <QHBoxLayout>
#include <QLineEdit> #include <QLineEdit>
using namespace Utils; using namespace Utils;
namespace BareMetal { namespace BareMetal::Internal::Uv {
namespace Internal {
namespace Uv {
// Driver data keys. // Driver data keys.
constexpr char driverIndexKeyC[] = "DriverIndex"; constexpr char driverIndexKeyC[] = "DriverIndex";
@@ -79,7 +79,7 @@ private:
DriverSelectionCpuDllModel::DriverSelectionCpuDllModel(DriverSelection &selection, QObject *parent) DriverSelectionCpuDllModel::DriverSelectionCpuDllModel(DriverSelection &selection, QObject *parent)
: TreeModel<TreeItem, DriverSelectionCpuDllItem>(parent), m_selection(selection) : TreeModel<TreeItem, DriverSelectionCpuDllItem>(parent), m_selection(selection)
{ {
setHeader({tr("Name")}); setHeader({Tr::tr("Name")});
refresh(); refresh();
} }
@@ -104,7 +104,7 @@ DriverSelectionCpuDllView::DriverSelectionCpuDllView(DriverSelection &selection,
const auto layout = new QHBoxLayout; const auto layout = new QHBoxLayout;
layout->setContentsMargins(0, 0, 0, 0); layout->setContentsMargins(0, 0, 0, 0);
m_comboBox = new QComboBox; m_comboBox = new QComboBox;
m_comboBox->setToolTip(tr("Debugger CPU library (depends on a CPU core).")); m_comboBox->setToolTip(Tr::tr("Debugger CPU library (depends on a CPU core)."));
m_comboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents); m_comboBox->setSizeAdjustPolicy(QComboBox::AdjustToContents);
m_comboBox->setModel(model); m_comboBox->setModel(model);
layout->addWidget(m_comboBox); layout->addWidget(m_comboBox);
@@ -125,6 +125,4 @@ void DriverSelectionCpuDllView::refresh()
qobject_cast<DriverSelectionCpuDllModel *>(m_comboBox->model())->refresh(); qobject_cast<DriverSelectionCpuDllModel *>(m_comboBox->model())->refresh();
} }
} // namespace Uv } // BareMetal::Internal::Uv
} // namespace Internal
} // namespace BareMetal

View File

@@ -10,9 +10,7 @@ QT_BEGIN_NAMESPACE
class QComboBox; class QComboBox;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace BareMetal { namespace BareMetal::Internal::Uv {
namespace Internal {
namespace Uv {
// DriverSelection // DriverSelection
@@ -65,8 +63,6 @@ private:
QComboBox *m_comboBox = nullptr; QComboBox *m_comboBox = nullptr;
}; };
} // namespace Uv } // BareMetal::Internal::Uv
} // namespace Internal
} // namespace BareMetal
Q_DECLARE_METATYPE(BareMetal::Internal::Uv::DriverSelection) Q_DECLARE_METATYPE(BareMetal::Internal::Uv::DriverSelection)

View File

@@ -1,10 +1,11 @@
// Copyright (C) 2020 Denis Shienkov <denis.shienkov@gmail.com> // Copyright (C) 2020 Denis Shienkov <denis.shienkov@gmail.com>
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0
#include "uvproject.h" // for targetUVisionPath()
#include "uvtargetdrivermodel.h" #include "uvtargetdrivermodel.h"
#include "uvtargetdriverviewer.h" #include "uvtargetdriverviewer.h"
#include <baremetal/baremetaltr.h>
#include <QDialogButtonBox> #include <QDialogButtonBox>
#include <QFormLayout> #include <QFormLayout>
#include <QHBoxLayout> #include <QHBoxLayout>
@@ -14,9 +15,7 @@
#include <QPushButton> #include <QPushButton>
#include <QVBoxLayout> #include <QVBoxLayout>
namespace BareMetal { namespace BareMetal::Internal::Uv {
namespace Internal {
namespace Uv {
// DriverSelectorToolPanel // DriverSelectorToolPanel
@@ -25,7 +24,7 @@ DriverSelectorToolPanel::DriverSelectorToolPanel(QWidget *parent)
{ {
const auto layout = new QHBoxLayout; const auto layout = new QHBoxLayout;
layout->setContentsMargins(0, 0, 0, 0); layout->setContentsMargins(0, 0, 0, 0);
const auto button = new QPushButton(tr("Manage...")); const auto button = new QPushButton(Tr::tr("Manage..."));
layout->addWidget(button); layout->addWidget(button);
setLayout(layout); setLayout(layout);
connect(button, &QPushButton::clicked, this, &DriverSelectorToolPanel::clicked); connect(button, &QPushButton::clicked, this, &DriverSelectorToolPanel::clicked);
@@ -49,10 +48,10 @@ DriverSelectorDetailsPanel::DriverSelectorDetailsPanel(DriverSelection &selectio
const auto layout = new QFormLayout; const auto layout = new QFormLayout;
m_dllEdit = new QLineEdit;; m_dllEdit = new QLineEdit;;
m_dllEdit->setReadOnly(true); m_dllEdit->setReadOnly(true);
m_dllEdit->setToolTip(tr("Debugger driver library.")); m_dllEdit->setToolTip(Tr::tr("Debugger driver library."));
layout->addRow(tr("Driver library:"), m_dllEdit); layout->addRow(Tr::tr("Driver library:"), m_dllEdit);
m_cpuDllView = new DriverSelectionCpuDllView(m_selection); m_cpuDllView = new DriverSelectionCpuDllView(m_selection);
layout->addRow(tr("CPU library:"), m_cpuDllView); layout->addRow(Tr::tr("CPU library:"), m_cpuDllView);
setLayout(layout); setLayout(layout);
refresh(); refresh();
@@ -111,7 +110,7 @@ void DriverSelector::setSelection(const DriverSelection &selection)
{ {
m_selection = selection; m_selection = selection;
const auto summary = m_selection.name.isEmpty() const auto summary = m_selection.name.isEmpty()
? tr("Target driver not selected.") : m_selection.name; ? Tr::tr("Target driver not selected.") : m_selection.name;
setSummaryText(summary); setSummaryText(summary);
setExpandable(!m_selection.name.isEmpty()); setExpandable(!m_selection.name.isEmpty());
@@ -134,7 +133,7 @@ DriverSelectionDialog::DriverSelectionDialog(const Utils::FilePath &toolsIniFile
: QDialog(parent), m_model(new DriverSelectionModel(this)), : QDialog(parent), m_model(new DriverSelectionModel(this)),
m_view(new DriverSelectionView(this)) m_view(new DriverSelectionView(this))
{ {
setWindowTitle(tr("Available Target Drivers")); setWindowTitle(Tr::tr("Available Target Drivers"));
const auto layout = new QVBoxLayout; const auto layout = new QVBoxLayout;
layout->setContentsMargins(0, 0, 0, 0); layout->setContentsMargins(0, 0, 0, 0);
@@ -165,6 +164,4 @@ DriverSelection DriverSelectionDialog::selection() const
return m_selection; return m_selection;
} }
} // namespace Uv } // BareMetal::Internal::Uv
} // namespace Internal
} // namespace BareMetal

View File

@@ -15,9 +15,7 @@ QT_BEGIN_NAMESPACE
class QLineEdit; class QLineEdit;
QT_END_NAMESPACE QT_END_NAMESPACE
namespace BareMetal { namespace BareMetal::Internal::Uv {
namespace Internal {
namespace Uv {
class DriverSelectionModel; class DriverSelectionModel;
class DriverSelectionView; class DriverSelectionView;
@@ -102,6 +100,4 @@ private:
DriverSelectionView *m_view = nullptr; DriverSelectionView *m_view = nullptr;
}; };
} // namespace Uv } // BareMetal::Internal::Uv
} // namespace Internal
} // namespace BareMetal

View File

@@ -5,9 +5,7 @@
#include <QXmlStreamAttribute> #include <QXmlStreamAttribute>
namespace BareMetal { namespace BareMetal::Gen::Xml {
namespace Gen {
namespace Xml {
class Project; class Project;
class ProjectOptions; class ProjectOptions;
@@ -34,6 +32,4 @@ public:
virtual void visitPropertyGroupEnd(const PropertyGroup *propertyGroup) = 0; virtual void visitPropertyGroupEnd(const PropertyGroup *propertyGroup) = 0;
}; };
} // namespace Xml } // BareMetal::Gen::Xml
} // namespace Gen
} // namespace BareMetal

View File

@@ -4,9 +4,7 @@
#include "xmlnodevisitor.h" #include "xmlnodevisitor.h"
#include "xmlproject.h" #include "xmlproject.h"
namespace BareMetal { namespace BareMetal::Gen::Xml {
namespace Gen {
namespace Xml {
// Project // Project
@@ -32,6 +30,4 @@ void ProjectOptions::accept(INodeVisitor *visitor) const
visitor->visitProjectOptionsEnd(this); visitor->visitProjectOptionsEnd(this);
} }
} // namespace Xml } // BareMetal::Gen::Xml
} // namespace Gen
} // namespace BareMetal

View File

@@ -7,9 +7,7 @@
#include <memory> #include <memory>
namespace BareMetal { namespace BareMetal::Gen::Xml {
namespace Gen {
namespace Xml {
// Project // Project
@@ -27,6 +25,4 @@ public:
void accept(INodeVisitor *visitor) const final; void accept(INodeVisitor *visitor) const final;
}; };
} // namespace Xml } // BareMetal::Gen::Xml
} // namespace Gen
} // namespace BareMetal

Some files were not shown because too many files have changed in this diff Show More