diff options
author | Tim Jenssen <tim.jenssen@qt.io> | 2023-03-29 13:40:41 +0200 |
---|---|---|
committer | Tim Jenssen <tim.jenssen@qt.io> | 2023-03-29 13:42:04 +0200 |
commit | 26365f34d44a55db5847e862ae10122c0a7ad4a4 (patch) | |
tree | 8f735e0e9d3df738ee030d2fb2e24e8836ee71ae | |
parent | bcd74a2fad243fc7683fd98633b91da4e394c0e8 (diff) | |
parent | 81a5e2143cb7728316e02d24925f853e2db2099a (diff) | |
download | qt-creator-26365f34d44a55db5847e862ae10122c0a7ad4a4.tar.gz |
Merge remote-tracking branch 'origin/10.0' into qds/dev
Change-Id: Idd5eac05f3506387e5f1884e22cc2c902032bbe1
40 files changed, 885 insertions, 435 deletions
@@ -56,6 +56,32 @@ Prerequisites: The used toolchain has to be compatible with the one Qt was compiled with. +### Getting Qt Creator from Git + +The official mirror of the Qt Creator repository is located at +https://code.qt.io/cgit/qt-creator/qt-creator.git/. Run + + git clone https://code.qt.io/qt-creator/qt-creator.git + +to clone the Qt Creator sources from there. This creates a checkout of the +Qt Creator sources in the `qt-creator/` directory of your current working +directory. + +Qt Creator relies on some submodules, like +[litehtml](https://github.com/litehtml) for displaying documentation. Get these +submodules with + + cd qt-creator # switch to the sources, if you just ran git clone + git submodule update --init --recursive + +Note the `--recursive` in this command, which fetches also submodules within +submodules, and is necessary to get all the sources. + +The git history contains some coding style cleanup commits, which you might +want to exclude for example when running `git blame`. Do this by running + + git config blame.ignoreRevsFile .gitignore-blame + ### Linux and macOS These instructions assume that Ninja is installed and in the `PATH`, Qt Creator diff --git a/dist/changelog/changes-10.0.0.md b/dist/changelog/changes-10.0.0.md index f3bb87301e..d327b5b169 100644 --- a/dist/changelog/changes-10.0.0.md +++ b/dist/changelog/changes-10.0.0.md @@ -48,6 +48,7 @@ Editing * Made temporary disabling of global indexing possible by canceling it in the progress indicator * Added support for highlighting angle brackets + * Added semantic highlighting for concepts (QTCREATORBUG-28887) * Built-in * Added support for the spaceship operator (QTCREATORBUG-27503) * Fixed the handling of `= default` (QTCREATORBUG-28102) @@ -99,23 +100,28 @@ Projects * Added a deployment method with `cmake --install` to `Projects > Run Settings > Add Deploy Step > CMake Install` (QTCREATORBUG-25880) -* Added the option to use `cmake-format` for CMake files to `Edit > Preferences > - CMake > Formatter` +* Added the option to use `cmake-format` for CMake files to `Edit > Preferences + > CMake > Formatter` ([cmake-format Documentation](https://cmake-format.readthedocs.io/en/latest/)) * Added `Show advanced options by default` to `Edit > Preferences > CMake > Tools` -* Added support for the `external` strategy for the architecture and toolset of - presets (QTCREATORBUG-28693) +* Added support for presets version 5 + * Added support for the `external` strategy for the architecture and toolset + of presets (QTCREATORBUG-28693) + * Added support for preset includes (QTCREATORBUG-28894) + * Added support for the `pathListSep` variable + * Fixed that CMake preset macros were not expanded for environment variables and + `CMAKE_BUILD_TYPE` (QTCREATORBUG-28606, QTCREATORBUG-28893) * Moved `Autorun CMake` to `Edit > Preferences > CMake > General` * Changed the environment for running CMake to be based on the build environment by default (QTCREATORBUG-28513) -* Fixed that `Package manager auto setup` created a dependency of the project - build to the Qt Creator installation * Fixed that cloned build configurations could miss values from the `Initial Parameters` (QTCREATORBUG-28759) -* Fixed that CMake preset macros were not expanded for environment variables - (QTCREATORBUG-28606) * Fixed a crash with the `Kit Configuration` button for build configurations (QTCREATORBUG-28740) +* Package manager auto setup + * Added support for Conan 2.0 + * Fixed that it created a dependency of the project build to the Qt Creator + installation ### Qbs @@ -238,10 +244,12 @@ Dmitry Bravikov Eike Ziller Fabian Kosmale Fawzi Mohamed +Haowei Hsu Henning Gruendl Jaroslaw Kobus Jussi Witick Kai Köhne +Karim Abdelrahman Knud Dollereder Knut Petter Svendsen Leena Miettinen @@ -261,6 +269,7 @@ Robert Löhning Sami Shalayel Samuel Gaist Samuel Ghinet +Semih Yavuz Sergey Levin Sivert Krøvel Tasuku Suzuki diff --git a/doc/qtcreator/images/qcreator-debugger-select-start-address.webp b/doc/qtcreator/images/qcreator-debugger-select-start-address.webp Binary files differnew file mode 100644 index 0000000000..2e24b71085 --- /dev/null +++ b/doc/qtcreator/images/qcreator-debugger-select-start-address.webp diff --git a/doc/qtcreator/images/qtcreator-debugger-disassembler-view.webp b/doc/qtcreator/images/qtcreator-debugger-disassembler-view.webp Binary files differnew file mode 100644 index 0000000000..7fcf5a13f1 --- /dev/null +++ b/doc/qtcreator/images/qtcreator-debugger-disassembler-view.webp diff --git a/doc/qtcreator/images/qtcreator-debugger-expressions.png b/doc/qtcreator/images/qtcreator-debugger-expressions.png Binary files differdeleted file mode 100644 index ef9e972071..0000000000 --- a/doc/qtcreator/images/qtcreator-debugger-expressions.png +++ /dev/null diff --git a/doc/qtcreator/images/qtcreator-debugger-expressions.webp b/doc/qtcreator/images/qtcreator-debugger-expressions.webp Binary files differnew file mode 100644 index 0000000000..2a14cce5d5 --- /dev/null +++ b/doc/qtcreator/images/qtcreator-debugger-expressions.webp diff --git a/doc/qtcreator/images/qtcreator-debugger-log-view.webp b/doc/qtcreator/images/qtcreator-debugger-log-view.webp Binary files differnew file mode 100644 index 0000000000..ce3e265365 --- /dev/null +++ b/doc/qtcreator/images/qtcreator-debugger-log-view.webp diff --git a/doc/qtcreator/images/qtcreator-debugger-memory-editor.webp b/doc/qtcreator/images/qtcreator-debugger-memory-editor.webp Binary files differnew file mode 100644 index 0000000000..ef51b1dd29 --- /dev/null +++ b/doc/qtcreator/images/qtcreator-debugger-memory-editor.webp diff --git a/doc/qtcreator/images/qtcreator-debugger-new-evaluated-expression.webp b/doc/qtcreator/images/qtcreator-debugger-new-evaluated-expression.webp Binary files differnew file mode 100644 index 0000000000..1934a05372 --- /dev/null +++ b/doc/qtcreator/images/qtcreator-debugger-new-evaluated-expression.webp diff --git a/doc/qtcreator/images/qtcreator-debugger-peripheral-registers-view.webp b/doc/qtcreator/images/qtcreator-debugger-peripheral-registers-view.webp Binary files differnew file mode 100644 index 0000000000..34c8813108 --- /dev/null +++ b/doc/qtcreator/images/qtcreator-debugger-peripheral-registers-view.webp diff --git a/doc/qtcreator/images/qtcreator-debugger-registers-view.webp b/doc/qtcreator/images/qtcreator-debugger-registers-view.webp Binary files differnew file mode 100644 index 0000000000..05b08e9668 --- /dev/null +++ b/doc/qtcreator/images/qtcreator-debugger-registers-view.webp diff --git a/doc/qtcreator/src/debugger/creator-debug-views.qdoc b/doc/qtcreator/src/debugger/creator-debug-views.qdoc index d1c2adff5f..78ee139e3f 100644 --- a/doc/qtcreator/src/debugger/creator-debug-views.qdoc +++ b/doc/qtcreator/src/debugger/creator-debug-views.qdoc @@ -374,6 +374,35 @@ function after pressing \key {Shift+F11}, the \uicontrol {Return Value} pane displays the value returned by the function. + You can expand the view contents to check that your application sets a + local value correctly. + + \if defined(qtcreator) + \section1 Locals View Actions + + Right-click the \uicontrol Locals view to select the following actions: + + //! [0] + \list + \li Add and remove expression evaluators + \li Change value display format + \li Expand and collapse view contents + \li Copy view contents or expression values to the clipboard + \li Open view contents in an editor + \li Open memory editor + \li Set data breakpoints + \li Use \l{Using Debugging Helpers}{debugging helpers} + \li Show tooltips in the \uicontrol Locals view when debugging + \li Dereference pointers automatically + \li Sort members of classes and structs alphabetically + \li Use dynamic object type for display + \li Set \l{Debugger Preferences}{debugger preferences} + \endlist + //! [0] + \endif + + \section1 Selecting Object Type for Display + When using GDB, you can specify whether the dynamic or the static type of objects will be displayed. Select \uicontrol {Use dynamic object type for display} in the context menu. Keep in mind that choosing the dynamic type @@ -392,45 +421,88 @@ \title Evaluating Expressions To compute values of arithmetic expressions or function calls, use - expression evaluators in the \uicontrol Expressions view. To insert a new - expression evaluator, either double-click on an empty part of the - \uicontrol {Expressions} or \uicontrol {Locals} view, or select - \uicontrol {Add New Expression Evaluator} from the context menu, or drag and - drop an expression from the code editor. + expression evaluators in the \uicontrol Expressions view. + + You can examine static variables that the debuggers don't pick up as + \e {local variables}. For example, if you define + \c {static int staticVar = 42;} in a source file and then add \c staticVar + as an evaluated expression, you should see \e 42 in the view when the + debugger stops in the source file. + + \image qtcreator-debugger-expressions.webp {Expressions view} + + \section1 Adding Expression Evaluators + + To add expression evaluators, drag an expression from the code editor + to the \uicontrol Expressions view. + + You can also: + + \list + \li Double-click in the \uicontrol {Expressions} or + \l {Local Variables and Function Parameters}{Locals} view. + \li Select \uicontrol {Add New Expression Evaluator} from the context + menu. + \endlist + + Enter the expression in the \uicontrol {New Evaluated Expression} dialog: + + \image qtcreator-debugger-new-evaluated-expression.webp {New Evaluated Expression dialog} - \image qtcreator-debugger-expressions.png {Expressions view} + \omit + ## Visible in the context menu, but does not currently work. + + To insert widgets into expression evaluators, select a + widget in the debugged application and then select + \uicontrol {Select Widget to Add into Expression Evaluator} + in the context menu. + \endomit + + The set of evaluated expressions is saved in your session. \note Expression evaluators are powerful, but slow down debugger operation - significantly. It is advisable to not use them excessively, and to remove - unneeded expression evaluators as soon as possible. + significantly. Use them sparingly and remove them when you no longer need + them. Expression evaluators are re-evaluated whenever the current frame changes. - Note that functions used in the expressions are called each time, even if + The functions used in the expressions are called each time, even if they have side-effects. + \if defined(qtcreator) + \section1 Expressions View Actions + + Right-click the \uicontrol Expressions view to select the following actions: + + \include creator-debug-views.qdoc 0 + \endif + + \section1 JavaScript Expressions + The QML debugger can evaluate JavaScript expressions. \if defined(qtcreator) + + \section1 C and C++ Expressions + GDB, LLDB and CDB support the evaluation of simple C and C++ expressions. Functions can be called only if they are actually compiled into the debugged - executable or a library used by the executable. Most notably, inlined + executable or a library used by the executable. Inlined functions such as most \c{operator[]} implementations of standard containers are typically \e{not} available. - When using GDB or LLDB as backend, a special ranged syntax can be used to + When using GDB or LLDB as backend, you can use a special ranged syntax to display multiple values with one expression. A sub-expression of form \c{foo[a..b]} is split into a sequence of individually evaluated expressions \c{foo[a], ..., foo[b]}. - Compound variables of struct or class type are displayed as expandable in - the view. Expand entries to show all members. Together with the display of - value and type, you can examine and traverse the low-level layout of object - data. + You can expand compound variables of struct or class type to show their + members. As you also see the variable value and type, you can examine and + traverse the low-level layout of object data. GDB and LLDB, and therefore \QC's debugger, also work for optimized builds on Linux and \macos. Optimization can lead to re-ordering of instructions or removal of some local variables, causing the - \uicontrol {Locals} and \uicontrol {Expressions} view to show + \uicontrol {Locals} and \uicontrol {Expressions} views to show unexpected data. The debug information from GCC does not include enough @@ -441,8 +513,6 @@ \uicontrol {not in scope}. Not all uninitialized objects, however, can be recognized as such. - \note The set of evaluated expressions is saved in your session. - \section1 Inspecting Basic Qt Objects The most powerful feature of the debugger is that the \uicontrol {Locals} diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdoc index 334e3c86a6..ab0aff0f54 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger-settings.qdoc @@ -18,7 +18,7 @@ \l{Specifying Breakpoint Settings}{specify settings for breakpoints}, and map source paths to target paths. - You can view debug output in the \uicontrol {Debugger Log} view. + You can view debug output in the \l {Debugger Log} view. However, in some Linux distributions, such as Arch Linux, debug output is sent to the system log. To override this behavior, select the \uicontrol {Force logging to console} check box. This sets diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc index 1009f765ab..a5e49e3749 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc @@ -632,9 +632,11 @@ \row \li Peripheral Registers \li View the current state of peripheral registers. - \li + \li \l {Peripheral Registers} \row - \li Debugger Log + \li Global Debugger Log + + Debugger Log \li View debug output to find out why the debugger does not work. The log view acts as a console, so you can send the contents @@ -642,7 +644,7 @@ native debugger. \li \l{Troubleshooting Debugger} - \l {Directly Interacting with Native Debuggers} + \l {Debugger Log} \row \li Disassembler \li View disassembled code for the current function. @@ -653,6 +655,9 @@ \li \l {Working in Edit Mode} \endtable + \note The \uicontrol Views menu shows some views only while you are + debugging. + \section1 Managing Debug Views When you are not debugging, the \uicontrol Debug mode shows the @@ -1003,42 +1008,141 @@ /*! \page creator-registers-view.html \previouspage creator-expressions-view.html - \nextpage creator-debugger-log-view.html + \nextpage creator-peripheral-registers-view.html \title Viewing and Editing Register State - The \uicontrol Registers view displays the current state of the CPU registers. - Depending on the CPU type, there will be different registers available. The - values of registers that recently have changed are highlighted in red and empty - register values as well as leading zeroes are grayed out. + \e {Machine code} consists of machine language instructions that make the CPU + perform tasks, such as load or store, on units of data in the CPU's registers + or memory. + + The \uicontrol Registers view displays the current state of general-purpose + and special-purpose CPU registers. The available registers depend on the CPU + type. + + \image qtcreator-debugger-registers-view.webp {Registers view} + + You can view register values when the application stops. Double-click + register values to edit them. + + The values of registers that recently changed are highlighted in red. Empty + register values and leading zeroes are grayed out. + + Right-click column headers to show and hide the \uicontrol Name and + \uicontrol Value columns in the view. + + Right-click the view to select the following actions: + + \list + \li Reload register list. + \li Open \l {Examining Memory}{Memory Editor} at the selected value. + \li Open the \l {Viewing Disassembled Code}{Disassembler} view. + \li Display a value in hexadecimal, decimal, octal, or binary format. + \li Set \l{Debugger Preferences}{debugger preferences}. + \endlist + + By default, the \uicontrol Registers view is hidden. To show it, select it in + \uicontrol Views on the debugger toolbar. - In addition it is possible to edit the content of registers while the application is - stopped. This applies to both General-purpose and Special-purpose registers. - Registers can be edited in the standard condensed view or in their particular parts - if the register is displayed expanded. + \section1 Examining Memory - By default, the \uicontrol Registers view is hidden. + You can examine memory in many formats, independently of the application's + data types. + + To open the memory editor, select a value \uicontrol Registers view, + and then select \uicontrol {Open Memory Editor at <value>} or + \uicontrol {Open Memory View at <value>} in the context menu: + + \image qtcreator-debugger-memory-editor.webp {Memory Editor} + + Hover the mouse pointer on a value to see details as a tooltip. + + Right-click a value to: + + \list + \li Copy the selection in ASCII or hexadecimal format. + \li Set a data breakpoint on the selection. + \li Jump to the selected address in the current data view or a new one. + \endlist */ /*! - \page creator-debugger-log-view.html + \page creator-peripheral-registers-view.html \previouspage creator-registers-view.html + \nextpage creator-debugger-log-view.html + + \title Peripheral Registers + + The \uicontrol {Peripheral Registers} view displays the current state of + peripheral devices, such as a mouse, keyboard, display, printer, or USB + drive. Applications write registers to send information to the device and + read them to get information from the device. To read registers in a + peripheral device, the application accesses its I/O addresses with a load + or store instruction that the CPU issues. + + \image qtcreator-debugger-peripheral-registers-view.webp {Peripheral Registers view} + + The \uicontrol Access column shows whether the register is read-and-write + (\uicontrol RW), read-only (\uicontrol RO), or write-only (\uicontrol WO). + \uicontrol N/A means that the access type is not available. + + Right-click column headers to show and hide columns in the view. + + Right-click the view to select the following actions: + + \list + \li View register groups. + \li Set \l{Debugger Preferences}{debugger preferences}. + \endlist + + By default, the \uicontrol {Peripheral Registers} view is hidden. To show it, + select it in \uicontrol Views on the debugger toolbar. +*/ + +/*! + \page creator-debugger-log-view.html + \previouspage creator-peripheral-registers-view.html \nextpage creator-disassembler-view.html - \title Directly Interacting with Native Debuggers + \title Debugger Log + + You can view debug output in the \uicontrol {Debugger Log} view to + \l {Debugger Does Not Work}{troubleshoot the debugger}. + + \image qtcreator-debugger-log-view.webp {Debugger Log view} - In some cases, it is convenient to directly interact with the command line - of the native debugger. In \QC, you can use the left pane of the - \uicontrol {Debugger Log} view for that purpose. When you press - \key {Ctrl+Enter}, the contents of the line under the text cursor are sent - directly to the native debugger. Alternatively, you can use the line edit at - the bottom of the view. Output is displayed in the right pane of the - \uicontrol {Debugger Log} view. + If debug output is sent to the system log, select \uicontrol Edit > + \uicontrol Preferences > \uicontrol Debugger > \uicontrol General > + \uicontrol {Force logging to console} check box. + + Right-click the view to select the following actions: + + \list + \li Copy, paste, cut, and delete log contents. + \li Undo and redo editing actions. + \li Select all log contents. + \li Clear log contents. + \li Save log contents as a file. + \li Log time stamps. + \li Reload debugging helpers after \l{Adding Custom Debugging Helpers} + {adding custom debugging helpers}. + \li Set \l{Debugger Preferences}{debugger preferences}. + \endlist + + \section1 Directly Interacting with Native Debuggers + + You can use the left pane of the \uicontrol {Debugger Log} view to directly + interact with the command line of the native debugger. + + Press \key {Ctrl+Enter} to send the contents of the line under the + text cursor to the native debugger. Or, enter the command in the + \uicontrol Command field. The right side pane of the + \uicontrol {Debugger Log} view shows the command output. \note Usually, you do not need this feature because \QC offers better ways to handle the task. For example, instead of using the GDB \c print command from the command line, you can evaluate an expression in - the \uicontrol {Expressions} view. + the \l {Evaluating Expressions}{Expressions} view. */ /*! @@ -1048,22 +1152,38 @@ \title Viewing Disassembled Code - The \uicontrol Disassembler view displays disassembled code for the current - function. + A \e disassembler translates machine language into assembly language for + human-readability. - The \uicontrol Disassembler view is useful for low-level commands for checking - single instructions, such as \uicontrol {Step Into} and \uicontrol {Step Over}. - By default, the \uicontrol Disassembler view is hidden. + The \uicontrol Disassembler view displays disassembled code for the current + function. It is useful for low-level commands for checking single + instructions, such as \uicontrol {Step Into} and \uicontrol {Step Over}. - To access the \uicontrol Disassembler view, check - \uicontrol Debug > \uicontrol {Operate by Instruction} while the debugger is - running. Alternatively, click the - \inlineimage icons/debugger_singleinstructionmode.png - (\uicontrol {Operate by Instruction}) tool button on the debugger toolbar. + \image qtcreator-debugger-disassembler-view.webp {Disassembler view} By default, GDB shows AT&T style disassembly. To switch to the Intel style, select \uicontrol Edit > \uicontrol Preferences > \uicontrol Debugger > \uicontrol GDB > \uicontrol {Use Intel style disassembly}. + + To open the \uicontrol Disassembler view: + + \list + \li Select \uicontrol Debug > \uicontrol {Operate by Instruction} while + the debugger is running. + \li Select the \inlineimage icons/debugger_singleinstructionmode.png + (\uicontrol {Operate by Instruction}) tool button on the debugger + toolbar. + \li In the \l {Viewing and Editing Register State}{Registers} view, + select a value, and then select \uicontrol {Open Disassembler at <value>} + in the context menu. + \endlist + + \section1 Starting Disassembler + + To start a disassembler from the \uicontrol Registers view, select + \uicontrol {Open Disassembler} and set the disassembler address: + + \image qcreator-debugger-select-start-address.webp {Select Start Address dialog} */ /*! @@ -1210,7 +1330,7 @@ The custom debugging helpers will be automatically picked up from \c personaltypes.py when you start a debugging session in \QC or select \uicontrol {Reload Debugging Helpers} from the context menu of the - \uicontrol {Debugger Log} view. + \l {Debugger Log} view. \section2 Debugging Helper Overview @@ -1756,7 +1876,7 @@ \li In the \uicontrol Debug mode, select \uicontrol View > \uicontrol Views > \uicontrol {Debugger Log} to open the - \uicontrol {Debugger Log} view. Browse the contents of the pane on + \l {Debugger Log} view. Browse the contents of the pane on the right hand side to find out what went wrong. Always attach the contents of the pane to debugger-related questions to the \QC mailing list (qt-creator@qt-project.org) or paste them to a @@ -1814,7 +1934,7 @@ \section2 Disabling Incremental Linking - Incremental linking can affect debugging. If the debugger log has + Incremental linking can affect debugging. If the \l {Debugger Log} view shows the \e {Unable to verify checksum of module} message, disable incremental linking. diff --git a/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc b/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc index 6a883fe37a..6a1d6a1227 100644 --- a/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc +++ b/doc/qtcreator/src/howto/creator-only/qtcreator-faq.qdoc @@ -175,7 +175,7 @@ \b {How do I generate a core file in \QC?} To trigger the GDB command that generates a core file while debugging, - select \uicontrol View > \uicontrol Views > \uicontrol {Debugger Log}. + select \uicontrol View > \uicontrol Views > \l {Debugger Log}. In the \uicontrol Command field, type \c gcore and press \key Enter. The core file is created in the current working directory. You can specify another location for the file, including a relative or absolute path, as an diff --git a/doc/qtcreator/src/qtcreator-toc.qdoc b/doc/qtcreator/src/qtcreator-toc.qdoc index d514c329c3..e2299cd05c 100644 --- a/doc/qtcreator/src/qtcreator-toc.qdoc +++ b/doc/qtcreator/src/qtcreator-toc.qdoc @@ -175,7 +175,7 @@ \li \l{Local Variables and Function Parameters} \li \l{Evaluating Expressions} \li \l{Viewing and Editing Register State} - \li \l{Directly Interacting with Native Debuggers} + \li \l{Debugger Log} \li \l{Viewing Disassembled Code} \li \endlist diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 0b5df24eb2..c5abfa3e16 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -12463,11 +12463,11 @@ Zum Beispiel bewirkt die Angabe "Revision: 15" dass der Branch auf Rev </message> <message> <source>Format entire file if no text was selected</source> - <translation>Formatiere die ganze Datei falls kein Text selektiert ist</translation> + <translation>Formatiere die ganze Datei, falls kein Text ausgewählt ist</translation> </message> <message> <source>For action Format Selected Text</source> - <translation>Für die Aktion "Formatiere selektierten Text"</translation> + <translation>Für die Aktion "Markierten Text formatieren"</translation> </message> <message> <source>Uncrustify command:</source> @@ -15022,7 +15022,7 @@ Setzen Sie erst eine gültige ausführbare Datei.</translation> </message> <message> <source>ClearCase Command</source> - <translation type="unfinished">ClearCase-Befehl</translation> + <translation>Ausführbare Datei von ClearCase</translation> </message> <message> <source>Arg&uments:</source> @@ -19429,7 +19429,7 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern.</translation> </message> <message> <source>Inspect C++ Code Model...</source> - <translation>Inspiziere das C++-Codemodell...</translation> + <translation>C++-Codemodell inspizieren...</translation> </message> <message> <source>Meta+Shift+F12</source> @@ -21111,23 +21111,23 @@ Do you want to display them anyway?</source> </message> <message> <source>Error</source> - <translation type="unfinished">Fehler</translation> + <translation>Fehler</translation> </message> <message> <source>Failed to copy core file to device: %1</source> - <translation type="unfinished"></translation> + <translation>Core-Datei konnte nicht auf das Gerät kopiert werden: %1</translation> </message> <message> <source>Failed to copy symbol file to device: %1</source> - <translation type="unfinished"></translation> + <translation>Symbol-Datei konnte nicht auf das Gerät kopiert werden: %1</translation> </message> <message> <source>Copying files to device... %1/%2</source> - <translation type="unfinished"></translation> + <translation>Kopiere Dateien auf Gerät... %1/%2</translation> </message> <message> <source>Copying files to device...</source> - <translation type="unfinished"></translation> + <translation>Kopiere Dateien auf Gerät...</translation> </message> <message> <source>Kit:</source> @@ -22221,7 +22221,7 @@ was generated. In such situations the breakpoint is shifted to the next source code line for which code was actually generated. This option reflects such temporary change by moving the breakpoint markers in the source code editor.</source> - <translation>Nicht alle Quellcode-Zeilen bewirken die Erzeugung von ausführbarem Code. Wenn man auf solche Zeilen einen Haltepunkt setzt, verhält er sich so, als ob er auf die nächste Zeile gesetzt worden wäre. Das Aktivieren der Einstellung 'Positionen der Haltepunkte korrigieren' bewirkt, dass der Haltepunkt-Marker in so einem Fall auf die Stelle des resultierenden Haltepunkts verschoben wird.</translation> + <translation>Nicht alle Quellcode-Zeilen bewirken die Erzeugung von ausführbarem Code. Wenn man dort einen Haltepunkt setzt, verhält er sich so, als ob er auf die nächste Zeile gesetzt worden wäre. Das Aktivieren der Einstellung 'Positionen der Haltepunkte korrigieren' bewirkt, dass der Haltepunkt-Marker in so einem Fall auf die Stelle des resultierenden Haltepunkts verschoben wird.</translation> </message> <message> <source>Allows or inhibits reading the user's default @@ -22262,7 +22262,7 @@ markers in the source code editor.</source> </message> <message> <source>The options below give access to advanced<br>or experimental functions of GDB.<p>Enabling them may negatively impact<br>your debugging experience.</source> - <translation type="unfinished"></translation> + <translation>Die untenstehenden Einstellungen betreffen spezielle<br>oder experimentelle Funktionalität von GDB.<p>Ihre Verwendung kann das Debuggen<br>negativ beeinflussen.</translation> </message> <message> <source>Additional Attach Commands</source> @@ -23166,11 +23166,11 @@ Installieren Sie das Paket "Qt Debug Information Files" für diese Qt- </message> <message> <source>Debugger Start Failed</source> - <translation type="unfinished"></translation> + <translation>Start des Debuggers schlug fehl</translation> </message> <message> <source>The system prevents loading of %1 which is required for debugging. Make sure that your antivirus solution is up to date and if that does not work consider to add an exception for %1.</source> - <translation type="unfinished"></translation> + <translation>Das System verhindert das Laden von %1, welches für das Debuggen erforderlich ist. Stellen Sie sicher, dass Ihr Virenschutzprogramm aktuell ist. Falls dies nicht hilft, ziehen Sie in Betracht, eine Ausnahme für %1 hinzuzufügen.</translation> </message> <message> <source>Value %1 obtained from evaluating the condition of breakpoint %2, stopping.</source> @@ -23594,7 +23594,7 @@ Sie werden möglicherweise gebeten, den Inhalt dieses Logs mitzuteilen, wenn Sie </message> <message> <source>&Attach to Process</source> - <translation type="unfinished">&An Prozess anhängen</translation> + <translation>&An Prozess anhängen</translation> </message> <message> <source>Edit Breakpoint...</source> @@ -23602,11 +23602,11 @@ Sie werden möglicherweise gebeten, den Inhalt dieses Logs mitzuteilen, wenn Sie </message> <message> <source>Start</source> - <translation type="unfinished"></translation> + <translation>Starten</translation> </message> <message> <source>Stop</source> - <translation type="unfinished">Anhalten</translation> + <translation>Anhalten</translation> </message> <message> <source>F8</source> @@ -24575,7 +24575,7 @@ Bitte wählen Sie einen 64-bit-Debugger in den Kit-Einstellungen für dieses Kit </message> <message> <source>Debugger Location</source> - <translation type="unfinished"></translation> + <translation>Position des Debuggers</translation> </message> <message> <source>The memory contents cannot be shown as no viewer plugin for binary data has been loaded.</source> @@ -25093,7 +25093,7 @@ Das Setzen von Haltepunkten anhand von Dateinamen und Zeilennummern könnte fehl </message> <message> <source><p>Not all source code lines generate executable code. Putting a breakpoint on such a line acts as if the breakpoint was set on the next line that generated code. Selecting 'Adjust Breakpoint Locations' shifts the red breakpoint markers in such cases to the location of the true breakpoint.</source> - <translation type="unfinished"></translation> + <translation><p>Nicht aus allen Quellcode-Zeilen wird ausführbarer Code erzeugt. Wenn man dort einen Haltepunkt setzt, verhält er sich so, als ob er auf die nächste Zeile gesetzt worden wäre, aus der Maschinencode erzeugt wurde. Das Aktivieren der Einstellung 'Positionen der Haltepunkte korrigieren' bewirkt, dass der Haltepunkt-Marker in so einem Fall an die Stelle des resultierenden Haltepunkts verschoben wird.</translation> </message> <message> <source>Stopping and stepping in the debugger will automatically open views associated with the current location.</source> @@ -25532,7 +25532,7 @@ Weiterführende Informationen befinden sich in /etc/sysctl.d/10-ptrace.conf </message> <message> <source>Debugger Value</source> - <translation type="unfinished"></translation> + <translation>Debugger-Wert</translation> </message> </context> <context> @@ -25609,7 +25609,7 @@ Bitte prüfen Sie die #include-Anweisungen.</translation> </message> <message> <source>Cannot rename UI symbol "%1" in C++ files: %2</source> - <translation type="unfinished"></translation> + <translation>UI-Symbol "%1" konnte in den C++-Dateien nicht umbenannt werden: %2</translation> </message> <message> <source>Error finding/adding a slot.</source> @@ -25627,31 +25627,31 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation> </message> <message> <source>File "%1" not found in project.</source> - <translation type="unfinished"></translation> + <translation>Datei "%1" wurde nicht im Projekt gefunden.</translation> </message> <message> <source>No active target.</source> - <translation type="unfinished"></translation> + <translation>Kein Ziel aktiv.</translation> </message> <message> <source>No active build system.</source> - <translation type="unfinished"></translation> + <translation>Kein Build-System aktiv.</translation> </message> <message> <source>Failed to find the ui header.</source> - <translation type="unfinished"></translation> + <translation>UI-Header-Datei konnte nicht gefunden werden.</translation> </message> <message> <source>Renaming via the property editor cannot be synced with C++ code; see QTCREATORBUG-19141. This message will not be repeated.</source> - <translation type="unfinished"></translation> + <translation>Umbenennungen über den Eigenschaften-Editor können nicht mit C++-Code synchronisiert werden; siehe auch QTCREATORBUG-19141. Diese Nachricht wird nicht erneut angezeigt.</translation> </message> <message> <source>Failed to retrieve ui header contents.</source> - <translation type="unfinished"></translation> + <translation>Inhalt des UI-Headers konnte nicht abgerufen werden.</translation> </message> <message> <source>Failed to locate corresponding symbol in ui header.</source> - <translation type="unfinished"></translation> + <translation>Das entsprechende Symbol konnte im UI-Header nicht ausfindig gemacht werden.</translation> </message> <message> <source>Widget box</source> @@ -25802,7 +25802,7 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation> </message> <message> <source>Diff</source> - <translation type="unfinished">Diff</translation> + <translation>Diff</translation> </message> <message> <source>&Diff</source> @@ -25929,7 +25929,7 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation> </message> <message> <source>Rendering diff</source> - <translation type="unfinished"></translation> + <translation>Generiere Diff</translation> </message> <message> <source>[%1] %2</source> @@ -27809,7 +27809,7 @@ Jetzt Commit ausführen?</translation> </message> <message> <source>Waiting for data...</source> - <translation type="unfinished">Warte auf Daten...</translation> + <translation>Warte auf Daten...</translation> </message> <message> <source>Cannot run "%1" in "%2": %3</source> @@ -28130,10 +28130,8 @@ Jetzt Commit ausführen?</translation> <message numerus="yes"> <source>Cannot commit %n files</source> <translation> - <numerusform>Commit schlug für eine Datei fehl -</numerusform> - <numerusform>Commit schlug für %n Dateien fehl -</numerusform> + <numerusform>Commit schlug für eine Datei fehl</numerusform> + <numerusform>Commit schlug für %n Dateien fehl</numerusform> </translation> </message> <message> @@ -28406,11 +28404,11 @@ wenn es außerhalb von git bash aufgerufen wird.</translation> </message> <message> <source>Add instant blame annotations to editor</source> - <translation type="unfinished"></translation> + <translation>Annotationen für "Blame" im Editor anzeigen</translation> </message> <message> <source>Directly annotate each line in the editor when scrolling through the document.</source> - <translation type="unfinished"></translation> + <translation>Annotationen für Zeilen im Editor direkt beim Scrollen durch das Dokument anzeigen.</translation> </message> <message> <source>Git</source> @@ -28418,7 +28416,7 @@ wenn es außerhalb von git bash aufgerufen wird.</translation> </message> <message> <source>Instant Blame</source> - <translation type="unfinished"></translation> + <translation>Instant Blame</translation> </message> <message> <source>Use the patience algorithm for calculating the differences.</source> @@ -29535,7 +29533,7 @@ Leer lassen, um das Dateisystem zu durchsuchen.</translation> </message> <message> <source>Git Blame</source> - <translation type="unfinished"></translation> + <translation>Git Blame</translation> </message> <message> <source>Diff of "%1"</source> @@ -29565,20 +29563,20 @@ Leer lassen, um das Dateisystem zu durchsuchen.</translation> <message> <source>Instant Blame Current Line</source> <comment>Avoid translating "Blame"</comment> - <translation type="unfinished"></translation> + <translation>Instant Blame für aktuelle Zeile</translation> </message> <message> <source>Instant Blame for "%1"</source> <comment>Avoid translating "Blame"</comment> - <translation type="unfinished"></translation> + <translation>Instant Blame für "%1"</translation> </message> <message> <source>Meta+G,Meta+I</source> - <translation type="unfinished"></translation> + <translation>Meta+G,Meta+I</translation> </message> <message> <source>Alt+G,Alt+I</source> - <translation type="unfinished"></translation> + <translation>Alt+G,Alt+I</translation> </message> <message> <source>Diff Current Project</source> @@ -29713,7 +29711,7 @@ Leer lassen, um das Dateisystem zu durchsuchen.</translation> </message> <message> <source>You</source> - <translation type="unfinished"></translation> + <translation>Sie selbst</translation> </message> <message> <source>Amend %1</source> @@ -29753,39 +29751,39 @@ Leer lassen, um das Dateisystem zu durchsuchen.</translation> </message> <message> <source>&Reviewers:</source> - <translation type="unfinished">&Reviewer:</translation> + <translation>&Reviewer:</translation> </message> <message> <source>&Draft/private</source> - <translation type="unfinished">&Entwurf/privat</translation> + <translation>&Entwurf/privat</translation> </message> <message> <source>&Work-in-progress</source> - <translation type="unfinished">&In Arbeit</translation> + <translation>&In Arbeit</translation> </message> <message> <source>Pushes the selected commit and all dependent commits.</source> - <translation type="unfinished">Push des ausgewählten Commit und aller abhängigen Commits.</translation> + <translation>Push des ausgewählten Commit und aller abhängigen Commits.</translation> </message> <message> <source>&Topic:</source> - <translation type="unfinished">&Topic:</translation> + <translation>&Topic:</translation> </message> <message> <source>Push:</source> - <translation type="unfinished">Push:</translation> + <translation>Push:</translation> </message> <message> <source>Commits:</source> - <translation type="unfinished">Commits:</translation> + <translation>Commits:</translation> </message> <message> <source>To:</source> - <translation type="unfinished">Bis:</translation> + <translation>Nach:</translation> </message> <message> <source>Number of commits</source> - <translation type="unfinished">Anzahl der Commits</translation> + <translation>Anzahl der Commits</translation> </message> <message> <source>Comma-separated list of reviewers. @@ -29793,7 +29791,7 @@ Leer lassen, um das Dateisystem zu durchsuchen.</translation> Reviewers can be specified by nickname or email address. Spaces not allowed. Partial names can be used if they are unambiguous.</source> - <translation type="unfinished">Kommaseparierte Liste der Reviewer. + <translation>Kommaseparierte Liste der Reviewer. Reviewer können mit Benutzernamen oder E-Mail-Adresse angegeben werden. Leerzeichen sind nicht erlaubt. @@ -29801,13 +29799,13 @@ Teilnamen können verwendet werden, sofern sie eindeutig sind.</translation> </message> <message> <source>Certificate Error</source> - <translation type="unfinished">Zertifikatsfehler</translation> + <translation>Zertifikatsfehler</translation> </message> <message> <source>Server certificate for %1 cannot be authenticated. Do you want to disable SSL verification for this server? Note: This can expose you to man-in-the-middle attack.</source> - <translation type="unfinished">Server-Zertifikat für %1 kann nicht authentifiziert werden. + <translation>Server-Zertifikat für %1 kann nicht authentifiziert werden. Möchten Sie die SSL-Verifikation für diesen Server abschalten? Hinweis: Dies macht Sie anfällig für Man-in-the-middle-Angriffe.</translation> </message> @@ -31708,19 +31706,19 @@ Ablaufdatum: %3</translation> </message> <message> <source>Symbols in Current Document</source> - <translation type="unfinished"></translation> + <translation>Symbole im aktuellen Dokument</translation> </message> <message> <source>Symbols in Workspace</source> - <translation type="unfinished"></translation> + <translation>Symbole im Arbeitsbereich</translation> </message> <message> <source>Classes and Structs in Workspace</source> - <translation type="unfinished"></translation> + <translation>Klassen und Strukturen im Arbeitsbereich</translation> </message> <message> <source>Functions and Methods in Workspace</source> - <translation type="unfinished"></translation> + <translation>Funktionen und Methoden im Arbeitsbereich</translation> </message> <message> <source>Unexpectedly finished. Restarting in %1 seconds.</source> @@ -31732,19 +31730,19 @@ Ablaufdatum: %3</translation> </message> <message> <source>Show available quick fixes</source> - <translation type="unfinished"></translation> + <translation>Zur Verfügung stehende Quick Fixes anzeigen</translation> </message> <message> <source>Restart %1</source> - <translation type="unfinished"></translation> + <translation>%1 neu starten</translation> </message> <message> <source>Inspect Language Clients</source> - <translation type="unfinished"></translation> + <translation>Language Clients inspizieren</translation> </message> <message> <source>Manage...</source> - <translation type="unfinished">Verwalten...</translation> + <translation>Verwalten...</translation> </message> <message> <source>Name:</source> @@ -31765,7 +31763,8 @@ Ablaufdatum: %3</translation> <message> <source>List of file patterns. Example: *.cpp%1*.h</source> - <translation type="unfinished"></translation> + <translation>Liste von Datei-Mustern. +Beispiel: *.cpp%1*.h</translation> </message> <message> <source>Startup behavior:</source> @@ -31773,15 +31772,15 @@ Example: *.cpp%1*.h</source> </message> <message> <source>Initialization options:</source> - <translation type="unfinished"></translation> + <translation>Initialisierungseinstellungen:</translation> </message> <message> <source>Failed to parse JSON at %1: %2</source> - <translation type="unfinished"></translation> + <translation>JSON konnte bei %1 nicht ausgewertet werden: %2</translation> </message> <message> <source>Language server-specific JSON to pass via "initializationOptions" field of "initialize" request.</source> - <translation type="unfinished"></translation> + <translation>Language Server-abhängiges JSON, das über das "initializationOptions"-Feld der "initialize"-Anfrage übergeben werden soll.</translation> </message> <message> <source>Executable:</source> @@ -31793,7 +31792,7 @@ Example: *.cpp%1*.h</source> </message> <message> <source>JSON Error</source> - <translation type="unfinished"></translation> + <translation>JSON-Fehler</translation> </message> <message> <source>&Add</source> @@ -31817,31 +31816,31 @@ Example: *.cpp%1*.h</source> </message> <message> <source>%1 for %2</source> - <translation type="unfinished"></translation> + <translation>%1 für %2</translation> </message> <message> <source>uninitialized</source> - <translation type="unfinished"></translation> + <translation>nicht initialisiert</translation> </message> <message> <source>initialize requested</source> - <translation type="unfinished"></translation> + <translation>Initialisierung angefordert</translation> </message> <message> <source>initialized</source> - <translation type="unfinished"></translation> + <translation>initialisiert</translation> </message> <message> <source>shutdown requested</source> - <translation type="unfinished"></translation> + <translation>Abschaltung angefordert</translation> </message> <message> <source>shutdown</source> - <translation type="unfinished"></translation> + <translation>abgeschaltet</translation> </message> <message> <source>error</source> - <translation type="unfinished"></translation> + <translation>Fehler</translation> </message> <message> <source>Cannot send data to unstarted server %1</source> @@ -31853,68 +31852,69 @@ Example: *.cpp%1*.h</source> </message> <message> <source>Renaming is not supported with %1</source> - <translation type="unfinished"></translation> + <translation>Umbenennen wird von %1 nicht unterstützt</translation> </message> <message> <source>Invalid parameter in "%1": %2</source> - <translation type="unfinished"></translation> + <translation>Ungültiger Parameter in "%1": +%2</translation> </message> <message> <source>Language Server "%1" Initialize Error</source> - <translation type="unfinished">Fehler bei Initialisierung von Language Server "%1"</translation> + <translation>Fehler beim Initialisieren von Language Server "%1"</translation> </message> <message> <source>Initialize error: </source> - <translation type="unfinished">Fehler bei Initialisierung: </translation> + <translation>Fehler bei Initialisierung: </translation> </message> <message> <source>Initialize result is invalid.</source> - <translation type="unfinished"></translation> + <translation>Ergebnis der Initialisierung ist ungültig.</translation> </message> <message> <source>Server Info is invalid.</source> - <translation type="unfinished"></translation> + <translation>Serverinformation ist ungültig.</translation> </message> <message> <source>No initialize result.</source> - <translation type="unfinished">Initialisierung ohne Ergebnis.</translation> + <translation>Initialisierung ohne Ergebnis.</translation> </message> <message> <source>Copy to Clipboard</source> - <translation type="unfinished">In die Zwischenablage kopieren</translation> + <translation>In die Zwischenablage kopieren</translation> </message> <message> <source>Cannot handle MIME type of message %1</source> - <translation type="unfinished"></translation> + <translation>MIME type %1 der Nachricht kann nicht verarbeitet werden</translation> </message> <message> <source>Generic StdIO Language Server</source> - <translation type="unfinished"></translation> + <translation>Generischer StdIO Language Server</translation> </message> <message> <source>Inspect Language Clients...</source> - <translation type="unfinished"></translation> + <translation>Language Clients inspizieren...</translation> </message> <message> <source>Always On</source> - <translation type="unfinished"></translation> + <translation>Immer an</translation> </message> <message> <source>Requires an Open File</source> - <translation type="unfinished"></translation> + <translation>Benötigt eine offene Datei</translation> </message> <message> <source>Start Server per Project</source> - <translation type="unfinished"></translation> + <translation>Server pro Projekt starten</translation> </message> <message> <source>Search Again to update results and re-enable Replace</source> - <translation type="unfinished"></translation> + <translation>Suchen Sie erneut, um die Ergebnisse zu aktualisieren und das Ersetzen wieder zu aktivieren</translation> </message> <message numerus="yes"> <source>Re&name %n files</source> - <translation type="unfinished"> + <translation> <numerusform>Eine Datei umbe&nennen</numerusform> <numerusform>%n Dateien umbe&nennen</numerusform> </translation> @@ -31922,84 +31922,84 @@ Example: *.cpp%1*.h</source> <message> <source>Files: %1</source> - <translation type="unfinished">Dateien: + <translation>Dateien: %1</translation> </message> <message> <source>%1 is not reachable anymore.</source> - <translation type="unfinished"></translation> + <translation>%1 ist nicht mehr erreichbar.</translation> </message> <message> <source>Matches all symbols from the current document, based on a language server.</source> - <translation type="unfinished"></translation> + <translation>Filtert alle Symbole im aktuellen Dokument, basierend auf einem Language Server.</translation> </message> <message> <source>Expand All</source> - <translation type="unfinished">Alle aufklappen</translation> + <translation>Alle aufklappen</translation> </message> <message> <source>Client Message</source> - <translation type="unfinished"></translation> + <translation>Client-Nachricht</translation> </message> <message> <source>Messages</source> - <translation type="unfinished"></translation> + <translation>Nachrichten</translation> </message> <message> <source>Server Message</source> - <translation type="unfinished"></translation> + <translation>Server-Nachricht</translation> </message> <message> <source>Log File</source> - <translation type="unfinished">Logdatei</translation> + <translation>Logdatei</translation> </message> <message> <source>Capabilities:</source> - <translation type="unfinished">Fähigkeiten:</translation> + <translation>Fähigkeiten:</translation> </message> <message> <source>Dynamic Capabilities:</source> - <translation type="unfinished"></translation> + <translation>Dynamische Fähigkeiten:</translation> </message> <message> <source>Method:</source> - <translation type="unfinished">Methode:</translation> + <translation>Methode:</translation> </message> <message> <source>Options:</source> - <translation type="unfinished"></translation> + <translation>Einstellungen:</translation> </message> <message> <source>Server Capabilities</source> - <translation type="unfinished"></translation> + <translation>Server-Fähigkeiten</translation> </message> <message> <source>Language Client Inspector</source> - <translation type="unfinished"></translation> + <translation>Language Client Inspektor</translation> </message> <message> <source>Log</source> - <translation type="unfinished">Log</translation> + <translation>Log</translation> </message> <message> <source>Capabilities</source> - <translation type="unfinished"></translation> + <translation>Fähigkeiten</translation> </message> <message> <source>Clear</source> - <translation type="unfinished">Löschen</translation> + <translation>Löschen</translation> </message> <message> <source>Incoming</source> - <translation type="unfinished"></translation> + <translation>Eingehend</translation> </message> <message> <source>Outgoing</source> - <translation type="unfinished"></translation> + <translation>Ausgehend</translation> </message> <message> <source>Call Hierarchy</source> - <translation type="unfinished"></translation> + <translation>Aufrufhierarchie</translation> </message> </context> <context> @@ -32022,11 +32022,11 @@ Example: *.cpp%1*.h</source> </message> <message> <source>Could not parse JSON message "%1".</source> - <translation type="unfinished">Die JSON-Nachricht konnte nicht ausgewertet werden: "%1".</translation> + <translation>Die JSON-Nachricht konnte nicht ausgewertet werden: "%1".</translation> </message> <message> <source>Expected a JSON object, but got a JSON "%1" value.</source> - <translation type="unfinished"></translation> + <translation>Ein JSON-Objekt wurde erwartet, aber ein JSON "%1"-Wert wurde gefunden.</translation> </message> </context> <context> @@ -44425,7 +44425,7 @@ wirklich löschen?</translation> </message> <message> <source>"%1" produced no output: %2.</source> - <translation type="unfinished"></translation> + <translation>"%1" hat keine Ausgabe generiert: %2.</translation> </message> <message> <source>qmake "%1" is not an executable.</source> @@ -44433,7 +44433,7 @@ wirklich löschen?</translation> </message> <message> <source>No QML utility installed.</source> - <translation type="unfinished"></translation> + <translation>Kein QML-Werkzeug installiert.</translation> </message> <message> <source>Desktop</source> @@ -44463,7 +44463,7 @@ wirklich löschen?</translation> </message> <message> <source>qmake path:</source> - <translation type="unfinished"></translation> + <translation>Pfad zu qmake:</translation> </message> <message> <source>Register documentation:</source> @@ -44503,7 +44503,7 @@ wirklich löschen?</translation> </message> <message> <source>qmake Path</source> - <translation type="unfinished"></translation> + <translation>Pfad zu qmake</translation> </message> <message> <source>Qt version %1 for %2</source> @@ -44551,7 +44551,7 @@ wirklich löschen?</translation> </message> <message> <source>Linking with a Qt installation automatically registers Qt versions and kits, and other tools that were installed with that Qt installer, in this Qt Creator installation. Other Qt Creator installations are not affected.</source> - <translation type="unfinished"></translation> + <translation>Das Verknüpfen mit einer Qt-Installation registriert Qt-Versionen, Kits und andere mit dem Qt-Installationsprogramm installierte Werkzeuge automatisch in dieser Qt Creator-Installation. Dies hat keine Auswirkung auf andere Qt Creator-Installationen.</translation> </message> <message> <source>%1's resource directory is not writable.</source> @@ -44559,11 +44559,11 @@ wirklich löschen?</translation> </message> <message> <source>Error Linking With Qt</source> - <translation type="unfinished"></translation> + <translation>Fehler beim Verknüpfen mit Qt</translation> </message> <message> <source>Could not write to "%1".</source> - <translation type="unfinished"></translation> + <translation>Schreiben nach "%1" ist fehlgeschlagen.</translation> </message> <message> <source>%1 is currently linked to "%2".</source> @@ -44725,35 +44725,35 @@ wirklich löschen?</translation> </message> <message> <source>Name:</source> - <translation type="unfinished">Name:</translation> + <translation>Name:</translation> </message> <message> <source>Invalid Qt version</source> - <translation type="unfinished">Ungültige Qt-Version</translation> + <translation>Ungültige Qt-Version</translation> </message> <message> <source>ABI:</source> - <translation type="unfinished">ABI:</translation> + <translation>ABI:</translation> </message> <message> <source>Source:</source> - <translation type="unfinished">Quelle:</translation> + <translation>Quelle:</translation> </message> <message> <source>mkspec:</source> - <translation type="unfinished">mkspec:</translation> + <translation>mkspec:</translation> </message> <message> <source>qmake:</source> - <translation type="unfinished">qmake:</translation> + <translation>qmake:</translation> </message> <message> <source>Default:</source> - <translation type="unfinished">Vorgabe:</translation> + <translation>Vorgabe:</translation> </message> <message> <source>Version:</source> - <translation type="unfinished">Version:</translation> + <translation>Version:</translation> </message> <message> <source>Qt version</source> @@ -44781,11 +44781,11 @@ wirklich löschen?</translation> </message> <message> <source>The host location of the current Qt version.</source> - <translation type="unfinished"></translation> + <translation>Ort der aktuellen Qt-Version auf dem Host.</translation> </message> <message> <source>The installation location of the current Qt version's internal host executable files.</source> - <translation type="unfinished"></translation> + <translation>Das Installationsverzeichnis für interne ausführbare Dateien für den Host der aktuellen Qt-Version.</translation> </message> <message> <source>The installation location of the current Qt version's header files.</source> @@ -44805,7 +44805,7 @@ wirklich löschen?</translation> </message> <message> <source>The installation location of the current Qt version's internal executable files.</source> - <translation type="unfinished"></translation> + <translation>Das Installationsverzeichnis für interne ausführbare Dateien der aktuellen Qt-Version.</translation> </message> <message> <source>The installation location of the current Qt version's plugins.</source> @@ -44849,27 +44849,27 @@ wirklich löschen?</translation> </message> <message> <source>Timeout running "%1".</source> - <translation type="unfinished"></translation> + <translation>Zeitüberschreitung bei Ausführung von "%1".</translation> </message> <message> <source>No Qt version.</source> - <translation type="unfinished">Keine Qt-Version.</translation> + <translation>Keine Qt-Version.</translation> </message> <message> <source>Invalid Qt version.</source> - <translation type="unfinished">Ungültige Qt-Version.</translation> + <translation>Ungültige Qt-Version.</translation> </message> <message> <source>Requires Qt 5.0.0 or newer.</source> - <translation type="unfinished">Erfordert Qt 5.0.0 oder neuer.</translation> + <translation>Erfordert Qt 5.0.0 oder neuer.</translation> </message> <message> <source>Requires Qt 5.3.0 or newer.</source> - <translation type="unfinished">Erfordert Qt 5.3.0 oder neuer.</translation> + <translation>Erfordert Qt 5.3.0 oder neuer.</translation> </message> <message> <source>This Qt Version does not contain Qt Quick Compiler.</source> - <translation type="unfinished">Diese Qt-Version enthält keinen Qt Quick Compiler.</translation> + <translation>Diese Qt-Version enthält keinen Qt Quick Compiler.</translation> </message> <message> <source>The Qt library to use for all projects using this kit.<br>A Qt version is required for qmake-based projects and optional when using other build systems.</source> @@ -44893,11 +44893,11 @@ wirklich löschen?</translation> </message> <message> <source>QML debugging and profiling:</source> - <translation type="unfinished"></translation> + <translation>QML-Debuggen und -Profiling:</translation> </message> <message> <source>Might make your application vulnerable.<br/>Only use in a safe environment.</source> - <translation type="unfinished"></translation> + <translation>Kann Ihre Anwendung angreifbar machen.<br/>Verwenden Sie dies nur in einer sicheren Umgebung.</translation> </message> <message> <source>Qt Quick Compiler:</source> @@ -44909,7 +44909,7 @@ wirklich löschen?</translation> </message> <message> <source>If you plan to provide translations for your project's user interface via the Qt Linguist tool, please select a language here. A corresponding translation (.ts) file will be generated for you.</source> - <translation type="unfinished"></translation> + <translation>Falls Sie planen, Übersetzungen für die Benutzeroberfläche Ihres Projekts über das Qt Linguist-Werkzeug bereit zu stellen, wählen Sie hier eine Sprache. Eine zugehörige Übersetzungsdatei (.ts) wird für Sie erzeugt.</translation> </message> <message> <source><none></source> @@ -44933,31 +44933,31 @@ wirklich löschen?</translation> </message> <message> <source>Link with a Qt installation to automatically register Qt versions and kits? To do this later, select Edit > Preferences > Kits > Qt Versions > Link with Qt.</source> - <translation type="unfinished"></translation> + <translation>Wollen Sie eine Qt-Installation verknüpfen, um Qt-Versionen und Kits automatisch zu registrieren? Dies geht auch später unter Bearbeiten > Einstellungen > Kits > Qt-Versionen > Mit Qt verknüpfen.</translation> </message> <message> <source>Full path to the host bin directory of the Qt version in the active kit of the project containing the current document.</source> - <translation type="unfinished"></translation> + <translation>Vollständiger Pfad zum Host-"bin"-Verzeichnis der Qt-Version des aktiven Kits des Projekts des aktuellen Dokuments.</translation> </message> <message> <source>Full path to the target bin directory of the Qt version in the active kit of the project containing the current document.<br>You probably want %1 instead.</source> - <translation type="unfinished"></translation> + <translation>Vollständiger Pfad zum Ziel-"bin"-Verzeichnis der Qt-Version des aktiven Kits des Projekts des aktuellen Dokuments.<br>Wahrscheinlich sollten Sie stattdessen %1 nutzen.</translation> </message> <message> <source>Full path to the host libexec directory of the Qt version in the active kit of the project containing the current document.</source> - <translation type="unfinished"></translation> + <translation>Vollständiger Pfad zum Host-"libexec"-Verzeichnis der Qt-Version des aktiven Kits des Projekts des aktuellen Dokuments.</translation> </message> <message> <source>Full path to the host bin directory of the Qt version in the active kit of the active project.</source> - <translation type="unfinished"></translation> + <translation>Vollständiger Pfad zum Host-"bin"-Verzeichnis der Qt-Version des aktiven Kits des aktiven Projekts.</translation> </message> <message> <source>Full path to the target bin directory of the Qt version in the active kit of the active project.<br>You probably want %1 instead.</source> - <translation type="unfinished"></translation> + <translation>Vollständiger Pfad zum Ziel-"bin"-Verzeichnis der Qt-Version des aktiven Kits des aktiven Projekts.<br>Wahrscheinlich sollten Sie stattdessen %1 nutzen.</translation> </message> <message> <source>Full path to the libexec bin directory of the Qt version in the active kit of the active project.</source> - <translation type="unfinished"></translation> + <translation>Vollständiger Pfad zum Host-"libexec"-Verzeichnis der Qt-Version des aktiven Kits des aktiven Projekts.</translation> </message> <message> <source>[Inexact] </source> @@ -44967,17 +44967,17 @@ wirklich löschen?</translation> <message> <source>Boot2Qt</source> <comment>Qt version is used for Boot2Qt development</comment> - <translation type="unfinished">Boot2Qt</translation> + <translation>Boot2Qt</translation> </message> <message> <source>Featured</source> <comment>Category for highlighted examples</comment> - <translation type="unfinished"></translation> + <translation>Empfohlen</translation> </message> <message> <source>Other</source> <comment>Category for all other examples</comment> - <translation type="unfinished">Andere</translation> + <translation>Andere</translation> </message> </context> <context> @@ -45848,19 +45848,19 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e </message> <message> <source>Add Files</source> - <translation type="unfinished">Dateien hinzufügen</translation> + <translation>Dateien hinzufügen</translation> </message> <message> <source>Remove</source> - <translation type="unfinished"></translation> + <translation>Entfernen</translation> </message> <message> <source>Alias:</source> - <translation type="unfinished">Aliasname:</translation> + <translation>Aliasname:</translation> </message> <message> <source>Properties</source> - <translation type="unfinished">Eigenschaften</translation> + <translation>Eigenschaften</translation> </message> <message> <source>Invalid file location</source> @@ -47647,55 +47647,55 @@ Failed to open file "%1"</source> </message> <message> <source>Waiting for data...</source> - <translation type="unfinished">Warte auf Daten...</translation> + <translation>Warte auf Daten...</translation> </message> <message> <source>Subversion Command</source> - <translation type="unfinished">Subversion-Kommando</translation> + <translation>Subversion-Kommando</translation> </message> <message> <source>Subversion command:</source> - <translation type="unfinished">Subversion-Kommando:</translation> + <translation>Subversion-Kommando:</translation> </message> <message> <source>Username:</source> - <translation type="unfinished"></translation> + <translation>Benutzername:</translation> </message> <message> <source>Password:</source> - <translation type="unfinished">Passwort:</translation> + <translation>Passwort:</translation> </message> <message> <source>Ignore whitespace changes in annotation</source> - <translation type="unfinished">Änderungen der Leerzeichen bei Annotation weglassen</translation> + <translation>Änderungen der Leerzeichen bei Annotation weglassen</translation> </message> <message> <source>Log count:</source> - <translation type="unfinished">Log-Anzeige beschränken auf:</translation> + <translation>Log-Anzeige beschränken auf:</translation> </message> <message> <source>Timeout:</source> - <translation type="unfinished">Zeitlimit:</translation> + <translation>Zeitlimit:</translation> </message> <message> <source>s</source> - <translation type="unfinished">s</translation> + <translation>s</translation> </message> <message> <source>Subversion</source> - <translation type="unfinished">Subversion</translation> + <translation>Subversion</translation> </message> <message> <source>Configuration</source> - <translation type="unfinished">Konfiguration</translation> + <translation>Konfiguration</translation> </message> <message> <source>Authentication</source> - <translation type="unfinished">Authentifizierung</translation> + <translation>Authentifizierung</translation> </message> <message> <source>Miscellaneous</source> - <translation type="unfinished">Sonstige Einstellungen</translation> + <translation>Sonstige Einstellungen</translation> </message> </context> <context> diff --git a/share/qtcreator/translations/qtcreator_zh_TW.ts b/share/qtcreator/translations/qtcreator_zh_TW.ts index 23b7d93115..7c1e032342 100644 --- a/share/qtcreator/translations/qtcreator_zh_TW.ts +++ b/share/qtcreator/translations/qtcreator_zh_TW.ts @@ -9,7 +9,7 @@ </message> <message> <source>Unable to send command line arguments to the already running instance. It appears to be not responding. Do you want to start a new instance of Creator?</source> - <translation>無法傳送命令列參數到正在執行中的實體。該實體似乎無法回應。您要重新啟動一個 Creator 的實體嗎?</translation> + <translation>無法傳送命令列引數到正在執行中的實體。該實體似乎無法回應。您要重新啟動一個 Creator 的實體嗎?</translation> </message> <message> <source>Could not send message</source> @@ -190,7 +190,7 @@ </message> <message> <source>Arguments:</source> - <translation>參數:</translation> + <translation>引數:</translation> </message> <message> <source>Select Working Directory</source> @@ -246,23 +246,23 @@ </message> <message> <source>The directory %1 already contains a cbp file, which is recent enough. You can pass special arguments or change the used tool chain here and rerun CMake. Or simply finish the wizard directly.</source> - <translation type="obsolete">目錄 %1 已存在一份足夠新的 cbp 檔。您可以在此傳送特殊參數,或是變更所使用的工具鍊,然後重新執行 CMake。或者您也可以直接結束此精靈。</translation> + <translation type="obsolete">目錄 %1 已存在一份足夠新的 cbp 檔。您可以在此傳送特殊引數,或是變更所使用的工具鍊,然後重新執行 CMake。或者您也可以直接結束此精靈。</translation> </message> <message> <source>The directory %1 does not contain a cbp file. Qt Creator needs to create this file by running CMake. Some projects require command line arguments to the initial CMake call.</source> - <translation>目錄 %1 中沒有 cbp 檔。Qt Creator 需要執行 CMake 以建立此檔案。某些專案需要命令列參數來初始化 CMake 的呼叫。</translation> + <translation>目錄 %1 中沒有 cbp 檔。Qt Creator 需要執行 CMake 以建立此檔案。某些專案需要命令列引數來初始化 CMake 的呼叫。</translation> </message> <message> <source>The directory %1 contains an outdated .cbp file. Qt Creator needs to update this file by running CMake. If you want to add additional command line arguments, add them below. Note that CMake remembers command line arguments from the previous runs.</source> - <translation>目錄 %1 包含了一個過期的 .cbp 檔。Qt Creator需要執行 CMake 以更新此檔案。如果您想新增額外的命令列參數,請新增在下面。注意 CMake 會記住上次執行時的命令列參數。</translation> + <translation>目錄 %1 包含了一個過期的 .cbp 檔。Qt Creator需要執行 CMake 以更新此檔案。如果您想新增額外的命令列引數,請新增在下面。注意 CMake 會記住上次執行時的命令列引數。</translation> </message> <message> <source>The directory %1 specified in a build-configuration, does not contain a cbp file. Qt Creator needs to recreate this file, by running CMake. Some projects require command line arguments to the initial CMake call. Note that CMake remembers command line arguments from the previous runs.</source> - <translation>在建置組態中指定的目錄 %1 中未包含 cbp 檔案。Qt Creator 需要執行 CMake 以重新建立此檔案。某些專案需要命令列參數來初始化 CMake 的呼叫。如果您想新增額外的命令列參數,請新增在下面。注意 CMake 會記住上次執行時的命令列參數。</translation> + <translation>在建置組態中指定的目錄 %1 中未包含 cbp 檔案。Qt Creator 需要執行 CMake 以重新建立此檔案。某些專案需要命令列引數來初始化 CMake 的呼叫。如果您想新增額外的命令列引數,請新增在下面。注意 CMake 會記住上次執行時的命令列引數。</translation> </message> <message> <source>Qt Creator needs to run CMake in the new build directory. Some projects require command line arguments to the initial CMake call.</source> - <translation>Qt Creator 需要在新的建置目錄下執行 CMake。某些專案需要命令列參數來初始化 CMake 的呼叫。</translation> + <translation>Qt Creator 需要在新的建置目錄下執行 CMake。某些專案需要命令列引數來初始化 CMake 的呼叫。</translation> </message> <message> <source>Refreshing cbp file in %1.</source> @@ -302,7 +302,7 @@ </message> <message> <source>Additional arguments:</source> - <translation>額外的參數:</translation> + <translation>額外的引數:</translation> </message> <message> <source>Targets:</source> @@ -1251,7 +1251,7 @@ </message> <message> <source>Debugging complex shell commands in a terminal is currently not supported.</source> - <translation>目前不支援在終端機中對複雜的 shell 指令除錯。</translation> + <translation>目前不支援在終端機中對複雜的 shell 命令除錯。</translation> </message> <message> <source>Quoting error in terminal command.</source> @@ -1259,7 +1259,7 @@ </message> <message> <source>Terminal command may not be a shell command.</source> - <translation>終端機指令可能不是一個 shell 指令。</translation> + <translation>終端機命令可能不是一個 shell 命令。</translation> </message> <message> <source>Cannot start the terminal emulator '%1'.</source> @@ -1744,7 +1744,7 @@ </message> <message> <source>Generate a <i>brief</i> command with an initial description for the corresponding declaration</source> - <translation>對相關的宣告產生一個<i>簡易</i>的指令與初始的描述</translation> + <translation>對相關的宣告產生一個<i>簡易</i>的命令與初始的描述</translation> </message> <message> <source>Generate brief description</source> @@ -2010,7 +2010,7 @@ For more details, see/etc/sysctl.d/10-ptrace.conf </message> <message> <source>Command:</source> - <translation>指令:</translation> + <translation>命令:</translation> </message> <message> <source>Message:</source> @@ -2103,7 +2103,7 @@ For more details, see/etc/sysctl.d/10-ptrace.conf </message> <message> <source>Breakpoint on QML Signal Handler</source> - <translation type="obsolete">在 QML 信號處理器的中斷點</translation> + <translation type="obsolete">在 QML 訊號處理器的中斷點</translation> </message> <message> <source>Breakpoint at JavaScript throw</source> @@ -2152,7 +2152,7 @@ For more details, see/etc/sysctl.d/10-ptrace.conf </message> <message> <source>Additional &arguments:</source> - <translation>額外的參數(&A):</translation> + <translation>額外的引數(&A):</translation> </message> <message> <source>Debugger Paths</source> @@ -2244,7 +2244,7 @@ For more details, see/etc/sysctl.d/10-ptrace.conf </message> <message> <source>Show a Message Box When Receiving a Signal</source> - <translation>當接收到信號時顯示訊息盒</translation> + <translation>當接收到訊號時顯示訊息盒</translation> </message> <message> <source>Log Time Stamps</source> @@ -2534,7 +2534,7 @@ For more details, see/etc/sysctl.d/10-ptrace.conf <source>The gdb process has not responded to a command within %n second(s). This could mean it is stuck in an endless loop or taking longer than expected to perform the operation. You can choose between waiting longer or abort debugging.</source> <translation type="obsolete"> - <numerusform>GDB 行程在 %n 秒之內未回應指令。這可能表示程式陷入無窮迴圈,或執行操作的時間超過預期。 + <numerusform>GDB 行程在 %n 秒之內未回應命令。這可能表示程式陷入無窮迴圈,或執行操作的時間超過預期。 您可以選擇繼續等待或中止除錯。</numerusform> </translation> </message> @@ -2552,7 +2552,7 @@ You can choose between waiting longer or abort debugging.</source> </message> <message> <source>Application exited after receiving signal %1</source> - <translation>應用程式接收到信號 %1 後退出</translation> + <translation>應用程式接收到訊號 %1 後退出</translation> </message> <message> <source>Application exited normally</source> @@ -2666,7 +2666,7 @@ Try: %2</source> </message> <message> <source>Processing queued commands</source> - <translation>處理佇列中的指令中</translation> + <translation>處理佇列中的命令中</translation> </message> <message numerus="yes"> <source>The gdb process has not responded to a command within %n second(s). This could mean it is stuck in an endless loop or taking longer than expected to perform the operation. @@ -2932,16 +2932,16 @@ on slow machines. In this case, the value should be increased.</source> for less noisy debugging. For example, the atomic reference counting code is skipped, and a single 'Step Into' for a signal emission ends up directly in the slot connected to it.</source> - <translation type="obsolete">允許「單步進入」將多個步驟合併到一個步驟,以減少除錯時的冗餘情況。例如,最小參考計算(atomic reference counting)代碼就會被跳過,一個發射信號的「單步進入」會直接跳到它的信號槽等等。</translation> + <translation type="obsolete">允許「單步進入」將多個步驟合併到一個步驟,以減少除錯時的冗餘情況。例如,最小參考計算(atomic reference counting)代碼就會被跳過,一個發射訊號的「單步進入」會直接跳到它的槽等等。</translation> </message> <message> <source>Show a message box when receiving a signal</source> - <translation>當收到信號時顯示訊息盒</translation> + <translation>當收到訊號時顯示訊息盒</translation> </message> <message> <source>This will show a message box as soon as your application receives a signal like SIGSEGV during debugging.</source> - <translation type="obsolete">在您的應用程式除錯時,若收到系統信號,如 SIGSEGV,會立即顯示一個訊息盒。</translation> + <translation type="obsolete">在您的應用程式除錯時,若收到系統訊號,如 SIGSEGV,會立即顯示一個訊息盒。</translation> </message> <message> <source>The number of seconds Qt Creator will wait before it terminates @@ -3068,7 +3068,7 @@ at debugger startup.</source> </message> <message> <source>Additional Startup Commands</source> - <translation>額外的啟動指令</translation> + <translation>額外的啟動命令</translation> </message> <message> <source><html><head/><body><p>GDB commands entered here will be executed after GDB has been started and the debugging helpers have been initialized.</p><p>You can add commands to load further debugging helpers here, or modify existing ones.</p><p>To execute arbitrary Python scripts, use <i>python execfile('/path/to/script.py')</i>.</p></body></html></source> @@ -3288,7 +3288,7 @@ at debugger startup.</source> </message> <message> <source>&Arguments:</source> - <translation type="obsolete">參數(&A):</translation> + <translation type="obsolete">引數(&A):</translation> </message> <message> <source>&Tool chain:</source> @@ -3830,7 +3830,7 @@ Rebuilding the project might help.</source> </message> <message> <source>Signals && Slots Editor</source> - <translation>信號與信號槽編輯器</translation> + <translation>訊號與槽編輯器</translation> </message> <message> <source>Widget box</source> @@ -3846,7 +3846,7 @@ Rebuilding the project might help.</source> </message> <message> <source>Edit Signals/Slots</source> - <translation>編輯信號/信號槽</translation> + <translation>編輯訊號/槽</translation> </message> <message> <source>Edit Buddies</source> @@ -3888,7 +3888,7 @@ Please verify the #include-directives.</source> </message> <message> <source>Error finding/adding a slot.</source> - <translation>尋找/新增信號槽時發生錯誤。</translation> + <translation>尋找/新增槽時發生錯誤。</translation> </message> <message> <source>Internal error: No project could be found for %1.</source> @@ -4102,7 +4102,7 @@ Reason: %3</source> <message numerus="yes"> <source>%n lines filtered</source> <translation> - <numerusform>已過濾 %n 行</numerusform> + <numerusform>已篩選 %n 行</numerusform> </translation> </message> <message> @@ -4165,7 +4165,7 @@ Reason: %3</source> </message> <message> <source>Argument must be positive: %1=%2</source> - <translation>參數必須為正值:%1=%2</translation> + <translation>引數必須為正值:%1=%2</translation> </message> <message> <source>General</source> @@ -4306,11 +4306,11 @@ Reason: %3</source> <name>FilterNameDialogClass</name> <message> <source>Add Filter Name</source> - <translation>新增過濾器名稱</translation> + <translation>新增篩選器名稱</translation> </message> <message> <source>Filter Name:</source> - <translation>過濾器名稱:</translation> + <translation>篩選器名稱:</translation> </message> </context> <context> @@ -4825,7 +4825,7 @@ Reason: %3</source> </message> <message> <source>The command 'git pull --rebase' failed, aborting rebase.</source> - <translation>指令 'git pull --rebase' 失敗,中止執行 rebase。</translation> + <translation>命令 'git pull --rebase' 失敗,中止執行 rebase。</translation> </message> <message> <source>Git SVN Log</source> @@ -5284,7 +5284,7 @@ Reason: %3</source> </message> <message> <source>Arguments:</source> - <translation>參數:</translation> + <translation>引數:</translation> </message> <message> <source>Git needs to find Perl in the environment.</source> @@ -5308,7 +5308,7 @@ Reason: %3</source> </message> <message> <source>Command:</source> - <translation type="unfinished">指令:</translation> + <translation type="unfinished">命令:</translation> </message> </context> <context> @@ -5363,27 +5363,27 @@ Reason: %3</source> </message> <message> <source>Filters</source> - <translation>過濾器</translation> + <translation>篩選器</translation> </message> <message> <source>Unfiltered</source> - <translation>未過濾</translation> + <translation>未篩選</translation> </message> <message> <source>No user defined filters available or no filter selected.</source> - <translation>沒有使用者定義的過濾器可使用,或者未選取過濾器。</translation> + <translation>沒有使用者定義的篩選器可使用,或者未選取篩選器。</translation> </message> <message> <source>The filter "%1" will show every documentation file available, as no attributes are specified.</source> - <translation>當沒有指定任何屬性時,過濾器 "%1" 會顯示所有可用的文件檔。</translation> + <translation>當沒有指定任何屬性時,篩選器 "%1" 會顯示所有可用的文件檔。</translation> </message> <message> <source>The filter "%1" will only show documentation files that have the attribute %2 specified.</source> - <translation>過濾器 "%1" 只會顯示包含屬性 %2 的文件檔。</translation> + <translation>篩選器 "%1" 只會顯示包含屬性 %2 的文件檔。</translation> </message> <message> <source>The filter "%1" will only show documentation files that have the attributes %2 specified.</source> - <translation>過濾器 "%1" 只會顯示包含屬性 %2 的文件檔。</translation> + <translation>篩選器 "%1" 只會顯示包含屬性 %2 的文件檔。</translation> </message> <message> <source><html><body> @@ -5392,7 +5392,7 @@ Add, modify, and remove document filters, which determine the documentation set </p></body></html></source> <translation type="obsolete"><html><body> <p> -新增,變更與移除文件過濾器。它決定在說明模式中要顯示的文件集。屬性是在文件中定義的。選擇屬性可以顯示相關文件的集合。請注意,某些屬性會在多個文件檔中被定義。 +新增,變更與移除文件篩選器。它決定在說明模式中要顯示的文件集。屬性是在文件中定義的。選擇屬性可以顯示相關文件的集合。請注意,某些屬性會在多個文件檔中被定義。 </p></body></html></translation> </message> <message> @@ -5580,7 +5580,7 @@ Add, modify, and remove document filters, which determine the documentation set </message> <message> <source>Filtered by:</source> - <translation>過濾方式:</translation> + <translation>篩選方式:</translation> </message> <message> <source>Indexing</source> @@ -5946,7 +5946,7 @@ Add, modify, and remove document filters, which determine the documentation set <message> <source>Error running "where" on %1: %2</source> <extracomment>Failed to run p4 "where" to resolve a Perforce file name to a local file system name.</extracomment> - <translation>在 %1 執行 "where" 指令時發生錯誤:%2</translation> + <translation>在 %1 執行 "where" 命令時發生錯誤:%2</translation> </message> <message> <source>The file is not mapped</source> @@ -5975,7 +5975,7 @@ Add, modify, and remove document filters, which determine the documentation set </message> <message> <source>Could not start perforce '%1'. Please check your settings in the preferences.</source> - <translation>無法啟動 perforce '%1'。請檢查喜好設定中的設置。</translation> + <translation>無法啟動 perforce '%1'。請檢查偏好設定中的設置。</translation> </message> <message> <source>Perforce did not respond within timeout limit (%1 ms).</source> @@ -5991,12 +5991,12 @@ Add, modify, and remove document filters, which determine the documentation set </message> <message> <source>p4 diff %1</source> - <translatorcomment>指令,還是說明?</translatorcomment> + <translatorcomment>命令,還是說明?</translatorcomment> <translation>p4 diff %1</translation> </message> <message> <source>p4 describe %1</source> - <translatorcomment>指令,還是說明?</translatorcomment> + <translatorcomment>命令,還是說明?</translatorcomment> <translation>p4 describe %1</translation> </message> <message> @@ -6061,7 +6061,7 @@ Add, modify, and remove document filters, which determine the documentation set </message> <message> <source>P4 command:</source> - <translation>P4 指令:</translation> + <translation>P4 命令:</translation> </message> <message> <source>P4 client:</source> @@ -6093,7 +6093,7 @@ Add, modify, and remove document filters, which determine the documentation set </message> <message> <source>Perforce Command</source> - <translation>Perforce 指令</translation> + <translation>Perforce 命令</translation> </message> <message> <source>Change:</source> @@ -6131,7 +6131,7 @@ Add, modify, and remove document filters, which determine the documentation set </message> <message> <source>The option %1 requires an argument.</source> - <translation>選項 %1 需要參數。</translation> + <translation>選項 %1 需要引數。</translation> </message> <message> <source>Failed Plugins</source> @@ -6325,7 +6325,7 @@ Add, modify, and remove document filters, which determine the documentation set <message> <source>Filter: %1 %2</source> - <translation>過濾器:%1 + <translation>篩選器:%1 %2</translation> </message> <message> @@ -6522,7 +6522,7 @@ Add, modify, and remove document filters, which determine the documentation set </message> <message> <source>Command:</source> - <translation>指令:</translation> + <translation>命令:</translation> </message> <message> <source>Working directory:</source> @@ -6530,11 +6530,11 @@ Add, modify, and remove document filters, which determine the documentation set </message> <message> <source>Command arguments:</source> - <translation type="obsolete">指令參數:</translation> + <translation type="obsolete">命令引數:</translation> </message> <message> <source>Arguments:</source> - <translation type="unfinished">參數:</translation> + <translation type="unfinished">引數:</translation> </message> <message> <source>Project File Factory</source> @@ -6602,7 +6602,7 @@ to project '%2'.</source> </message> <message> <source>Filter Tree</source> - <translation>過濾樹狀圖</translation> + <translation>篩選樹狀圖</translation> </message> <message> <source>Summary</source> @@ -6710,7 +6710,7 @@ to project '%2'.</source> </message> <message> <source>Filter by categories</source> - <translation>依分類過濾</translation> + <translation>依分類篩選</translation> </message> <message> <source>Show Warnings</source> @@ -7547,7 +7547,7 @@ Preselects a desktop Qt for building the application if available.</source> </message> <message> <source>Arguments:</source> - <translation>參數:</translation> + <translation>引數:</translation> </message> <message> <source>Select Working Directory</source> @@ -7803,7 +7803,7 @@ Preselects a desktop Qt for building the application if available.</source> <name>QtC::Core</name> <message> <source>Filter Configuration</source> - <translation>過濾器組態</translation> + <translation>篩選器組態</translation> </message> <message> <source>Limit to prefix</source> @@ -7815,7 +7815,7 @@ Preselects a desktop Qt for building the application if available.</source> </message> <message> <source>Generic Directory Filter</source> - <translation>一般目錄過濾</translation> + <translation>一般目錄篩選</translation> </message> <message> <source>Select Directory</source> @@ -7824,16 +7824,16 @@ Preselects a desktop Qt for building the application if available.</source> <message numerus="yes"> <source>%1 filter update: %n files</source> <translation> - <numerusform>%1 過濾器更新:%n 個檔案</numerusform> + <numerusform>%1 篩選器更新:%n 個檔案</numerusform> </translation> </message> <message> <source>%1 filter update: 0 files</source> - <translation>%1 過濾器更新:0 個檔案</translation> + <translation>%1 篩選器更新:0 個檔案</translation> </message> <message> <source>%1 filter update: canceled</source> - <translation>%1 過濾器更新:已取消</translation> + <translation>%1 篩選器更新:已取消</translation> </message> <message> <source>Name:</source> @@ -7841,7 +7841,7 @@ Preselects a desktop Qt for building the application if available.</source> </message> <message> <source>Specify file name filters, separated by comma. Filters may contain wildcards.</source> - <translation>指定檔案名稱過濾器,用逗號分隔。過濾器可以包含萬用字元符。</translation> + <translation>指定檔案名稱篩選器,用逗號分隔。篩選器可以包含萬用字元符。</translation> </message> <message> <source>Remove</source> @@ -7871,7 +7871,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t </message> <message> <source>Filter configuration</source> - <translation type="obsolete">過濾器組態</translation> + <translation type="obsolete">篩選器組態</translation> </message> <message> <source>Include hidden files</source> @@ -7879,7 +7879,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t </message> <message> <source>Filter:</source> - <translation>過濾器:</translation> + <translation>篩選器:</translation> </message> <message> <source>Add Filter Configuration</source> @@ -7887,7 +7887,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t </message> <message> <source>Available filters</source> - <translation>可使用的過濾器</translation> + <translation>可使用的篩選器</translation> </message> <message> <source>Ctrl+K</source> @@ -7931,7 +7931,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t </message> <message> <source>Configure Filters</source> - <translation>過濾器組態</translation> + <translation>篩選器組態</translation> </message> <message> <source> min</source> @@ -8029,7 +8029,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t </message> <message> <source>Subversion command:</source> - <translation>Subversion 指令:</translation> + <translation>Subversion 命令:</translation> </message> <message> <source>Username:</source> @@ -8037,7 +8037,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t </message> <message> <source>Subversion Command</source> - <translation>Subversion 指令</translation> + <translation>Subversion 命令</translation> </message> <message> <source>&Subversion</source> @@ -8268,7 +8268,7 @@ To do this, you type this shortcut and a space in the Locator entry field, and t </message> <message> <source>List of comma separated wildcard filters</source> - <translation>以逗號分隔的萬用字元符過濾器列表</translation> + <translation>以逗號分隔的萬用字元符篩選器列表</translation> </message> <message> <source>untitled</source> @@ -9255,7 +9255,7 @@ Will not be applied to whitespace in comments and strings.</source> <name>QtC::Help</name> <message> <source>Filter</source> - <translation>過濾器</translation> + <translation>篩選器</translation> </message> <message> <source>Choose a topic for <b>%1</b>:</source> @@ -9400,7 +9400,7 @@ Will not be applied to whitespace in comments and strings.</source> </message> <message> <source>CVS command:</source> - <translation>CVS 指令:</translation> + <translation>CVS 命令:</translation> </message> <message> <source>CVS root:</source> @@ -9879,14 +9879,14 @@ Will not be applied to whitespace in comments and strings.</source> </message> <message> <source>Preferences</source> - <translation>喜好設定</translation> + <translation>偏好設定</translation> </message> </context> <context> <name>QtC::CodePaster</name> <message> <source>No Server defined in the CodePaster preferences.</source> - <translation>在 CodePaster 喜好設定中沒有定義伺服器。</translation> + <translation>在 CodePaster 偏好設定中沒有定義伺服器。</translation> </message> <message> <source>No Server defined in the CodePaster options.</source> @@ -10248,7 +10248,7 @@ Will not be applied to whitespace in comments and strings.</source> </message> <message> <source>CVS Command</source> - <translation>CVS 指令</translation> + <translation>CVS 命令</translation> </message> </context> <context> @@ -11064,7 +11064,7 @@ Reason: %2</source> </message> <message> <source>Command:</source> - <translation>指令:</translation> + <translation>命令:</translation> </message> <message> <source>User</source> @@ -11482,7 +11482,7 @@ Reason: %2</source> </message> <message> <source>Mercurial Command</source> - <translation>Mercurial 指令</translation> + <translation>Mercurial 命令</translation> </message> </context> <context> @@ -11877,7 +11877,7 @@ For qmlproject projects, use the importPaths property to add import paths.</sour </message> <message> <source>Filter</source> - <translation>過濾器</translation> + <translation>篩選器</translation> </message> <message> <source>Clear text</source> @@ -12036,7 +12036,7 @@ For qmlproject projects, use the importPaths property to add import paths.</sour <name>QtC::Core</name> <message> <source>Command</source> - <translation>指令</translation> + <translation>命令</translation> </message> <message> <source>Label</source> @@ -12085,7 +12085,7 @@ For qmlproject projects, use the importPaths property to add import paths.</sour </message> <message> <source>CVS Command Log Editor</source> - <translation>CVS 指令紀錄編輯器</translation> + <translation>CVS 命令紀錄編輯器</translation> </message> <message> <source>CVS File Log Editor</source> @@ -12101,7 +12101,7 @@ For qmlproject projects, use the importPaths property to add import paths.</sour </message> <message> <source>Git Command Log Editor</source> - <translation>Git 指令紀錄編輯器</translation> + <translation>Git 命令紀錄編輯器</translation> </message> <message> <source>Git File Log Editor</source> @@ -12121,7 +12121,7 @@ For qmlproject projects, use the importPaths property to add import paths.</sour </message> <message> <source>Mercurial Command Log Editor</source> - <translation>Mercurial 指令紀錄編輯器</translation> + <translation>Mercurial 命令紀錄編輯器</translation> </message> <message> <source>Mercurial File Log Editor</source> @@ -12145,7 +12145,7 @@ For qmlproject projects, use the importPaths property to add import paths.</sour </message> <message> <source>Perforce CommandLog Editor</source> - <translation>Perforce 指令紀錄編輯器</translation> + <translation>Perforce 命令紀錄編輯器</translation> </message> <message> <source>Perforce Log Editor</source> @@ -12165,7 +12165,7 @@ For qmlproject projects, use the importPaths property to add import paths.</sour </message> <message> <source>Subversion Command Log Editor</source> - <translation>Subversion 指令紀錄編輯器</translation> + <translation>Subversion 命令紀錄編輯器</translation> </message> <message> <source>Subversion File Log Editor</source> @@ -12181,7 +12181,7 @@ For qmlproject projects, use the importPaths property to add import paths.</sour </message> <message> <source>Bazaar Command Log Editor</source> - <translation>Bazaar 指令紀錄編輯器</translation> + <translation>Bazaar 命令紀錄編輯器</translation> </message> <message> <source>Bazaar File Log Editor</source> @@ -12246,7 +12246,7 @@ For qmlproject projects, use the importPaths property to add import paths.</sour <name>QtC::FakeVim</name> <message> <source>Ex Command Mapping</source> - <translation>Ex 指令映射</translation> + <translation>Ex 命令映射</translation> </message> <message> <source>Ex Trigger Expression</source> @@ -12296,7 +12296,7 @@ For qmlproject projects, use the importPaths property to add import paths.</sour </message> <message> <source>Make arguments:</source> - <translation>Make 參數:</translation> + <translation>Make 引數:</translation> </message> <message> <source>Targets:</source> @@ -13232,7 +13232,7 @@ Requires <b>Qt 4.7.4</b> or newer.</source> <name>QtC::RemoteLinux</name> <message> <source>Could not find make command '%1' in the build environment</source> - <translation type="obsolete">在建置環境中找不到 make 指令 '%1'</translation> + <translation type="obsolete">在建置環境中找不到 make 命令 '%1'</translation> </message> <message> <source>Package Modified</source> @@ -13508,7 +13508,7 @@ Requires <b>Qt 4.7.4</b> or newer.</source> </message> <message> <source><html><head/><body><p><span style=" font-weight:600;">No valid Qt versions found.</span></p><p>Please add a Qt version in <span style=" font-style:italic;">Tools &gt; Options &gt; Build &amp; Run</span> (<span style=" font-style:italic;">Qt Creator &gt; Preferences &gt; Build &amp; Run</span> on Mac OS) or via the maintenance tool of the SDK.</p></body></html></source> - <translation type="obsolete"><html><head/><body><p><span style=" font-weight:600;">找不到正確的 Qt 版本。</span></p><p>請在<span style=" font-style:italic;">「工具」 &gt; 「選項」 &gt; 「建置並執行」</span>(在 MacOS 上則是<span style=" font-style:italic;">「Qt Creator」 &gt; 「喜好設定」 &gt; 「建置並執行」</span>)裡新增 Qt 版本,或是透過 SDK 的維護工具來新增。</p></body></html></translation> + <translation type="obsolete"><html><head/><body><p><span style=" font-weight:600;">找不到正確的 Qt 版本。</span></p><p>請在<span style=" font-style:italic;">「工具」 &gt; 「選項」 &gt; 「建置並執行」</span>(在 MacOS 上則是<span style=" font-style:italic;">「Qt Creator」 &gt; 「偏好設定」 &gt; 「建置並執行」</span>)裡新增 Qt 版本,或是透過 SDK 的維護工具來新增。</p></body></html></translation> </message> <message> <source>Qt Unit Test</source> @@ -13562,7 +13562,7 @@ Requires <b>Qt 4.7.4</b> or newer.</source> </message> <message> <source>There is no patch-command configured in the common 'Version Control' settings.</source> - <translation>在「版本控制」設定中沒有組態修補指令。</translation> + <translation>在「版本控制」設定中沒有組態修補命令。</translation> </message> <message> <source>Unable to launch '%1': %2</source> @@ -13786,7 +13786,7 @@ with a password, which you can enter below.</source> <message> <source>The qmake command "%1" was not found or is not executable.</source> <extracomment>%1: Path to qmake executable</extracomment> - <translation>找不到 qmake 指令 "%1",或該指令無法執行。</translation> + <translation>找不到 qmake 命令 "%1",或該命令無法執行。</translation> </message> </context> <context> @@ -14456,7 +14456,7 @@ Ids must begin with a lowercase letter.</source> <name>QtC::Core</name> <message> <source>Unfiltered</source> - <translation>未過濾</translation> + <translation>未篩選</translation> </message> </context> <context> @@ -14616,7 +14616,7 @@ Ids must begin with a lowercase letter.</source> <name>QtC::Help</name> <message> <source>Filter configuration</source> - <translation type="obsolete">過濾器組態</translation> + <translation type="obsolete">篩選器組態</translation> </message> <message> <source>Prefix:</source> @@ -14851,23 +14851,23 @@ Ids must begin with a lowercase letter.</source> <name>QtC::Utils</name> <message> <source>The command '%1' finished successfully.</source> - <translation>指令 '%1' 已成功完成。</translation> + <translation>命令 '%1' 已成功完成。</translation> </message> <message> <source>The command '%1' terminated with exit code %2.</source> - <translation>指令 '%1' 已結束,離開代碼 %2。</translation> + <translation>命令 '%1' 已結束,離開代碼 %2。</translation> </message> <message> <source>The command '%1' terminated abnormally.</source> - <translation>指令 '%1' 異常結束。</translation> + <translation>命令 '%1' 異常結束。</translation> </message> <message> <source>The command '%1' could not be started.</source> - <translation>指令 '%1' 無法啟動。</translation> + <translation>命令 '%1' 無法啟動。</translation> </message> <message> <source>The command '%1' did not respond within the timeout limit (%2 ms).</source> - <translation>指令 '%1' 在時限 (%2毫秒) 內未回應。</translation> + <translation>命令 '%1' 在時限 (%2毫秒) 內未回應。</translation> </message> <message> <source>Process not Responding</source> @@ -15079,7 +15079,7 @@ Flags: %3</source> </message> <message> <source>Break on QML signal handler</source> - <translation type="obsolete">在 QML 信號處理器中斷</translation> + <translation type="obsolete">在 QML 訊號處理器中斷</translation> </message> <message> <source>Break when JavaScript exception is thrown</source> @@ -15095,8 +15095,8 @@ debugger start-up times (CDB, LLDB).</source> <message> <source>Debugger command to be executed when the breakpoint is hit. GDB allows for specifying a sequence of commands separated by the delimiter '\n'.</source> - <translation type="obsolete">當遇到中斷點時要執行的除錯器指令。 -GDB 允許使用 '\n' 來區隔多個指令序列。</translation> + <translation type="obsolete">當遇到中斷點時要執行的除錯器命令。 +GDB 允許使用 '\n' 來區隔多個命令序列。</translation> </message> <message> <source><html><head/><body><p>Determines how the path is specified when setting breakpoints:</p><ul><li><i>Use Engine Default</i>: Preferred setting of the debugger engine.</li><li><i>Use Full Path</i>: Pass full path, avoiding ambiguities should files of the same name exist in several modules. This is the engine default for CDB and LLDB.</li><li><i>Use File Name</i>: Pass the file name only. This is useful when using a source tree whose location does not match the one used when building the modules. It is the engine default for GDB as using full paths can be slow with this engine.</li></ul></body></html></source> @@ -15160,7 +15160,7 @@ GDB 允許使用 '\n' 來區隔多個指令序列。</translation> </message> <message> <source>&Command:</source> - <translation type="obsolete">指令(&C):</translation> + <translation type="obsolete">命令(&C):</translation> </message> <message> <source>Use Engine Default</source> @@ -15393,7 +15393,7 @@ This feature is only available for GDB.</source> </message> <message> <source>Stopped: %1 (Signal %2).</source> - <translation>已停止:%1 (信號 %2)。</translation> + <translation>已停止:%1 (訊號 %2)。</translation> </message> <message> <source>Stopped in thread %1 by: %2.</source> @@ -15415,11 +15415,11 @@ This feature is only available for GDB.</source> </message> <message> <source><p>The inferior stopped because it received a signal from the Operating System.<p><table><tr><td>Signal name : </td><td>%1</td></tr><tr><td>Signal meaning : </td><td>%2</td></tr></table></source> - <translation><p>底層由於接收到作業系統的信號而停止。<p><table><tr><td>信號名稱: </td><td>%1</td></tr><tr><td>信號意義:</td><td>%2</td></tr></table></translation> + <translation><p>底層由於接收到作業系統的訊號而停止。<p><table><tr><td>訊號名稱: </td><td>%1</td></tr><tr><td>訊號意義:</td><td>%2</td></tr></table></translation> </message> <message> <source>Signal received</source> - <translation>接收到信號</translation> + <translation>接收到訊號</translation> </message> <message> <source><p>The inferior stopped because it triggered an exception.<p>%1</source> @@ -15984,7 +15984,7 @@ instead of its installation directory when run outside git bash.</source> </message> <message> <source>Filter properties</source> - <translation type="obsolete">過濾器屬性</translation> + <translation type="obsolete">篩選器屬性</translation> </message> </context> <context> @@ -16474,7 +16474,7 @@ Reason: %2</source> <message> <source>Running command: %1 </source> - <translation type="obsolete">執行指令:%1</translation> + <translation type="obsolete">執行命令:%1</translation> </message> <message> <source>Recipe %1 failed with exit code %2.</source> @@ -16732,7 +16732,7 @@ Please check the directory's access rights.</source> </message> <message> <source>Filter tree</source> - <translation>過濾樹狀圖</translation> + <translation>篩選樹狀圖</translation> </message> <message> <source>Outline</source> @@ -16851,7 +16851,7 @@ The new branch will depend on the availability of the source branch for all oper </message> <message> <source>Command:</source> - <translation>指令:</translation> + <translation>命令:</translation> </message> <message> <source>User</source> @@ -17021,7 +17021,7 @@ Local pulls are not applied to the master branch.</source> </message> <message> <source>Arguments:</source> - <translation>參數:</translation> + <translation>引數:</translation> </message> <message> <source>Working directory:</source> @@ -17108,7 +17108,7 @@ Local pulls are not applied to the master branch.</source> </message> <message> <source>Preferences</source> - <translation>喜好設定</translation> + <translation>偏好設定</translation> </message> <message> <source>Name</source> @@ -17804,7 +17804,7 @@ Local pulls are not applied to the master branch.</source> <name>QtC::Bazaar</name> <message> <source>Bazaar Command</source> - <translation>Bazaar 指令</translation> + <translation>Bazaar 命令</translation> </message> </context> <context> @@ -18329,7 +18329,7 @@ to version control (%2) </message> <message> <source>Error evaluating command line arguments: %1</source> - <translation>計算命令列參數時發生錯誤:%1</translation> + <translation>計算命令列引數時發生錯誤:%1</translation> </message> <message> <source>Start Debugging</source> @@ -19008,7 +19008,7 @@ Do you want to retry?</source> <message> <source><Filter></source> <comment>Library search input hint text</comment> - <translation><過濾器></translation> + <translation><篩選器></translation> </message> </context> <context> @@ -19183,7 +19183,7 @@ Error: %2</source> </message> <message> <source>Arguments:</source> - <translation>參數:</translation> + <translation>引數:</translation> </message> <message> <source>Main QML file:</source> @@ -20395,7 +20395,7 @@ if (a && </message> <message> <source>Valgrind Command</source> - <translation>Valgrind 指令</translation> + <translation>Valgrind 命令</translation> </message> <message> <source>Valgrind Suppression Files</source> @@ -20736,15 +20736,15 @@ Would you like to overwrite them?</source> </message> <message> <source>Command</source> - <translation>指令</translation> + <translation>命令</translation> </message> <message> <source>User command #%1</source> - <translation>使用者指令 #%1</translation> + <translation>使用者命令 #%1</translation> </message> <message> <source>User Command Mapping</source> - <translation>使用者指令映射</translation> + <translation>使用者命令映射</translation> </message> </context> <context> @@ -20755,7 +20755,7 @@ Would you like to overwrite them?</source> </message> <message> <source>Apply Filter</source> - <translation>套用過濾器</translation> + <translation>套用篩選器</translation> </message> <message> <source>Generating file list... @@ -21825,7 +21825,7 @@ In addition, device connectivity will be tested.</source> </message> <message> <source>Use this command instead</source> - <translation>用這個指令代替</translation> + <translation>用這個命令代替</translation> </message> <message> <source>Alternate executable on device:</source> @@ -21833,7 +21833,7 @@ In addition, device connectivity will be tested.</source> </message> <message> <source>Arguments:</source> - <translation>參數:</translation> + <translation>引數:</translation> </message> <message> <source><default></source> @@ -22008,7 +22008,7 @@ In addition, device connectivity will be tested.</source> </message> <message> <source>Filter...</source> - <translation>過濾器...</translation> + <translation>篩選器...</translation> </message> <message> <source>Profiling aborted.</source> @@ -22114,7 +22114,7 @@ In addition, device connectivity will be tested.</source> </message> <message> <source>Error Filter</source> - <translation>錯誤過濾</translation> + <translation>錯誤篩選</translation> </message> <message> <source>Internal Error</source> @@ -22344,7 +22344,7 @@ In addition, device connectivity will be tested.</source> </message> <message> <source>Command-line arguments: %1</source> - <translation>命令列參數:%1</translation> + <translation>命令列引數:%1</translation> </message> <message> <source>** Analyzing finished ** @@ -22379,7 +22379,7 @@ In addition, device connectivity will be tested.</source> <name>QtC::VcsBase</name> <message> <source>Command used for reverting diff chunks</source> - <translation>回復差異區塊的指令</translation> + <translation>回復差異區塊的命令</translation> </message> </context> <context> @@ -22941,7 +22941,7 @@ To compile QML Observer, go to the Qt Versions page, select the current Qt versi </message> <message> <source>Handling Signal</source> - <translation>信號處理中</translation> + <translation>訊號處理中</translation> </message> </context> <context> @@ -23138,7 +23138,7 @@ To compile QML Observer, go to the Qt Versions page, select the current Qt versi </message> <message> <source>Open Command Prompt Here</source> - <translation>在此開啟指令提示</translation> + <translation>在此開啟命令提示</translation> </message> <message> <source>Open Terminal Here</source> @@ -23789,7 +23789,7 @@ Is the device connected and set up for network access?</source> </message> <message> <source>Run custom remote command</source> - <translation>執行自訂的遠端指令</translation> + <translation>執行自訂的遠端命令</translation> </message> <message> <source>No command line given.</source> @@ -23797,7 +23797,7 @@ Is the device connected and set up for network access?</source> </message> <message> <source>Starting remote command '%1'...</source> - <translation>啟動遠端指令 '%1'......</translation> + <translation>啟動遠端命令 '%1'...</translation> </message> <message> <source>Remote process failed to start.</source> @@ -23805,7 +23805,7 @@ Is the device connected and set up for network access?</source> </message> <message> <source>Remote process was killed by a signal.</source> - <translation>遠端行程被信號強行終結。</translation> + <translation>遠端行程被訊號強行終結。</translation> </message> <message> <source>Remote process finished with exit code %1.</source> @@ -23813,7 +23813,7 @@ Is the device connected and set up for network access?</source> </message> <message> <source>Remote command finished successfully.</source> - <translation>遠端指令成功完成。</translation> + <translation>遠端命令成功完成。</translation> </message> <message> <source>Deploy to Remote Linux Host</source> @@ -23999,7 +23999,7 @@ Remote error output was: %1</source> </message> <message> <source>Running command: %1</source> - <translation type="obsolete">執行指令:%1</translation> + <translation type="obsolete">執行命令:%1</translation> </message> <message> <source>Packaging finished successfully.</source> @@ -24142,7 +24142,7 @@ Filter: %2 %3</source> <extracomment>%3 is filled by BaseFileFind::runNewSearch</extracomment> <translation>路徑:%1 -過濾器:%2 +篩選器:%2 %3</translation> </message> <message> @@ -24259,7 +24259,7 @@ Filter: %2 </message> <message> <source>Arguments:</source> - <translation type="obsolete">參數:</translation> + <translation type="obsolete">引數:</translation> </message> <message> <source>Working directory:</source> @@ -24270,7 +24270,7 @@ Filter: %2 <name>QtC::Core</name> <message> <source>Command Mappings</source> - <translation>指令映射</translation> + <translation>命令映射</translation> </message> <message> <source>Target</source> @@ -24695,7 +24695,7 @@ p, li { white-space: pre-wrap; } <name>QtC::QmakeProjectManager</name> <message> <source>Make arguments:</source> - <translation>Make 參數:</translation> + <translation>Make 引數:</translation> </message> <message> <source>qmake build configuration:</source> @@ -24703,7 +24703,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>Additional arguments:</source> - <translation>額外的參數:</translation> + <translation>額外的引數:</translation> </message> <message> <source>Link QML debugging library:</source> @@ -24939,7 +24939,7 @@ p, li { white-space: pre-wrap; } </message> <message> <source>&Filter by process name:</source> - <translation type="obsolete">依行程名稱過濾(&F):</translation> + <translation type="obsolete">依行程名稱篩選(&F):</translation> </message> <message> <source>&Update List</source> @@ -25460,7 +25460,7 @@ Influences the indentation of continuation lines. </message> <message> <source>An executable which is called with the submit message in a temporary file as first argument. It should return with an exit != 0 and a message on standard error to indicate failure.</source> - <translation type="unfinished">一個可執行檔,以儲存在臨時檔案中的提交訊息為首參數。當提交失敗時以非零值退出並在標準錯誤中輸出訊息。</translation> + <translation>一個可執行檔,以儲存在臨時檔案中的提交訊息為第一個引數。當提交失敗時以非零值退出並在標準錯誤中輸出訊息。</translation> </message> <message> <source>Submit message &check script:</source> @@ -25486,7 +25486,7 @@ name <email> alias <email></source> </message> <message> <source>&Patch command:</source> - <translation>修補指令(&P):</translation> + <translation>修補命令(&P):</translation> </message> <message> <source>Specifies a command that is executed to graphically prompt for a password, @@ -25496,7 +25496,7 @@ should a repository require SSH-authentication (see documentation on SSH and the </message> <message> <source>&SSH prompt command:</source> - <translation>SSH 提示指令(&S):</translation> + <translation>SSH 提示命令(&S):</translation> </message> <message> <source>Configure...</source> @@ -25964,11 +25964,11 @@ should a repository require SSH-authentication (see documentation on SSH and the </message> <message> <source>Process killed by signal</source> - <translation type="obsolete">行程被信號強行中止</translation> + <translation type="obsolete">行程被訊號強行中止</translation> </message> <message> <source>Server sent invalid signal '%1'</source> - <translation type="obsolete">伺服器送出無效的信號 '%1'</translation> + <translation type="obsolete">伺服器送出無效的訊號 '%1'</translation> </message> </context> <context> @@ -26050,7 +26050,7 @@ should a repository require SSH-authentication (see documentation on SSH and the </message> <message> <source>Arguments:</source> - <translation>參數:</translation> + <translation>引數:</translation> </message> <message> <source>Autogen</source> @@ -26416,7 +26416,7 @@ should a repository require SSH-authentication (see documentation on SSH and the <message> <source>Previous command is still running ('%1'). Do you want to kill it?</source> - <translation>前一個指令仍然在執行中 ('%1')。 + <translation>前一個命令仍然在執行中 ('%1')。 您要強行結束它嗎?</translation> </message> <message> @@ -26437,11 +26437,11 @@ Do you want to kill it?</source> </message> <message> <source>Starting command '%1'</source> - <translation>啟動指令 '%1' 中</translation> + <translation>啟動命令 '%1' 中</translation> </message> <message> <source>Execute Custom Commands</source> - <translation>執行自訂指令</translation> + <translation>執行自訂命令</translation> </message> </context> <context> @@ -26603,7 +26603,7 @@ references to elements in other files, loops, etc.)</source> </message> <message> <source>Signal</source> - <translation>信號</translation> + <translation>訊號</translation> </message> <message> <source>Part of binding loop</source> @@ -27270,7 +27270,7 @@ This option is useful when you want to try your application on devices which don </message> <message> <source>&Command:</source> - <translation type="unfinished">指令(&C):</translation> + <translation type="unfinished">命令(&C):</translation> </message> <message> <source>Diff</source> @@ -27809,11 +27809,11 @@ This option is useful when you want to try your application on devices which don <name>QSsh::Internal::SshRemoteProcessPrivate</name> <message> <source>Process killed by signal</source> - <translation type="unfinished">行程被信號強行中止</translation> + <translation>行程被訊號強行中止</translation> </message> <message> <source>Server sent invalid signal '%1'</source> - <translation type="unfinished">伺服器送出無效的信號 '%1'</translation> + <translation>伺服器送出無效的訊號 '%1'</translation> </message> </context> <context> @@ -27965,7 +27965,7 @@ This option is useful when you want to try your application on devices which don </message> <message> <source>Arguments:</source> - <translation type="unfinished">參數:</translation> + <translation type="unfinished">引數:</translation> </message> <message> <source>Working directory:</source> @@ -28030,7 +28030,7 @@ Please install an SDK of at least API version %1.</source> </message> <message> <source>Packaging Error: Command '%1 %2' failed.</source> - <translation type="unfinished">打包錯誤:指令 '%1' 失敗。 {1 %2'?}</translation> + <translation type="unfinished">打包錯誤:命令 '%1' 失敗。 {1 %2'?}</translation> </message> <message> <source> Reason: %1</source> @@ -29135,7 +29135,7 @@ Please choose a valid package name for your application (e.g. "org.example. </message> <message> <source>Running command: %1</source> - <translation type="unfinished">執行指令:%1</translation> + <translation type="unfinished">執行命令:%1</translation> </message> <message> <source>Connection error: %1</source> @@ -29849,7 +29849,7 @@ Do you want to add them to the project?</html></source> </message> <message> <source>Filter</source> - <translation type="unfinished">過濾器</translation> + <translation>篩選器</translation> </message> <message> <source>&Update List</source> @@ -30226,11 +30226,11 @@ Qt Creator 知道一個相似的URI.</translation> <name>QtC::QtSupport</name> <message> <source>Command:</source> - <translation type="unfinished">指令:</translation> + <translation type="unfinished">命令:</translation> </message> <message> <source>Arguments:</source> - <translation type="unfinished">參數:</translation> + <translation type="unfinished">引數:</translation> </message> <message> <source>Working directory:</source> diff --git a/src/plugins/mcusupport/mcukitmanager.cpp b/src/plugins/mcusupport/mcukitmanager.cpp index 793e02b323..61f268f021 100644 --- a/src/plugins/mcusupport/mcukitmanager.cpp +++ b/src/plugins/mcusupport/mcukitmanager.cpp @@ -31,6 +31,7 @@ #include <QMessageBox> #include <QPushButton> +#include <QRegularExpression> using CMakeProjectManager::CMakeConfig; using CMakeProjectManager::CMakeConfigItem; @@ -721,5 +722,68 @@ void removeOutdatedKits() KitManager::deregisterKit(kit); } +/* +* using kitQmlImportPath of kit found in profile.xml to get the path to Qul +* installation where description file (.json) of the kit is located. +*/ +static const FilePaths kitsFiles(const Kit *kit) +{ + const FilePath qulRoot = kitDependencyPath(kit, Legacy::Constants::QUL_CMAKE_VAR); + return kitsPath(qulRoot).dirEntries(Utils::FileFilter({"*.json"}, QDir::Files)); +} + +/* +* When file description (.json) of a kit exists in the Qul installation that means +* target is installed. +*/ +static bool anyKitDescriptionFileExists(const FilePaths &jsonFiles, + const QStringList &kitsProperties) +{ + static const QRegularExpression re("(\\w+)-(\\w+)-(.+)\\.json"); + for (const FilePath &jsonFile : jsonFiles) { + const QRegularExpressionMatch match = re.match(jsonFile.fileName()); + QStringList kitsPropertiesFromFileName; + if (match.hasMatch()) { + const QString toolchain = match.captured(1).replace( + "gnu", "gcc"); // kitFileName contains gnu while profiles.xml contains gcc + const QString vendor = match.captured(2); + const QString device = match.captured(3); + + kitsPropertiesFromFileName << toolchain << vendor << device; + } + + if (kitsPropertiesFromFileName == kitsProperties) + return true; + } + return false; +} + +const QList<Kit *> findUninstalledTargetsKits() +{ + QList<Kit *> uninstalledTargetsKits; + for (Kit *kit : KitManager::kits()) { + if (!kit->hasValue(Constants::KIT_MCUTARGET_KITVERSION_KEY)) + continue; + + const QStringList kitsProperties = { + kit->value(Constants::KIT_MCUTARGET_TOOLCHAIN_KEY).toString().toLower(), + kit->value(Constants::KIT_MCUTARGET_VENDOR_KEY).toString().toLower(), + kit->value(Constants::KIT_MCUTARGET_MODEL_KEY).toString().toLower(), + }; + + const FilePaths kitsDescriptionFiles = kitsFiles(kit); + if (!anyKitDescriptionFileExists(kitsDescriptionFiles, kitsProperties)) + uninstalledTargetsKits << kit; + } + + return uninstalledTargetsKits; +} + +void removeUninstalledTargetsKits(const QList<Kit *> uninstalledTargetsKits) +{ + for (const auto &kit : uninstalledTargetsKits) + KitManager::deregisterKit(kit); +} + } // namespace McuKitManager } // namespace McuSupport::Internal diff --git a/src/plugins/mcusupport/mcukitmanager.h b/src/plugins/mcusupport/mcukitmanager.h index 6a82033e9e..7e949d589c 100644 --- a/src/plugins/mcusupport/mcukitmanager.h +++ b/src/plugins/mcusupport/mcukitmanager.h @@ -56,6 +56,10 @@ void fixExistingKits(const SettingsHandler::Ptr &); // Outdated kits: void removeOutdatedKits(); +// kits for uninstalled targets: +const QList<ProjectExplorer::Kit *> findUninstalledTargetsKits(); +void removeUninstalledTargetsKits(const QList<ProjectExplorer::Kit *> uninstalledTargetsKits); + } // namespace McuKitManager } // namespace McuSupport::Internal diff --git a/src/plugins/mcusupport/mcusupportplugin.cpp b/src/plugins/mcusupport/mcusupportplugin.cpp index f762231851..6b4e851c47 100644 --- a/src/plugins/mcusupport/mcusupportplugin.cpp +++ b/src/plugins/mcusupport/mcusupportplugin.cpp @@ -135,6 +135,7 @@ void McuSupportPlugin::extensionsInitialized() McuKitManager::createAutomaticKits(dd->m_settingsHandler); McuKitManager::fixExistingKits(dd->m_settingsHandler); askUserAboutMcuSupportKitsSetup(); + askUserAboutRemovingUninstalledTargetsKits(); }); } @@ -188,4 +189,34 @@ void McuSupportPlugin::askUserAboutMcuSupportKitsUpgrade(const SettingsHandler:: ICore::infoBar()->addInfo(info); } -} // McuSupport::Internal +void McuSupportPlugin::askUserAboutRemovingUninstalledTargetsKits() +{ + const char removeUninstalledKits[] = "RemoveUninstalledKits"; + QList<Kit *> uninstalledTargetsKits; + + if (!ICore::infoBar()->canInfoBeAdded(removeUninstalledKits) + || (uninstalledTargetsKits = McuKitManager::findUninstalledTargetsKits()).isEmpty()) + return; + + Utils::InfoBarEntry + info(removeUninstalledKits, + Tr::tr("Detected %n uninstalled MCU target(s). Remove corresponding kits?", + nullptr, + uninstalledTargetsKits.size()), + Utils::InfoBarEntry::GlobalSuppression::Enabled); + + info.addCustomButton(Tr::tr("Keep"), [removeUninstalledKits] { + ICore::infoBar()->removeInfo(removeUninstalledKits); + }); + + info.addCustomButton(Tr::tr("Remove"), [removeUninstalledKits, uninstalledTargetsKits] { + ICore::infoBar()->removeInfo(removeUninstalledKits); + QTimer::singleShot(0, [uninstalledTargetsKits]() { + McuKitManager::removeUninstalledTargetsKits(uninstalledTargetsKits); + }); + }); + + ICore::infoBar()->addInfo(info); +} + +} // namespace McuSupport::Internal diff --git a/src/plugins/mcusupport/mcusupportplugin.h b/src/plugins/mcusupport/mcusupportplugin.h index 08cfc61f89..cb27b13846 100644 --- a/src/plugins/mcusupport/mcusupportplugin.h +++ b/src/plugins/mcusupport/mcusupportplugin.h @@ -24,6 +24,7 @@ public: void askUserAboutMcuSupportKitsSetup(); static void askUserAboutMcuSupportKitsUpgrade(const SettingsHandler::Ptr &settingsHandler); + static void askUserAboutRemovingUninstalledTargetsKits(); }; } // McuSupport::Internal diff --git a/src/plugins/mcusupport/test/ghs_rh850_d1m1a_baremetal_json.h b/src/plugins/mcusupport/test/ghs_rh850_d1m1a_baremetal_json.h index 116018d46f..983b1fb4aa 100644 --- a/src/plugins/mcusupport/test/ghs_rh850_d1m1a_baremetal_json.h +++ b/src/plugins/mcusupport/test/ghs_rh850_d1m1a_baremetal_json.h @@ -5,7 +5,7 @@ constexpr auto ghs_rh850_d1m1a_baremetal_json = R"( { - "qulVersion": "2.3.0", + "qulVersion": "2.4.0", "compatVersion": "1", "platform": { "id": "RH850-D1M1A-BAREMETAL", @@ -19,17 +19,16 @@ constexpr auto ghs_rh850_d1m1a_baremetal_json = R"( "setting": "FlashProgrammerPath", "label": "Renesas Flash Programmer", "type": "path", - "setting": "RenesasFlashProgrammer", "cmakeVar": "RENESAS_FLASH_PROGRAMMER_PATH", "defaultValue": { - "windows": "%{Env:PROGRAMFILES}/Renesas Electronics/Programming Tools/Renesas Flash Programmer V3.09", - "linux": "%{Env:HOME}" + "linux": "", + "windows": "%{Env:PROGRAMFILES(x86)}/Renesas Electronics/Programming Tools/Renesas Flash Programmer V3.09" }, "detectionPath": { "windows": "rfp-cli.exe", "linux": "rfp-cli" }, - "envVar": "RENESAS_FLASH_PROGRAMMER_PATH", + "envVar": "RenesasFlashProgrammer_PATH", "optional": true, "addToSystemPath": true } @@ -45,6 +44,10 @@ constexpr auto ghs_rh850_d1m1a_baremetal_json = R"( "setting": "GHSToolchain", "label": "Green Hills Compiler", "type": "path", + "defaultValue": { + "linux": "", + "windows": "C:/ghs/comp_201815" + }, "optional": false, "versionDetection": { "filePattern": { @@ -71,12 +74,16 @@ constexpr auto ghs_rh850_d1m1a_baremetal_json = R"( "envVar": "RGL_DIR", "setting": "RGL_DIR", "versions": [ + "2.0.0", "2.0.0a" ], "label": "Renesas Graphics Library", "cmakeVar": "QUL_BOARD_SDK_DIR", "type": "path", - "defaultValue": "/Renesas_Electronics/D1x_RGL/rgl_ghs_D1Mx_obj_V.2.0.0a", + "defaultValue": { + "linux": "", + "windows": "%{Env:PROGRAMFILES(x86)}/Renesas_Electronics/D1x_RGL/rgl_ghs_D1Mx_obj_V.2.0.0a" + }, "versionDetection": { "regex": "\\d+\\.\\d+\\.\\w+" }, diff --git a/src/plugins/mcusupport/test/ghs_tviic2d4m_baremetal_json.h b/src/plugins/mcusupport/test/ghs_tviic2d4m_baremetal_json.h index d4a41cad38..6d6bd57cb0 100644 --- a/src/plugins/mcusupport/test/ghs_tviic2d4m_baremetal_json.h +++ b/src/plugins/mcusupport/test/ghs_tviic2d4m_baremetal_json.h @@ -5,7 +5,7 @@ constexpr auto ghs_tviic2d4m_baremetal_json = R"( { - "qulVersion": "2.3.0", + "qulVersion": "2.4.0", "compatVersion": "1", "platform": { "id": "TVIIC2D4M-BAREMETAL", @@ -16,9 +16,10 @@ constexpr auto ghs_tviic2d4m_baremetal_json = R"( "cmakeEntries": [ { "id": "INFINEON_AUTO_FLASH_UTILITY_DIR", - "setting": "CypressAutoFlashUtil", - "label": "Cypress Auto Flash Utility", + "setting": "InfineonAutoFlashUtil", + "label": "Infineon Auto Flash Utility", "type": "path", + "defaultValue": "%{Env:PROGRAMFILES(x86)}/Infineon/Auto Flash Utility 1.2", "cmakeVar": "INFINEON_AUTO_FLASH_UTILITY_DIR", "detectionPath": "bin/openocd.exe", "optional": false, @@ -36,8 +37,8 @@ constexpr auto ghs_tviic2d4m_baremetal_json = R"( "label": "Green Hills Compiler for ARM", "cmakeVar": "QUL_TARGET_TOOLCHAIN_DIR", "setting": "GHSArmToolchain", - "detectionPath": "cxarm.exe", "type": "path", + "defaultValue": "C:/ghs/comp_201954", "optional": false, "versionDetection": { "filePattern": "gversion.exe", @@ -59,15 +60,17 @@ constexpr auto ghs_tviic2d4m_baremetal_json = R"( "envVar": "TVII_GRAPHICS_DRIVER_DIR", "setting": "TVII_GRAPHICS_DRIVER_DIR", "versions": [ - "V1e.1.0" + "V1.2.0" ], "id": "TVII_GRAPHICS_DRIVER_DIR", "label": "Graphics Driver for Traveo II Cluster Series", "cmakeVar": "QUL_BOARD_SDK_DIR", "type": "path", + "defaultValue": "C:/TVII-GraphicsDriver", "optional": false, "versionDetection": { - "regex": "V\\w+\\.\\d+\\.\\d+" + "regex": "V\\d+\\.\\d+\\.\\d+" + } } } )"; diff --git a/src/plugins/mcusupport/test/ghs_tviic2d6m_baremetal_json.h b/src/plugins/mcusupport/test/ghs_tviic2d6m_baremetal_json.h index 5e1ff21e2b..f34065b632 100644 --- a/src/plugins/mcusupport/test/ghs_tviic2d6m_baremetal_json.h +++ b/src/plugins/mcusupport/test/ghs_tviic2d6m_baremetal_json.h @@ -5,7 +5,7 @@ constexpr auto ghs_tviic2d6m_baremetal_json = R"( { - "qulVersion": "2.3.0", + "qulVersion": "2.4.0", "compatVersion": "1", "platform": { "id": "TVIIC2D6M-BAREMETAL", @@ -16,9 +16,10 @@ constexpr auto ghs_tviic2d6m_baremetal_json = R"( "cmakeEntries": [ { "id": "INFINEON_AUTO_FLASH_UTILITY_DIR", - "setting": "CypressAutoFlashUtil", - "label": "Cypress Auto Flash Utility", + "setting": "InfineonAutoFlashUtil", + "label": "Infineon Auto Flash Utility", "type": "path", + "defaultValue": "%{Env:PROGRAMFILES(x86)}/Infineon/Auto Flash Utility 1.2", "cmakeVar": "INFINEON_AUTO_FLASH_UTILITY_DIR", "detectionPath": "bin/openocd.exe", "optional": false, @@ -36,8 +37,8 @@ constexpr auto ghs_tviic2d6m_baremetal_json = R"( "label": "Green Hills Compiler for ARM", "cmakeVar": "QUL_TARGET_TOOLCHAIN_DIR", "setting": "GHSArmToolchain", - "detectionPath": "cxarm.exe", "type": "path", + "defaultValue": "C:/ghs/comp_201954", "optional": false, "versionDetection": { "filePattern": "gversion.exe", @@ -59,15 +60,17 @@ constexpr auto ghs_tviic2d6m_baremetal_json = R"( "envVar": "TVII_GRAPHICS_DRIVER_DIR", "setting": "TVII_GRAPHICS_DRIVER_DIR", "versions": [ - "V1e.1.0" + "V2e.1.0" ], "id": "TVII_GRAPHICS_DRIVER_DIR", "label": "Graphics Driver for Traveo II Cluster Series", "cmakeVar": "QUL_BOARD_SDK_DIR", "type": "path", + "defaultValue": "C:/TVII-GraphicsDriver", "optional": false, "versionDetection": { - "regex": "V\\w+\\.\\d+\\.\\d+" + "regex": "V\\d+e\\.\\d+\\.\\d+" + } } } )"; diff --git a/src/plugins/mcusupport/test/iar_tviic2d4m_baremetal_json.h b/src/plugins/mcusupport/test/iar_tviic2d4m_baremetal_json.h new file mode 100644 index 0000000000..e9e0a56348 --- /dev/null +++ b/src/plugins/mcusupport/test/iar_tviic2d4m_baremetal_json.h @@ -0,0 +1,77 @@ +// Copyright (C) 2022 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 + +#pragma once + +constexpr auto iar_tviic2d6m_baremetal_json = R"( +{ + "qulVersion": "2.4.0", + "compatVersion": "1", + "platform": { + "id": "TVIIC2D4M-BAREMETAL", + "vendor": "CYPRESS", + "colorDepths": [ + 32 + ], + "cmakeEntries": [ + { + "id": "INFINEON_AUTO_FLASH_UTILITY_DIR", + "setting": "InfineonAutoFlashUtil", + "label": "Infineon Auto Flash Utility", + "type": "path", + "defaultValue": "%{Env:PROGRAMFILES(x86)}/Infineon/Auto Flash Utility 1.2", + "cmakeVar": "INFINEON_AUTO_FLASH_UTILITY_DIR", + "detectionPath": "bin/openocd.exe", + "optional": false, + "addToSystemPath": true + } + ] + }, + "toolchain": { + "id": "iar", + "versions": [ + "8.22.3" + ], + "compiler": { + "id": "IARToolchain", + "setting": "IARToolchain", + "envVar": "IAR_ARM_COMPILER_DIR", + "label": "IAR ARM Compiler", + "cmakeVar": "QUL_TARGET_TOOLCHAIN_DIR", + "type": "path", + "versionDetection": { + "filePattern": "bin/iccarm.exe", + "executableArgs": "--version", + "regex": "\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b" + }, + "detectionPath": "bin/iccarm.exe", + "defaultValue": "%{Env:PROGRAMFILES(x86)}/IAR Systems/Embedded Workbench 8.0 EWARM FS 8.22.3/arm", + "optional": false + }, + "file": { + "id": "IAR_CMAKE_TOOLCHAIN_FILE", + "cmakeVar": "CMAKE_TOOLCHAIN_FILE", + "type": "file", + "defaultValue": "%{Qul_ROOT}/lib/cmake/Qul/toolchain/iar.cmake", + "visible": false, + "optional": false + } + }, + "boardSdk": { + "envVar": "TVII_GRAPHICS_DRIVER_DIR", + "setting": "TVII_GRAPHICS_DRIVER_DIR", + "versions": [ + "V1.2.0" + ], + "id": "TVII_GRAPHICS_DRIVER_DIR", + "label": "Graphics Driver for Traveo II Cluster Series", + "cmakeVar": "QUL_BOARD_SDK_DIR", + "type": "path", + "defaultValue": "C:/TVII-GraphicsDriver", + "optional": false, + "versionDetection": { + "regex": "V\\d+\\.\\d+\\.\\d+" + } + } +} +)"; diff --git a/src/plugins/mcusupport/test/iar_tviic2d6m_baremetal_json.h b/src/plugins/mcusupport/test/iar_tviic2d6m_baremetal_json.h index ce4c56fb2d..58f46bf792 100644 --- a/src/plugins/mcusupport/test/iar_tviic2d6m_baremetal_json.h +++ b/src/plugins/mcusupport/test/iar_tviic2d6m_baremetal_json.h @@ -5,7 +5,7 @@ constexpr auto iar_tviic2d6m_baremetal_json = R"( { - "qulVersion": "2.3.0", + "qulVersion": "2.4.0", "compatVersion": "1", "platform": { "id": "TVIIC2D6M-BAREMETAL", @@ -16,9 +16,10 @@ constexpr auto iar_tviic2d6m_baremetal_json = R"( "cmakeEntries": [ { "id": "INFINEON_AUTO_FLASH_UTILITY_DIR", - "setting": "CypressAutoFlashUtil", - "label": "Cypress Auto Flash Utility", + "setting": "InfineonAutoFlashUtil", + "label": "Infineon Auto Flash Utility", "type": "path", + "defaultValue": "%{Env:PROGRAMFILES(x86)}/Infineon/Auto Flash Utility 1.2", "cmakeVar": "INFINEON_AUTO_FLASH_UTILITY_DIR", "detectionPath": "bin/openocd.exe", "optional": false, @@ -39,14 +40,12 @@ constexpr auto iar_tviic2d6m_baremetal_json = R"( "cmakeVar": "QUL_TARGET_TOOLCHAIN_DIR", "type": "path", "versionDetection": { - "filePattern": { - "windows": "bin/iccarm.exe", - "linux": "bin/iccarm" - }, + "filePattern": "bin/iccarm.exe", "executableArgs": "--version", "regex": "\\bV(\\d+\\.\\d+\\.\\d+)\\.\\d+\\b" }, "detectionPath": "bin/iccarm.exe", + "defaultValue": "%{Env:PROGRAMFILES(x86)}/IAR Systems/Embedded Workbench 8.0 EWARM FS 8.22.3/arm", "optional": false }, "file": { @@ -62,15 +61,17 @@ constexpr auto iar_tviic2d6m_baremetal_json = R"( "envVar": "TVII_GRAPHICS_DRIVER_DIR", "setting": "TVII_GRAPHICS_DRIVER_DIR", "versions": [ - "V1e.1.0" + "V2e.1.0" ], "id": "TVII_GRAPHICS_DRIVER_DIR", "label": "Graphics Driver for Traveo II Cluster Series", "cmakeVar": "QUL_BOARD_SDK_DIR", "type": "path", + "defaultValue": "C:/TVII-GraphicsDriver", "optional": false, "versionDetection": { - "regex": "V\\w+\\.\\d+\\.\\d+" + "regex": "V\\d+e\\.\\d+\\.\\d+" + } } } )"; diff --git a/tests/system/shared/build_utils.py b/tests/system/shared/build_utils.py index 2e96dd9ba5..300b0ed8ba 100644 --- a/tests/system/shared/build_utils.py +++ b/tests/system/shared/build_utils.py @@ -1,10 +1,37 @@ # Copyright (C) 2016 The Qt Company Ltd. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 +def toggleIssuesFilter(filterName, checked): + try: + toggleFilter = waitForObject("{type='QToolButton' toolTip='Filter by categories' " + "window=':Qt Creator_Core::Internal::MainWindow'}") + clickButton(toggleFilter) + filterMenu = waitForObject("{type='QMenu' unnamed='1' visible='1'}") + waitFor("filterMenu.visible", 1000) + + filterCategory = waitForObjectItem(filterMenu, filterName) + waitFor("filterCategory.visible", 2000) + if filterCategory.checked == checked: + test.log("Filter '%s' has already check state %s - not toggling." + % (filterName, checked)) + clickButton(toggleFilter) # close the menu again + else: + activateItem(filterCategory) + test.log("Filter '%s' check state changed to %s." % (filterName, checked)) + except: + t,v = sys.exc_info()[:2] + test.log("Exception while toggling filter '%s'" % filterName, + "%s(%s)" % (str(t), str(v))) + def getBuildIssues(): ensureChecked(":Qt Creator_Issues_Core::Internal::OutputPaneToggleButton") model = waitForObject(":Qt Creator.Issues_QListView").model() - return dumpBuildIssues(model) + # filter out possible code model issues present inside the Issues pane + toggleIssuesFilter("Clang Code Model", False) + result = dumpBuildIssues(model) + # reset the filter + toggleIssuesFilter("Clang Code Model", True) + return result # this method checks the last build (if there's one) and logs the number of errors, warnings and # lines within the Issues output diff --git a/tests/system/shared/debugger.py b/tests/system/shared/debugger.py index d337ac497f..4dbc13fcaa 100644 --- a/tests/system/shared/debugger.py +++ b/tests/system/shared/debugger.py @@ -57,7 +57,7 @@ def setBreakpointsForCurrentProject(filesAndLines): "window=':Qt Creator_Core::Internal::MainWindow'}") breakPointList = [] for current in filesAndLines: - for curFile,curLine in current.iteritems(): + for curFile,curLine in current.items(): if not openDocument(curFile): return None editor = getEditorForFileSuffix(curFile, True) @@ -239,7 +239,7 @@ def __logDebugResult__(): def verifyBreakPoint(bpToVerify): if isinstance(bpToVerify, dict): - fileName = bpToVerify.keys()[0] + fileName = list(bpToVerify.keys())[0] editor = getEditorForFileSuffix(fileName) if editor: test.compare(waitForObject(":DebugModeWidget_QComboBox").toolTip, fileName, diff --git a/tests/system/shared/editor_utils.py b/tests/system/shared/editor_utils.py index 0933253c2a..642cdb41ba 100644 --- a/tests/system/shared/editor_utils.py +++ b/tests/system/shared/editor_utils.py @@ -168,7 +168,7 @@ def __handleTextTips__(textTip, expectedVals, alternativeVals): if not expFail: test.passes("TextTip verified") else: - for key,val in eResult.iteritems(): + for key,val in eResult.items(): if val == False: if aResult and aResult.get(key): test.passes("Property '%s' does not match expected, but alternative value" % key) @@ -240,7 +240,7 @@ def verifyProperties(properties, expectedProps): test.warning("Wrong usage - both parameter must be of type dict") return {} result = {} - for key,val in expectedProps.iteritems(): + for key,val in expectedProps.items(): foundVal = properties.get(key, None) if foundVal != None: result[key] = val == foundVal diff --git a/tests/system/shared/utils.py b/tests/system/shared/utils.py index ced96b5bb2..7397fad5ed 100644 --- a/tests/system/shared/utils.py +++ b/tests/system/shared/utils.py @@ -342,7 +342,7 @@ def getConfiguredKits(): # update collected Qt versions with their configured device and version iterateKits(False, True, __setQtVersionForKit__, kitsWithQtVersionName) # merge defined target names with their configured Qt versions and devices - for kit, qtVersion in kitsWithQtVersionName.iteritems(): + for kit, qtVersion in kitsWithQtVersionName.items(): if qtVersion in qtVersionNames: result.append(kit) else: diff --git a/tests/system/suite_WELP/tst_WELP01/test.py b/tests/system/suite_WELP/tst_WELP01/test.py index 23e974b9a7..b64edcd2b7 100644 --- a/tests/system/suite_WELP/tst_WELP01/test.py +++ b/tests/system/suite_WELP/tst_WELP01/test.py @@ -19,11 +19,14 @@ def clickItemVerifyHelpCombo(button, expectedHelpComboRegex, testDetails): "Verifying: '%s' button is being displayed." % getStarted) def buttonActive(button): # colors of the default theme for active button on Welcome page - (activeRed, activeGreen, activeBlue) = (69, 206, 85) + defaultActiveRGB = (69, 206, 85) + # colors of the dark theme for active button on Welcome page + darkActiveRGB = (54, 193, 72) # QPalette::Window (used background color of Welcome page buttons) enumQPaletteWindow = 10 color = button.palette.color(enumQPaletteWindow) - return color.red == activeRed and color.green == activeGreen and color.blue == activeBlue + current = (color.red, color.green, color.blue) + return current == defaultActiveRGB or current == darkActiveRGB def waitForButtonsState(projectsActive, examplesActive, tutorialsActive, timeout=5000): projButton = getWelcomeScreenSideBarButton('Projects')[0] diff --git a/tests/system/suite_debugger/tst_qml_locals/Tree.py b/tests/system/suite_debugger/tst_qml_locals/Tree.py index 2290081c6a..2499f28f34 100644 --- a/tests/system/suite_debugger/tst_qml_locals/Tree.py +++ b/tests/system/suite_debugger/tst_qml_locals/Tree.py @@ -51,7 +51,7 @@ class Tree: def countChildOccurrences(self, name): if not self.__children__: return 0 - return map(lambda x: x.getName(), self.__children__).count(name) + return list(map(lambda x: x.getName(), self.__children__)).count(name) # internal functions def __repr__(self): diff --git a/tests/system/suite_debugger/tst_qml_locals/test.py b/tests/system/suite_debugger/tst_qml_locals/test.py index 57ba361784..70256ee2d4 100644 --- a/tests/system/suite_debugger/tst_qml_locals/test.py +++ b/tests/system/suite_debugger/tst_qml_locals/test.py @@ -136,7 +136,7 @@ def checkForExpectedValues(items, expectedChildren, expectedProperties): properties = items.getChild("Properties") if properties: children = properties.getChildren() - for property,value in expectedProperties.iteritems(): + for property,value in expectedProperties.items(): foundProperty = getProperty(property, children) if foundProperty: test.compare(foundProperty.getValue(), value, "Verifying value for %s" % property) diff --git a/tests/system/suite_debugger/tst_simple_debug/test.py b/tests/system/suite_debugger/tst_simple_debug/test.py index aa1bbf9a27..e6301f941c 100644 --- a/tests/system/suite_debugger/tst_simple_debug/test.py +++ b/tests/system/suite_debugger/tst_simple_debug/test.py @@ -45,6 +45,10 @@ def main(): if platform.system() in ('Microsoft' 'Windows'): switchViewTo(ViewConstants.PROJECTS) switchToBuildOrRunSettingsFor(kit, ProjectSettings.BUILD) + detailsWidget = waitForObject("{type='Utils::DetailsWidget' unnamed='1' visible='1' " + "summaryText~='^<b>Configure:</b>.+'}") + detailsButton = getChildByClass(detailsWidget, "QToolButton") + ensureChecked(detailsButton) buildDir = os.path.join(str(waitForObject(":Qt Creator_Utils::BuildDirectoryLineEdit").text), "debug") switchViewTo(ViewConstants.EDIT) diff --git a/tests/system/suite_editors/tst_rename_macros/test.py b/tests/system/suite_editors/tst_rename_macros/test.py index e0a26fdd11..0ad013cc9a 100644 --- a/tests/system/suite_editors/tst_rename_macros/test.py +++ b/tests/system/suite_editors/tst_rename_macros/test.py @@ -113,7 +113,7 @@ def performMacroRenaming(newMacroName): def verifyChangedContent(origTexts, replacedSymbol, replacement): global cppEditorStr successfullyCompared = [] - for fileName,text in origTexts.iteritems(): + for fileName,text in origTexts.items(): if openDocument(fileName): successfullyCompared.append(test.compare(waitForObject(cppEditorStr).plainText, text.replace(replacedSymbol, replacement), diff --git a/tests/system/suite_editors/tst_revert_changes/test.py b/tests/system/suite_editors/tst_revert_changes/test.py index bc666dd8c0..6ad06b1124 100644 --- a/tests/system/suite_editors/tst_revert_changes/test.py +++ b/tests/system/suite_editors/tst_revert_changes/test.py @@ -29,7 +29,7 @@ def main(): "testfiles.Headers.testfile\\.h":__modifyHeader__, "testfiles.Sources.testfile\\.cpp":__modifySource__, "testfiles.Sources.main\\.cpp":None} - for fileName, modification in fileModifications.iteritems(): + for fileName, modification in fileModifications.items(): __modifyFile__(fileName, modification) test.log("Reverting all files...") fileModifications = dict(zip(fileModifications.keys(), @@ -84,7 +84,7 @@ def __modifySource__(): type(cppEditorStr, "<Delete>") def revertChanges(files): - for f,canRevert in files.iteritems(): + for f,canRevert in files.items(): simpleName = simpleFileName(f) test.log("Trying to revert changes for '%s'" % simpleName) if openDocument(f): diff --git a/tests/system/suite_general/tst_default_settings/test.py b/tests/system/suite_general/tst_default_settings/test.py index 83c7171388..5eacc517f9 100644 --- a/tests/system/suite_general/tst_default_settings/test.py +++ b/tests/system/suite_general/tst_default_settings/test.py @@ -260,10 +260,10 @@ def __compareCompilers__(foundCompilers, expectedCompilers): for currentExp in expectedCompilers: if isString(currentExp): continue - key = currentExp.keys()[0] + key = list(currentExp.keys())[0] # the regex .*? is used for the different possible version strings of the WinSDK # if it's present a regex will be validated otherwise simple string comparison - if (((".*?" in key and re.match(key, currentFound.keys()[0], flags)) + if (((".*?" in key and re.match(key, list(currentFound.keys())[0], flags)) or currentFound.keys() == currentExp.keys())): if ((isWin and os.path.abspath(currentFound.values()[0].lower()) == os.path.abspath(currentExp.values()[0].lower())) @@ -322,8 +322,8 @@ def __checkCreatedSettings__(settingsFolder): test.verify(os.path.isdir(f), "Verifying whether folder '%s' has been created." % os.path.basename(f)) for f in files: - fName = f.keys()[0] - fMinSize = f.values()[0] + fName = list(f.keys())[0] + fMinSize = list(f.values())[0] text = "created non-empty" if fMinSize > 0: text = "modified" diff --git a/tests/system/suite_qtquick/tst_qml_outline/test.py b/tests/system/suite_qtquick/tst_qml_outline/test.py index 1508dc9aaa..fb3662b805 100644 --- a/tests/system/suite_qtquick/tst_qml_outline/test.py +++ b/tests/system/suite_qtquick/tst_qml_outline/test.py @@ -109,7 +109,7 @@ def retrieveData(record): def verifyOutline(outlinePseudoTree, datasetFileName): fileName = datasetFileName[:datasetFileName.index("_")] - expected = map(retrieveData, testData.dataset(datasetFileName)) + expected = list(map(retrieveData, testData.dataset(datasetFileName))) if len(expected) != len(outlinePseudoTree): test.fail("Mismatch in length of expected and found elements of outline. Skipping " "verification of nodes.", diff --git a/tests/system/suite_tools/tst_git_local/test.py b/tests/system/suite_tools/tst_git_local/test.py index 7b83947e88..07208367fd 100644 --- a/tests/system/suite_tools/tst_git_local/test.py +++ b/tests/system/suite_tools/tst_git_local/test.py @@ -89,7 +89,7 @@ def __clickCommit__(count): {"Author: %s, %s" % (id, time): True}, {"Committer: %s, %s" % (id, time): True}] for line, exp in zip(show.splitlines(), expected): - expLine = exp.keys()[0] + expLine = list(exp.keys())[0] isRegex = exp.values()[0] if isRegex: test.verify(re.match(expLine, line), "Verifying commit header line '%s'" % line) |