Merge remote-tracking branch 'origin/16.0'
Change-Id: I466d212f57f706c71fd0c2624abb33814ea3e783
14
dist/changelog/changes-16.0.0.md
vendored
@@ -38,6 +38,8 @@ Editing
|
|||||||
([QTCREATORBUG-31931](https://bugreports.qt.io/browse/QTCREATORBUG-31931))
|
([QTCREATORBUG-31931](https://bugreports.qt.io/browse/QTCREATORBUG-31931))
|
||||||
* Fixed the generation of getters for local enum types
|
* Fixed the generation of getters for local enum types
|
||||||
([QTCREATORBUG-32473](https://bugreports.qt.io/browse/QTCREATORBUG-32473))
|
([QTCREATORBUG-32473](https://bugreports.qt.io/browse/QTCREATORBUG-32473))
|
||||||
|
* Fixed the header guard creation for file names with special characters
|
||||||
|
([QTCREATORBUG-32539](https://bugreports.qt.io/browse/QTCREATORBUG-32539))
|
||||||
* Built-in
|
* Built-in
|
||||||
* Added support for init-statements in range-based `for` loops
|
* Added support for init-statements in range-based `for` loops
|
||||||
([QTCREATORBUG-31961](https://bugreports.qt.io/browse/QTCREATORBUG-31961))
|
([QTCREATORBUG-31961](https://bugreports.qt.io/browse/QTCREATORBUG-31961))
|
||||||
@@ -231,8 +233,13 @@ Terminal
|
|||||||
([QTCREATORBUG-32197](https://bugreports.qt.io/browse/QTCREATORBUG-32197))
|
([QTCREATORBUG-32197](https://bugreports.qt.io/browse/QTCREATORBUG-32197))
|
||||||
* Fixed killing the shell process
|
* Fixed killing the shell process
|
||||||
([QTCREATORBUG-32509](https://bugreports.qt.io/browse/QTCREATORBUG-32509))
|
([QTCREATORBUG-32509](https://bugreports.qt.io/browse/QTCREATORBUG-32509))
|
||||||
* Fixed auto-scrolling
|
* Fixed the scrolling behavior
|
||||||
([QTCREATORBUG-32167](https://bugreports.qt.io/browse/QTCREATORBUG-32167))
|
([QTCREATORBUG-32167](https://bugreports.qt.io/browse/QTCREATORBUG-32167),
|
||||||
|
[QTCREATORBUG-32546](https://bugreports.qt.io/browse/QTCREATORBUG-32546))
|
||||||
|
* Fixed the title of tabs
|
||||||
|
([QTCREATORBUG-32197](https://bugreports.qt.io/browse/QTCREATORBUG-32197))
|
||||||
|
* Fixed the handling of `Home` and `End` keys
|
||||||
|
([QTCREATORBUG-32545](https://bugreports.qt.io/browse/QTCREATORBUG-32545))
|
||||||
|
|
||||||
Version Control Systems
|
Version Control Systems
|
||||||
-----------------------
|
-----------------------
|
||||||
@@ -313,6 +320,7 @@ Credits for these changes go to:
|
|||||||
Alessandro Portale
|
Alessandro Portale
|
||||||
Alexander Drozdov
|
Alexander Drozdov
|
||||||
Alexander Pershin
|
Alexander Pershin
|
||||||
|
Alexandre Laurent
|
||||||
Alexis Jeandet
|
Alexis Jeandet
|
||||||
Ali Kianian
|
Ali Kianian
|
||||||
Andre Hartmann
|
Andre Hartmann
|
||||||
@@ -348,6 +356,7 @@ Mats Honkamaa
|
|||||||
Miikka Heikkinen
|
Miikka Heikkinen
|
||||||
Mitch Curtis
|
Mitch Curtis
|
||||||
Morteza Jamshidi
|
Morteza Jamshidi
|
||||||
|
Nicholas Bennett
|
||||||
Nikolaus Demmel
|
Nikolaus Demmel
|
||||||
Olivier De Cannière
|
Olivier De Cannière
|
||||||
Orgad Shaneh
|
Orgad Shaneh
|
||||||
@@ -367,4 +376,5 @@ Thiago Macieira
|
|||||||
Thomas Hartmann
|
Thomas Hartmann
|
||||||
Tim Jenßen
|
Tim Jenßen
|
||||||
Vikas Pachdha
|
Vikas Pachdha
|
||||||
|
Ville Lavonius
|
||||||
Xu Jin
|
Xu Jin
|
||||||
|
@@ -240,7 +240,7 @@
|
|||||||
\li \uicontrol {Use CDB console}
|
\li \uicontrol {Use CDB console}
|
||||||
\li If a console application does not start up properly in the configured
|
\li If a console application does not start up properly in the configured
|
||||||
console and the subsequent attach fails, diagnose the issue by
|
console and the subsequent attach fails, diagnose the issue by
|
||||||
using CDB's native console. Select this checkbox to override the
|
using the native CDB console. Select this checkbox to override the
|
||||||
console set in the Windows system environment variables. Note that
|
console set in the Windows system environment variables. Note that
|
||||||
the native console does not prompt on application exit.
|
the native console does not prompt on application exit.
|
||||||
\row
|
\row
|
||||||
|
@@ -282,7 +282,7 @@
|
|||||||
|
|
||||||
If a console application does not start up properly in the configured
|
If a console application does not start up properly in the configured
|
||||||
console and the subsequent attach fails, you can diagnose the issue by
|
console and the subsequent attach fails, you can diagnose the issue by
|
||||||
using CDB's native console. Go to \preferences >
|
using the native CDB console. Go to \preferences >
|
||||||
\uicontrol Debugger > \uicontrol CDB > \uicontrol {Use CDB console} to
|
\uicontrol Debugger > \uicontrol CDB > \uicontrol {Use CDB console} to
|
||||||
override the console set in the Windows system environment variables.
|
override the console set in the Windows system environment variables.
|
||||||
Note that the native console does not prompt on application exit.
|
Note that the native console does not prompt on application exit.
|
||||||
|
@@ -137,7 +137,8 @@
|
|||||||
|
|
||||||
Many of the error messages are similar to the ones in Douglas Crockford's
|
Many of the error messages are similar to the ones in Douglas Crockford's
|
||||||
\l{http://www.jslint.com}{JSLint} tool. For more information about JSLint
|
\l{http://www.jslint.com}{JSLint} tool. For more information about JSLint
|
||||||
errors, see \l{http://linterrors.com/js}{JSLint Error Explanations}.
|
errors, see \l{https://github.com/jamesallardice/jslint-error-explanations}
|
||||||
|
{JSLint Error Explanations}.
|
||||||
|
|
||||||
\table
|
\table
|
||||||
\header
|
\header
|
||||||
@@ -204,33 +205,30 @@
|
|||||||
\li M10
|
\li M10
|
||||||
\li Error
|
\li Error
|
||||||
\li Duplicate property binding
|
\li Duplicate property binding
|
||||||
\li See also: \l{http://linterrors.com/js/duplicate-key-a}
|
\li For more information, see \e {Duplicate key '{a}'} in
|
||||||
{Duplicate key '{a}'}.
|
\e {JSLint Error Explanations}.
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M11
|
\li M11
|
||||||
\li Error
|
\li Error
|
||||||
\li Id expected
|
\li Id expected
|
||||||
\li See also:
|
\li For more information, see
|
||||||
\l{http://linterrors.com/js/expected-an-identifier-and-instead-saw-a-a-reserved-word}
|
\e {Expected an identifier and instead saw '{a}' (a reserved word)}
|
||||||
{Expected an identifier and instead saw '{a}' (a reserved word)}.
|
in \e {JSLint Error Explanations}.
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M14
|
\li M14
|
||||||
\li Error
|
\li Error
|
||||||
\li Invalid id
|
\li Invalid id
|
||||||
\li See also:
|
\li For more information, see
|
||||||
\l{http://linterrors.com/js/expected-an-identifier-and-instead-saw-a-a-reserved-word}
|
\e {Expected an identifier and instead saw '{a}' (a reserved word)}.
|
||||||
{Expected an identifier and instead saw '{a}' (a reserved word)}.
|
|
||||||
|
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M15
|
\li M15
|
||||||
\li Error
|
\li Error
|
||||||
\li Duplicate id
|
\li Duplicate id
|
||||||
\li Ids in a file must be unique.
|
\li Ids in a file must be unique.
|
||||||
See also: \l{http://linterrors.com/js/duplicate-key-a}
|
For more information, see \e {Duplicate key '{a}'}.
|
||||||
{Duplicate key '{a}'}.
|
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M16
|
\li M16
|
||||||
@@ -270,7 +268,8 @@
|
|||||||
\li M23
|
\li M23
|
||||||
\li Warning
|
\li Warning
|
||||||
\li Do not use \c eval
|
\li Do not use \c eval
|
||||||
\li See also: \l{http://linterrors.com/js/eval-is-evil}{eval is evil}.
|
\li For more information, see \e {eval is evil} in
|
||||||
|
\e {JSLint Error Explanations}.
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M28
|
\li M28
|
||||||
@@ -282,8 +281,8 @@
|
|||||||
\li M29
|
\li M29
|
||||||
\li Warning
|
\li Warning
|
||||||
\li Do not use \c with
|
\li Do not use \c with
|
||||||
\li See also: \l{http://linterrors.com/js/unexpected-with}
|
\li For more information, see \e {Unexpected 'with'} in
|
||||||
{Unexpected 'with'}.
|
\e {JSLint Error Explanations}.
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M30
|
\li M30
|
||||||
@@ -333,51 +332,48 @@
|
|||||||
\li M108
|
\li M108
|
||||||
\li Warning
|
\li Warning
|
||||||
\li Function \c name is used before its declaration
|
\li Function \c name is used before its declaration
|
||||||
\li See also: \l{http://linterrors.com/js/a-was-used-before-it-was-defined}
|
\li For more information, see \e {{a} was used before it was defined} in
|
||||||
{{a} was used before it was defined}.
|
\e {JSLint Error Explanations}.
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M109
|
\li M109
|
||||||
\li Warning
|
\li Warning
|
||||||
\li Do not use \c Boolean as a constructor
|
\li Do not use \c Boolean as a constructor
|
||||||
\li See also: \l{http://linterrors.com/js/do-not-use-a-as-a-constructor}
|
\li For more information, see \e {Do not use {a} as a constructor} in
|
||||||
{Do not use {a} as a constructor}.
|
\e {JSLint Error Explanations}.
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M110
|
\li M110
|
||||||
\li Warning
|
\li Warning
|
||||||
\li Do not use \c String as a constructor
|
\li Do not use \c String as a constructor
|
||||||
\li See also: \l{http://linterrors.com/js/do-not-use-a-as-a-constructor}
|
\li For more information, see \e {Do not use {a} as a constructor}.
|
||||||
{Do not use {a} as a constructor}.
|
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M111
|
\li M111
|
||||||
\li Warning
|
\li Warning
|
||||||
\li Do not use \c Object as a constructor
|
\li Do not use \c Object as a constructor
|
||||||
\li See also: \l{http://linterrors.com/js/do-not-use-a-as-a-constructor}
|
\li For more information, see \e {Do not use {a} as a constructor}.
|
||||||
{Do not use {a} as a constructor}.
|
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M112
|
\li M112
|
||||||
\li Warning
|
\li Warning
|
||||||
\li Do not use \c Array as a constructor
|
\li Do not use \c Array as a constructor
|
||||||
\li See also: \l{http://linterrors.com/js/do-not-use-a-as-a-constructor}
|
\li For more information, see \e {Do not use {a} as a constructor}.
|
||||||
{Do not use {a} as a constructor}.
|
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M113
|
\li M113
|
||||||
\li Warning
|
\li Warning
|
||||||
\li Do not use \c Function as a constructor
|
\li Do not use \c Function as a constructor
|
||||||
\li See also: \l{http://linterrors.com/js/do-not-use-a-as-a-constructor}
|
\li For more information, see \e {Do not use {a} as a constructor}.
|
||||||
{Do not use {a} as a constructor}.
|
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M114
|
\li M114
|
||||||
\li Hint
|
\li Hint
|
||||||
\li The \c function keyword and the opening parenthesis should be
|
\li The \c function keyword and the opening parenthesis should be
|
||||||
separated by a single space
|
separated by a single space
|
||||||
\li See also: \l{http://linterrors.com/js/expected-exactly-one-space-between-a-and-b}
|
\li For more information, see
|
||||||
{Expected exactly one space between {a} and {b}}.
|
\e {Expected exactly one space between {a} and {b}} in
|
||||||
|
\e {JSLint Error Explanations}.
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M115
|
\li M115
|
||||||
@@ -397,15 +393,15 @@
|
|||||||
\li M117
|
\li M117
|
||||||
\li Warning
|
\li Warning
|
||||||
\li Confusing pluses
|
\li Confusing pluses
|
||||||
\li See also: \l{http://linterrors.com/js/confusing-pluses}
|
\li For more information, see \e {Confusing pluses} in
|
||||||
{Confusing pluses}.
|
\e {JSLint Error Explanations}.
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M119
|
\li M119
|
||||||
\li Warning
|
\li Warning
|
||||||
\li Confusing minuses
|
\li Confusing minuses
|
||||||
\li See also: \l{http://linterrors.com/js/confusing-minuses}
|
\li For more information, see \e {Confusing minuses} in
|
||||||
{Confusing minuses}.
|
\e {JSLint Error Explanations}.
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M121
|
\li M121
|
||||||
@@ -453,9 +449,9 @@
|
|||||||
\li M201
|
\li M201
|
||||||
\li Hint
|
\li Hint
|
||||||
\li Place var declarations at the start of a function
|
\li Place var declarations at the start of a function
|
||||||
\li See also:
|
\li For more information, see
|
||||||
\l{http://linterrors.com/js/move-var-declarations-to-the-top-of-the-function}
|
\e {Move 'var' declarations to the top of the function} in
|
||||||
{Move 'var' declarations to the top of the function}.
|
\e {JSLint Error Explanations}.
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M202
|
\li M202
|
||||||
@@ -609,15 +605,14 @@
|
|||||||
\li M307
|
\li M307
|
||||||
\li Warning
|
\li Warning
|
||||||
\li Use \c new only with functions that start with an uppercase letter
|
\li Use \c new only with functions that start with an uppercase letter
|
||||||
\li See also: \l{http://linterrors.com/js/do-not-use-a-as-a-constructor}
|
\li For more information, see \e {Do not use {a} as a constructor} in
|
||||||
{Do not use {a} as a constructor}.
|
\e {JSLint Error Explanations}.
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M308
|
\li M308
|
||||||
\li Warning
|
\li Warning
|
||||||
\li Do not use \c Number as a constructor
|
\li Do not use \c Number as a constructor
|
||||||
\li See also: \l{http://linterrors.com/js/do-not-use-a-as-a-constructor}
|
\li For more information, see \e {Do not use {a} as a constructor}.
|
||||||
{Do not use {a} as a constructor}.
|
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M309
|
\li M309
|
||||||
@@ -707,9 +702,9 @@
|
|||||||
\li M323
|
\li M323
|
||||||
\li Error
|
\li Error
|
||||||
\li \c Number elements expected in array value
|
\li \c Number elements expected in array value
|
||||||
\li See also:
|
\li For more information, see
|
||||||
\l{http://linterrors.com/js/the-array-literal-notation-is-preferrable}
|
\e {The array literal notation [] is preferable} in
|
||||||
{The array literal notation [] is preferable}.
|
\e {JSLint Error Explanations}.
|
||||||
|
|
||||||
\row
|
\row
|
||||||
\li M324
|
\li M324
|
||||||
|
@@ -50,6 +50,45 @@
|
|||||||
\image qtcreator-syntax-highlighter.png {Generic Highlighter preferences}
|
\image qtcreator-syntax-highlighter.png {Generic Highlighter preferences}
|
||||||
For more information, see \l{Download highlight definitions}.
|
For more information, see \l{Download highlight definitions}.
|
||||||
|
|
||||||
|
\section1 Install and use Ollama
|
||||||
|
|
||||||
|
To use LLMs running locally on your computer with the Qt AI Assistant extension,
|
||||||
|
install Ollama. You can run models available from the Ollama selection as well
|
||||||
|
as custom models added by you to Ollama.
|
||||||
|
|
||||||
|
\section2 Run models on Ollama
|
||||||
|
|
||||||
|
To run models, enter:
|
||||||
|
|
||||||
|
\code
|
||||||
|
ollama run <model-name>
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
For example:
|
||||||
|
|
||||||
|
\code
|
||||||
|
ollama run codellama:7b-code
|
||||||
|
\endcode
|
||||||
|
|
||||||
|
\section2 Supported models from Ollama
|
||||||
|
|
||||||
|
You can use the following models directly from Ollama:
|
||||||
|
|
||||||
|
\list
|
||||||
|
\li \c codellama:7b-code
|
||||||
|
\li \c deepseek-coder-v2:lite
|
||||||
|
\li \c starcoder2:7b
|
||||||
|
\endlist
|
||||||
|
|
||||||
|
\section2 Custom models
|
||||||
|
|
||||||
|
For custom models, follow the specific installation instructions for that mode.
|
||||||
|
You can use the following custom models:
|
||||||
|
|
||||||
|
\list
|
||||||
|
\li \l {https://huggingface.co/QtGroup/CodeLlama-13B-QML}{codellama:13b-code-qml}
|
||||||
|
\endlist
|
||||||
|
|
||||||
\section1 Connect to an LLM
|
\section1 Connect to an LLM
|
||||||
|
|
||||||
You can connect to the following LLMs:
|
You can connect to the following LLMs:
|
||||||
|
@@ -461,7 +461,7 @@
|
|||||||
\inlineimage icons/refactormarker.png
|
\inlineimage icons/refactormarker.png
|
||||||
\row
|
\row
|
||||||
\li Convert Function Call to Qt Meta-Method Invocation
|
\li Convert Function Call to Qt Meta-Method Invocation
|
||||||
\li Converts an invokable function call into a meta method
|
\li Converts an invocable function call into a meta method
|
||||||
invocation. This applies to signals and slots in general,
|
invocation. This applies to signals and slots in general,
|
||||||
as well as functions explicitly marked with \c Q_INVOKABLE.
|
as well as functions explicitly marked with \c Q_INVOKABLE.
|
||||||
For example, for the following class:
|
For example, for the following class:
|
||||||
@@ -499,7 +499,7 @@
|
|||||||
}
|
}
|
||||||
\endcode
|
\endcode
|
||||||
|
|
||||||
The quick fix also works on invokable methods outside the class that are
|
The quick fix also works on invocable methods outside the class that are
|
||||||
visible from the location where they are called from. For example, it
|
visible from the location where they are called from. For example, it
|
||||||
rewrites
|
rewrites
|
||||||
|
|
||||||
|
@@ -20,8 +20,7 @@
|
|||||||
|
|
||||||
\note Since \QDS 2.3.0, \QDS project wizard templates generate projects that
|
\note Since \QDS 2.3.0, \QDS project wizard templates generate projects that
|
||||||
can be built with CMake. You can open the \e CMakeLists.txt project file in
|
can be built with CMake. You can open the \e CMakeLists.txt project file in
|
||||||
Qt Creator to continue developing the project. Also, you can use Qt Creator
|
Qt Creator to continue developing the project.
|
||||||
to create a Qt Quick Application project that you can open in \QDS.
|
|
||||||
|
|
||||||
\target wizard-template-note
|
\target wizard-template-note
|
||||||
\note Since \QDS 3.9.0, \QDS project wizard templates generate projects that
|
\note Since \QDS 3.9.0, \QDS project wizard templates generate projects that
|
||||||
@@ -54,12 +53,12 @@
|
|||||||
show the main QML file when the application starts.
|
show the main QML file when the application starts.
|
||||||
|
|
||||||
\if defined(qtcreator)
|
\if defined(qtcreator)
|
||||||
The \e {Qt Quick Designer Components} module is installed when you
|
The \e {Qt Quick Studio Components} module is installed when you
|
||||||
install \QDS. If you use Qt Quick Studio Components or Effects
|
install \QDS. If you use Qt Quick Studio Components or Effects
|
||||||
from the module in a project that you want to edit in Qt Creator,
|
from the module in a project that you want to edit in Qt Creator,
|
||||||
you have to build the module and install it to your Qt to be able to
|
you have to build the module and install it to your Qt to be able to
|
||||||
build your project. For more information, see
|
build your project. For more information, see
|
||||||
\l{Adding Qt Quick Designer Components to Qt Installations}.
|
\l{Adding Qt Quick Studio Components to Qt Installations}.
|
||||||
|
|
||||||
The \l{Qt Quick Timeline} module is installed when you install \QDS.
|
The \l{Qt Quick Timeline} module is installed when you install \QDS.
|
||||||
If you only install Qt Creator and Qt, remember to also select the
|
If you only install Qt Creator and Qt, remember to also select the
|
||||||
@@ -110,7 +109,7 @@
|
|||||||
project.
|
project.
|
||||||
|
|
||||||
\note If you get error messages related to modules, perfom the steps
|
\note If you get error messages related to modules, perfom the steps
|
||||||
described in \l{Adding Qt Quick Designer Components to Qt Installations}.
|
described in \l{Adding Qt Quick Studio Components to Qt Installations}.
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
For example, if you copy the source files of the \e ProgressBar
|
For example, if you copy the source files of the \e ProgressBar
|
||||||
@@ -142,7 +141,7 @@
|
|||||||
using the Qt resource system dynamically. For more information, see
|
using the Qt resource system dynamically. For more information, see
|
||||||
\l{The Qt Resource System}.
|
\l{The Qt Resource System}.
|
||||||
|
|
||||||
\section1 Adding Qt Quick Designer Components to Qt Installations
|
\section1 Adding Qt Quick Studio Components to Qt Installations
|
||||||
|
|
||||||
Since \QDS 3.9, the Qt Quick Studio Components module is installed by default
|
Since \QDS 3.9, the Qt Quick Studio Components module is installed by default
|
||||||
as part of the application created with \QDS. You can also install the module manually.
|
as part of the application created with \QDS. You can also install the module manually.
|
||||||
@@ -154,7 +153,7 @@
|
|||||||
git clone https://code.qt.io/qt-labs/qtquickdesigner-components.git
|
git clone https://code.qt.io/qt-labs/qtquickdesigner-components.git
|
||||||
\endcode
|
\endcode
|
||||||
|
|
||||||
\li Install the Qt Quick Designer Components module.
|
\li Install the Qt Quick Studio Components module.
|
||||||
|
|
||||||
\badcode
|
\badcode
|
||||||
mkdir build
|
mkdir build
|
||||||
|
@@ -369,7 +369,7 @@
|
|||||||
\li \l {git branch}
|
\li \l {git branch}
|
||||||
\row
|
\row
|
||||||
\li \uicontrol {Copy <hash>}
|
\li \uicontrol {Copy <hash>}
|
||||||
\li Copy the commit's <hash> to the clipboard.
|
\li Copy the commit <hash> to the clipboard.
|
||||||
\li
|
\li
|
||||||
\row
|
\row
|
||||||
\li \uicontrol {Describe Change <hash>}
|
\li \uicontrol {Describe Change <hash>}
|
||||||
@@ -1005,7 +1005,7 @@
|
|||||||
|
|
||||||
In the \uicontrol {Git Branches} view, right-click a remote branch, and
|
In the \uicontrol {Git Branches} view, right-click a remote branch, and
|
||||||
then select a merge option in the context menu. If the commit you are merging
|
then select a merge option in the context menu. If the commit you are merging
|
||||||
can be reached by following the first commit's history, there is no divergent
|
can be reached by following the history of the first commit, there is no divergent
|
||||||
work to merge together. To allow Git to move the branch pointer forward,
|
work to merge together. To allow Git to move the branch pointer forward,
|
||||||
select \uicontrol {Merge <remote branch> into <local branch> (Fast-Forward)}.
|
select \uicontrol {Merge <remote branch> into <local branch> (Fast-Forward)}.
|
||||||
If you do not want to fast-forward the branch, select
|
If you do not want to fast-forward the branch, select
|
||||||
|
@@ -25595,7 +25595,7 @@ Dies ist normalerweise nicht empfehlenswert, da die Datei wahrscheinlich währen
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Provide the type</source>
|
<source>Provide the type</source>
|
||||||
<translation>Typ bestimmen</translation>
|
<translation>Typ festlegen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Data type:</source>
|
<source>Data type:</source>
|
||||||
@@ -46897,7 +46897,7 @@ fails because Clang does not understand the target architecture.</source>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Provide manually</source>
|
<source>Provide manually</source>
|
||||||
<translation>Manuell bestimmen</translation>
|
<translation>Manuell festlegen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>None</source>
|
<source>None</source>
|
||||||
@@ -52613,12 +52613,12 @@ wirklich entfernen?</translation>
|
|||||||
<message>
|
<message>
|
||||||
<source>All</source>
|
<source>All</source>
|
||||||
<comment>All documentation</comment>
|
<comment>All documentation</comment>
|
||||||
<translation type="unfinished">Alle</translation>
|
<translation>Alle</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>None</source>
|
<source>None</source>
|
||||||
<comment>No documentation</comment>
|
<comment>No documentation</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Keine</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Not all possible target environments can be supported due to missing compilers.</source>
|
<source>Not all possible target environments can be supported due to missing compilers.</source>
|
||||||
@@ -52812,7 +52812,7 @@ wirklich entfernen?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Qt version is not properly installed</source>
|
<source>Qt version is not properly installed</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Die Qt-Version ist nicht korrekt installiert</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Name:</source>
|
<source>Name:</source>
|
||||||
@@ -52848,7 +52848,7 @@ wirklich entfernen?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Cannot update Qt version information from %1: %2.</source>
|
<source>Cannot update Qt version information from %1: %2.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Kann die Qt-Versionsinformation von %1 nicht aktualisieren: %2.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Qt version</source>
|
<source>Qt version</source>
|
||||||
@@ -52972,12 +52972,12 @@ wirklich entfernen?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Mkspec:</source>
|
<source>Mkspec:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Mkspec:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>None</source>
|
<source>None</source>
|
||||||
<comment>No Qt version</comment>
|
<comment>No Qt version</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Keine</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Name of Qt Version</source>
|
<source>Name of Qt Version</source>
|
||||||
@@ -53085,23 +53085,23 @@ wirklich entfernen?</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Could not determine target OS</source>
|
<source>Could not determine target OS</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Das Zielbetriebssystem konnte nicht bestimmt werden</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Could not determine target architecture</source>
|
<source>Could not determine target architecture</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Die Zielarchitektur konnte nicht bestimmt werden</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Could not determine OS sub-type</source>
|
<source>Could not determine OS sub-type</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Der Betriebssystemuntertyp konnte nicht bestimmt werden</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Error reading "%1": %2</source>
|
<source>Error reading "%1": %2</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Fehler beim Lesen von "%1": %2</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Core.json not found for Qt at "%1"</source>
|
<source>Core.json not found for Qt at "%1"</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Core.json wurde für Qt in "%1" nicht gefunden</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -53920,7 +53920,7 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Unknown error</source>
|
<source>Unknown error</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Unbekannter Fehler</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The ssh-keygen tool at "%1" failed: %2</source>
|
<source>The ssh-keygen tool at "%1" failed: %2</source>
|
||||||
@@ -56394,11 +56394,11 @@ Die Datei "%1" konnte nicht geöffnet werden.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Delete Word Left</source>
|
<source>Delete Word Left</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Wort links löschen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Delete Line Left</source>
|
<source>Delete Line Left</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Zeile links löschen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Clear Terminal</source>
|
<source>Clear Terminal</source>
|
||||||
@@ -57239,7 +57239,7 @@ Gibt an, wie sich die Rücktaste bezüglich Einrückung verhält.
|
|||||||
<message>
|
<message>
|
||||||
<source>None</source>
|
<source>None</source>
|
||||||
<comment>Backspace indentation: None</comment>
|
<comment>Backspace indentation: None</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Keine</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Enable scroll &wheel zooming</source>
|
<source>Enable scroll &wheel zooming</source>
|
||||||
@@ -57443,7 +57443,7 @@ Gibt an, wie sich die Rücktaste bezüglich Einrückung verhält.
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Display tab settings</source>
|
<source>Display tab settings</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Tabulatoreinstellungen anzeigen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>&Highlight selection</source>
|
<source>&Highlight selection</source>
|
||||||
@@ -57631,11 +57631,11 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen.
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Auto detect</source>
|
<source>Auto detect</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Automatisch bestimmen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>%1 tries to detect the indentation settings based on the file contents. It will fallback to the settings below if the detection fails.</source>
|
<source>%1 tries to detect the indentation settings based on the file contents. It will fallback to the settings below if the detection fails.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>%1 versucht, die Einstellungen für die Einrückung aufgrund des Dateiinhalts zu bestimmen. Wenn die Bestimmung fehlschlägt, werden die unten angegebenen Einstellungen benutzt.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Not At All</source>
|
<source>Not At All</source>
|
||||||
@@ -57651,11 +57651,11 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen.
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Default tab policy:</source>
|
<source>Default tab policy:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Vorgabe-Tabulatorverhalten:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Default &indent size:</source>
|
<source>Default &indent size:</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Vorgabe-Einrückungst&iefe:</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>The text editor indentation setting is used for non-code files only. See the C++ and Qt Quick coding style settings to configure indentation for code files.</source>
|
<source>The text editor indentation setting is used for non-code files only. See the C++ and Qt Quick coding style settings to configure indentation for code files.</source>
|
||||||
@@ -57733,31 +57733,31 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen.
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Spaces</source>
|
<source>Spaces</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Leerzeichen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Tabs</source>
|
<source>Tabs</source>
|
||||||
<translation type="unfinished">Tabulatoren</translation>
|
<translation>Tabulatoren</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Document Settings</source>
|
<source>Document Settings</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Dokumenteinstellungen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Tab Settings</source>
|
<source>Tab Settings</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Tabulatoreinstellungen</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Indent Size</source>
|
<source>Indent Size</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Einrückungstiefe</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Tab Size</source>
|
<source>Tab Size</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Tabulatorweite</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Global Settings...</source>
|
<source>Global Settings...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Globale Einstellungen...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Unix Line Endings (LF)</source>
|
<source>Unix Line Endings (LF)</source>
|
||||||
@@ -58410,7 +58410,8 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen.
|
|||||||
<message>
|
<message>
|
||||||
<source>None</source>
|
<source>None</source>
|
||||||
<comment>Case-sensitivity: None</comment>
|
<comment>Case-sensitivity: None</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translatorcomment>Groß-/Kleinschreibung:</translatorcomment>
|
||||||
|
<translation>Keine</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>First Letter</source>
|
<source>First Letter</source>
|
||||||
@@ -59168,19 +59169,19 @@ Außer Leerzeichen innerhalb von Kommentaren und Zeichenketten.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Info</source>
|
<source>Info</source>
|
||||||
<translation type="unfinished">Info</translation>
|
<translation>Info</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Underline color of info diagnostics.</source>
|
<source>Underline color of info diagnostics.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Unterstreichung von Informationen.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Info Context</source>
|
<source>Info Context</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Informationskontext</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Underline color of the contexts of info diagnostics.</source>
|
<source>Underline color of the contexts of info diagnostics.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Unterstreichung der Kontexte von Informationen.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Static Member</source>
|
<source>Static Member</source>
|
||||||
@@ -59465,19 +59466,19 @@ Außer Leerzeichen innerhalb von Kommentaren und Zeichenketten.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Blame %1</source>
|
<source>Blame %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Blame von %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Blame Parent</source>
|
<source>Blame Parent</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Blame des Eltern-Commits</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>File at %1</source>
|
<source>File at %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Datei bei %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Log for line %1</source>
|
<source>Log for line %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Log für Zeile %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source><b>Note:</b> "%1" or "%2" is enabled in the instant blame settings.</source>
|
<source><b>Note:</b> "%1" or "%2" is enabled in the instant blame settings.</source>
|
||||||
@@ -59486,11 +59487,11 @@ Außer Leerzeichen innerhalb von Kommentaren und Zeichenketten.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Not Committed Yet</source>
|
<source>Not Committed Yet</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Noch nicht in Commit</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Modified line in %1</source>
|
<source>Modified line in %1</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Geänderte Zeile in %1</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>You</source>
|
<source>You</source>
|
||||||
@@ -60324,7 +60325,7 @@ Die Trace-Daten sind verloren.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Device is unavailable.</source>
|
<source>Device is unavailable.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Gerät ist nicht verfügbar.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Failed to watch "%1".</source>
|
<source>Failed to watch "%1".</source>
|
||||||
@@ -60467,7 +60468,7 @@ Die Trace-Daten sind verloren.</translation>
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>File %1 does not exist.</source>
|
<source>File %1 does not exist.</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Datei %1 existiert nicht.</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Failed to set up scratch buffer in "%1".</source>
|
<source>Failed to set up scratch buffer in "%1".</source>
|
||||||
@@ -61036,7 +61037,7 @@ Zeilen, die mit "##" beginnen, werden als Kommentare behandelt.</trans
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Remote error output was: %1</source>
|
<source>Remote error output was: %1</source>
|
||||||
<translation type="unfinished">Fehlerausgabe: %1</translation>
|
<translation>Fehlerausgabe des Geräts: %1</translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
@@ -61594,11 +61595,11 @@ Wird ein Problem gefunden, dann wird die Anwendung angehalten und kann untersuch
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Starting Memory Analyzer...</source>
|
<source>Starting Memory Analyzer...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Starte Speicheranalyse...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Memory Analyzer running...</source>
|
<source>Memory Analyzer running...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Speicheranalyse läuft...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Open Memcheck XML Log File</source>
|
<source>Open Memcheck XML Log File</source>
|
||||||
@@ -61792,11 +61793,11 @@ Wird ein Problem gefunden, dann wird die Anwendung angehalten und kann untersuch
|
|||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Starting Function Profiler...</source>
|
<source>Starting Function Profiler...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Starte Funktionsprofiler...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Function Profiler running...</source>
|
<source>Function Profiler running...</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Funktionsprofiler läuft...</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Remove template parameter lists when displaying function names.</source>
|
<source>Remove template parameter lists when displaying function names.</source>
|
||||||
@@ -61981,7 +61982,7 @@ Check settings or ensure Valgrind is installed and available in PATH.</source>
|
|||||||
<message>
|
<message>
|
||||||
<source>None</source>
|
<source>None</source>
|
||||||
<comment>Leak details: None</comment>
|
<comment>Leak details: None</comment>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Keine</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Simple</source>
|
<source>Simple</source>
|
||||||
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 8.1 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 2.2 KiB After Width: | Height: | Size: 2.1 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 19 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 48 KiB |
@@ -857,7 +857,10 @@ Utils::expected_str<QFuture<void>> Client::signalProcess(int pid, Utils::Control
|
|||||||
bool Client::exit()
|
bool Client::exit()
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
createVoidJob(d.get(), QCborMap{{"Type", "exit"}}, "exitres")->waitForFinished();
|
createVoidJob(d.get(), QCborMap{{"Type", "exit"}}, "exitres").and_then([](auto future) {
|
||||||
|
future.waitForFinished();
|
||||||
|
return expected_str<void>();
|
||||||
|
});
|
||||||
return true;
|
return true;
|
||||||
} catch (const std::runtime_error &e) {
|
} catch (const std::runtime_error &e) {
|
||||||
if (e.what() == std::string("NormalExit"))
|
if (e.what() == std::string("NormalExit"))
|
||||||
|
@@ -145,6 +145,7 @@ static QHash<Utils::MimeType, QString> mimeTypeLanguageIdMap()
|
|||||||
{"application/xml", "xml"},
|
{"application/xml", "xml"},
|
||||||
{"application/xslt+xml", "xsl"},
|
{"application/xslt+xml", "xsl"},
|
||||||
{"application/x-yaml", "yaml"},
|
{"application/x-yaml", "yaml"},
|
||||||
|
{"text/x-swift", "swift"},
|
||||||
};
|
};
|
||||||
for (const QPair<QString, QString> &languageIdForMimeTypeName : languageIdsForMimeTypeNames) {
|
for (const QPair<QString, QString> &languageIdForMimeTypeName : languageIdsForMimeTypeNames) {
|
||||||
const Utils::MimeType &mimeType = Utils::mimeTypeForName(languageIdForMimeTypeName.first);
|
const Utils::MimeType &mimeType = Utils::mimeTypeForName(languageIdForMimeTypeName.first);
|
||||||
|
@@ -1463,10 +1463,11 @@ expected_str<QByteArray> UnixDeviceFileAccess::fileContents(const FilePath &file
|
|||||||
}
|
}
|
||||||
#ifndef UTILS_STATIC_LIBRARY
|
#ifndef UTILS_STATIC_LIBRARY
|
||||||
const FilePath dd = filePath.withNewPath("dd");
|
const FilePath dd = filePath.withNewPath("dd");
|
||||||
|
using namespace std::literals::chrono_literals;
|
||||||
|
|
||||||
Process p;
|
Process p;
|
||||||
p.setCommand({dd, args, OsType::OsTypeLinux});
|
p.setCommand({dd, args, OsType::OsTypeLinux});
|
||||||
p.runBlocking();
|
p.runBlocking(0s); // Run forever
|
||||||
if (p.exitCode() != 0) {
|
if (p.exitCode() != 0) {
|
||||||
return make_unexpected(Tr::tr("Failed reading file \"%1\": %2")
|
return make_unexpected(Tr::tr("Failed reading file \"%1\": %2")
|
||||||
.arg(filePath.toUserOutput(), p.readAllStandardError()));
|
.arg(filePath.toUserOutput(), p.readAllStandardError()));
|
||||||
|
@@ -1134,6 +1134,11 @@ void MarkdownBrowser::setEnableCodeCopyButton(bool enable)
|
|||||||
access(this)->setEnableCodeCopyButton(enable);
|
access(this)->setEnableCodeCopyButton(enable);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MarkdownBrowser::setViewportMargins(int left, int top, int right, int bottom)
|
||||||
|
{
|
||||||
|
access(this)->setMargins(QMargins(left, top, right, bottom));
|
||||||
|
}
|
||||||
|
|
||||||
// Special If
|
// Special If
|
||||||
|
|
||||||
If::If(
|
If::If(
|
||||||
|
@@ -460,6 +460,7 @@ public:
|
|||||||
void setMarkdown(const QString &);
|
void setMarkdown(const QString &);
|
||||||
void setBasePath(const Utils::FilePath &);
|
void setBasePath(const Utils::FilePath &);
|
||||||
void setEnableCodeCopyButton(bool enable);
|
void setEnableCodeCopyButton(bool enable);
|
||||||
|
void setViewportMargins(int left, int top, int right, int bottom);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Special
|
// Special
|
||||||
|
@@ -124,6 +124,7 @@ public:
|
|||||||
rp.setUseContinueInsteadOfRun(true);
|
rp.setUseContinueInsteadOfRun(true);
|
||||||
rp.setContinueAfterAttach(true);
|
rp.setContinueAfterAttach(true);
|
||||||
rp.addSolibSearchDir("%{sysroot}/system/lib");
|
rp.addSolibSearchDir("%{sysroot}/system/lib");
|
||||||
|
rp.setSkipDebugServer(true);
|
||||||
|
|
||||||
auto debuggee = createQdbDeviceInferiorWorker(runControl, QmlDebuggerServices);
|
auto debuggee = createQdbDeviceInferiorWorker(runControl, QmlDebuggerServices);
|
||||||
worker->addStartDependency(debuggee);
|
worker->addStartDependency(debuggee);
|
||||||
|
@@ -296,13 +296,18 @@ void ModulesHandler::updateModule(const Module &module)
|
|||||||
m_model->rootItem()->appendChild(item);
|
m_model->rootItem()->appendChild(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
try { // MinGW occasionallly throws std::bad_alloc.
|
if (path.isLocal()) {
|
||||||
ElfReader reader(path);
|
try { // MinGW occasionallly throws std::bad_alloc.
|
||||||
item->module.elfData = reader.readHeaders();
|
ElfReader reader(path);
|
||||||
item->update();
|
item->module.elfData = reader.readHeaders();
|
||||||
} catch(...) {
|
item->update();
|
||||||
qWarning("%s: An exception occurred while reading module '%s'",
|
} catch(...) {
|
||||||
Q_FUNC_INFO, qPrintable(module.modulePath.toUserOutput()));
|
qWarning("%s: An exception occurred while reading module '%s'",
|
||||||
|
Q_FUNC_INFO, qPrintable(module.modulePath.toUserOutput()));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
m_model->engine->showMessage(
|
||||||
|
QString("Skipping elf-reading of remote path %1").arg(path.toUserOutput()));
|
||||||
}
|
}
|
||||||
item->updated = true;
|
item->updated = true;
|
||||||
}
|
}
|
||||||
|
@@ -936,8 +936,10 @@ CommandLine DockerDevicePrivate::createCommandLine()
|
|||||||
|
|
||||||
#ifdef Q_OS_UNIX
|
#ifdef Q_OS_UNIX
|
||||||
// no getuid() and getgid() on Windows.
|
// no getuid() and getgid() on Windows.
|
||||||
if (q->useLocalUidGid())
|
if (q->useLocalUidGid()) {
|
||||||
dockerCreate.addArgs({"-u", QString("%1:%2").arg(getuid()).arg(getgid())});
|
dockerCreate.addArgs({"-u", QString("%1:%2").arg(getuid()).arg(getgid())});
|
||||||
|
dockerCreate.addArgs({"-e", QString("HOME=/tmp/qtc_home/%1").arg(getuid())});
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!q->network().isEmpty()) {
|
if (!q->network().isEmpty()) {
|
||||||
|
@@ -154,7 +154,7 @@ QString BlameMark::toolTipText(const CommitInfo &info) const
|
|||||||
.arg(colors.hash, info.hash,
|
.arg(colors.hash, info.hash,
|
||||||
colors.author, info.author, info.authorMail,
|
colors.author, info.author, info.authorMail,
|
||||||
colors.date, info.authorDate.toString("yyyy-MM-dd hh:mm:ss"),
|
colors.date, info.authorDate.toString("yyyy-MM-dd hh:mm:ss"),
|
||||||
colors.subject, info.subject);
|
colors.subject, info.subject.toHtmlEscaped());
|
||||||
|
|
||||||
QString result = actions + header;
|
QString result = actions + header;
|
||||||
|
|
||||||
|
@@ -11,6 +11,7 @@
|
|||||||
#include <utils/layoutbuilder.h>
|
#include <utils/layoutbuilder.h>
|
||||||
|
|
||||||
#include <QMetaEnum>
|
#include <QMetaEnum>
|
||||||
|
#include <QCompleter>
|
||||||
|
|
||||||
using namespace Layouting;
|
using namespace Layouting;
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
@@ -114,6 +115,7 @@ CREATE_HAS_FUNC(setFixedSize, QSize())
|
|||||||
CREATE_HAS_FUNC(setVisible, bool())
|
CREATE_HAS_FUNC(setVisible, bool())
|
||||||
CREATE_HAS_FUNC(setIcon, Utils::Icon());
|
CREATE_HAS_FUNC(setIcon, Utils::Icon());
|
||||||
CREATE_HAS_FUNC(setContentsMargins, int(), int(), int(), int());
|
CREATE_HAS_FUNC(setContentsMargins, int(), int(), int(), int());
|
||||||
|
CREATE_HAS_FUNC(setViewportMargins, int(), int(), int(), int());
|
||||||
CREATE_HAS_FUNC(setCursor, Qt::CursorShape())
|
CREATE_HAS_FUNC(setCursor, Qt::CursorShape())
|
||||||
CREATE_HAS_FUNC(setMinimumWidth, int());
|
CREATE_HAS_FUNC(setMinimumWidth, int());
|
||||||
CREATE_HAS_FUNC(setEnableCodeCopyButton, bool());
|
CREATE_HAS_FUNC(setEnableCodeCopyButton, bool());
|
||||||
@@ -127,6 +129,12 @@ void setProperties(std::unique_ptr<T> &item, const sol::table &children, QObject
|
|||||||
item->setContentsMargins(margins->left(), margins->top(), margins->right(), margins->bottom());
|
item->setContentsMargins(margins->left(), margins->top(), margins->right(), margins->bottom());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if constexpr (has_setViewportMargins<T>) {
|
||||||
|
sol::optional<QMargins> margins = children.get<sol::optional<QMargins>>("viewportMargins"sv);
|
||||||
|
if (margins)
|
||||||
|
item->setViewportMargins(margins->left(), margins->top(), margins->right(), margins->bottom());
|
||||||
|
}
|
||||||
|
|
||||||
if constexpr (has_setCursor<T>) {
|
if constexpr (has_setCursor<T>) {
|
||||||
const auto cursor = children.get<sol::optional<Qt::CursorShape>>("cursor"sv);
|
const auto cursor = children.get<sol::optional<Qt::CursorShape>>("cursor"sv);
|
||||||
if (cursor)
|
if (cursor)
|
||||||
@@ -196,8 +204,10 @@ void setProperties(std::unique_ptr<T> &item, const sol::table &children, QObject
|
|||||||
|
|
||||||
if constexpr (has_setCompleter<T>) {
|
if constexpr (has_setCompleter<T>) {
|
||||||
const auto completer = children.get<QCompleter *>("completer"sv);
|
const auto completer = children.get<QCompleter *>("completer"sv);
|
||||||
if (completer)
|
if (completer) {
|
||||||
item->setCompleter(completer);
|
item->setCompleter(completer);
|
||||||
|
completer->setParent(item->emerge());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if constexpr (has_setMinimumHeight<T>) {
|
if constexpr (has_setMinimumHeight<T>) {
|
||||||
|
@@ -29,8 +29,15 @@ void setupQtModule()
|
|||||||
qt.new_usertype<QCompleter>(
|
qt.new_usertype<QCompleter>(
|
||||||
"QCompleter",
|
"QCompleter",
|
||||||
"create",
|
"create",
|
||||||
[](const QStringList &list) -> std::unique_ptr<QCompleter> {
|
[](const QStringList &list) -> QCompleter* {
|
||||||
return std::make_unique<QCompleter>(list);
|
return new QCompleter(list);
|
||||||
|
},
|
||||||
|
sol::meta_function::garbage_collect, [](QCompleter *self) {
|
||||||
|
// If the user never parented this QCompleter to any QObject,
|
||||||
|
// then we own it, so let's delete it to avoid a memory leak.
|
||||||
|
if (!self->parent()) {
|
||||||
|
self->deleteLater();
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"currentCompletion",
|
"currentCompletion",
|
||||||
&QCompleter::currentCompletion,
|
&QCompleter::currentCompletion,
|
||||||
|
@@ -232,6 +232,7 @@ local markdownBrowser = {}
|
|||||||
|
|
||||||
---@class (exact) MarkdownBrowserOptions : WidgetOptions
|
---@class (exact) MarkdownBrowserOptions : WidgetOptions
|
||||||
---@field enableCodeCopyButton? boolean Enable or disable the code copy button
|
---@field enableCodeCopyButton? boolean Enable or disable the code copy button
|
||||||
|
---@field viewportMargins? integer[] Four integers representing left, top, right and bottom margins
|
||||||
local markdownBrowserOptions = {}
|
local markdownBrowserOptions = {}
|
||||||
|
|
||||||
---@param options MarkdownBrowserOptions
|
---@param options MarkdownBrowserOptions
|
||||||
|
@@ -2488,6 +2488,13 @@ FilePairs ProjectExplorerPlugin::renameFiles(
|
|||||||
= Utils::filtered(nodesAndNewFilePaths, [](const std::pair<Node *, FilePath> &elem) {
|
= Utils::filtered(nodesAndNewFilePaths, [](const std::pair<Node *, FilePath> &elem) {
|
||||||
return !elem.first->filePath().equalsCaseSensitive(elem.second);
|
return !elem.first->filePath().equalsCaseSensitive(elem.second);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// The same as above, for use when the nodes might no longer exist.
|
||||||
|
const QList<std::pair<FilePath, FilePath>> oldAndNewFilePathsFiltered
|
||||||
|
= Utils::transform(nodesAndNewFilePathsFiltered, [](const std::pair<Node *, FilePath> &p) {
|
||||||
|
return std::make_pair(p.first->filePath(), p.second);
|
||||||
|
});
|
||||||
|
|
||||||
FilePaths renamedOnly;
|
FilePaths renamedOnly;
|
||||||
FilePaths failedRenamings;
|
FilePaths failedRenamings;
|
||||||
const auto renameFile = [&failedRenamings](const Node *node, const FilePath &newFilePath) {
|
const auto renameFile = [&failedRenamings](const Node *node, const FilePath &newFilePath) {
|
||||||
@@ -2553,9 +2560,9 @@ FilePairs ProjectExplorerPlugin::renameFiles(
|
|||||||
}
|
}
|
||||||
|
|
||||||
FilePairs allRenamedFiles;
|
FilePairs allRenamedFiles;
|
||||||
for (const std::pair<Node *, FilePath> &candidate : nodesAndNewFilePathsFiltered) {
|
for (const std::pair<FilePath, FilePath> &candidate : oldAndNewFilePathsFiltered) {
|
||||||
if (!failedRenamings.contains(candidate.first->filePath()))
|
if (!failedRenamings.contains(candidate.first))
|
||||||
allRenamedFiles.emplaceBack(candidate.first->filePath(), candidate.second);
|
allRenamedFiles.emplaceBack(candidate.first, candidate.second);
|
||||||
}
|
}
|
||||||
emit instance()->filesRenamed(allRenamedFiles);
|
emit instance()->filesRenamed(allRenamedFiles);
|
||||||
return allRenamedFiles;
|
return allRenamedFiles;
|
||||||
|
@@ -1807,7 +1807,8 @@ void RunWorker::initiateStop()
|
|||||||
*/
|
*/
|
||||||
void RunWorker::reportStopped()
|
void RunWorker::reportStopped()
|
||||||
{
|
{
|
||||||
d->runControl->d->onWorkerStopped(this);
|
if (QTC_GUARD(d && d->runControl && d->runControl->d))
|
||||||
|
d->runControl->d->onWorkerStopped(this);
|
||||||
emit stopped();
|
emit stopped();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -65,6 +65,7 @@ QmllsClientSettings::QmllsClientSettings()
|
|||||||
m_settingsTypeId = Constants::QMLLS_CLIENT_SETTINGS_ID;
|
m_settingsTypeId = Constants::QMLLS_CLIENT_SETTINGS_ID;
|
||||||
m_startBehavior = RequiresProject;
|
m_startBehavior = RequiresProject;
|
||||||
m_initializationOptions = "{\"qtCreatorHighlighting\": true}";
|
m_initializationOptions = "{\"qtCreatorHighlighting\": true}";
|
||||||
|
m_enabled = false; // disabled by default
|
||||||
}
|
}
|
||||||
|
|
||||||
static QtVersion *qtVersionFromProject(const Project *project)
|
static QtVersion *qtVersionFromProject(const Project *project)
|
||||||
|
@@ -156,10 +156,7 @@ GroupItem GenericDeployStep::transferTask(const Storage<FilesToTransfer> &storag
|
|||||||
.arg(FileTransfer::transferMethodName(preferredTransferMethod),
|
.arg(FileTransfer::transferMethodName(preferredTransferMethod),
|
||||||
FileTransfer::transferMethodName(transferMethod),
|
FileTransfer::transferMethodName(transferMethod),
|
||||||
deviceConfiguration()->displayName());
|
deviceConfiguration()->displayName());
|
||||||
if (transferMethod == FileTransferMethod::GenericCopy)
|
addProgressMessage(message);
|
||||||
addWarningMessage(message);
|
|
||||||
else
|
|
||||||
addProgressMessage(message);
|
|
||||||
m_emittedDowngradeWarning = true;
|
m_emittedDowngradeWarning = true;
|
||||||
}
|
}
|
||||||
transfer.setTransferMethod(transferMethod);
|
transfer.setTransferMethod(transferMethod);
|
||||||
|
@@ -52,10 +52,15 @@
|
|||||||
" <glob pattern='*.markdown'/>",
|
" <glob pattern='*.markdown'/>",
|
||||||
" </mime-type>",
|
" </mime-type>",
|
||||||
" <mime-type type='text/rust'>",
|
" <mime-type type='text/rust'>",
|
||||||
" <comment>Rust souce file</comment>",
|
" <comment>Rust source file</comment>",
|
||||||
" <sub-class-of type='text/plain'/>",
|
" <sub-class-of type='text/plain'/>",
|
||||||
" <glob pattern='*.rs'/>",
|
" <glob pattern='*.rs'/>",
|
||||||
" </mime-type>",
|
" </mime-type>",
|
||||||
|
" <mime-type type='text/x-swift'>",
|
||||||
|
" <comment>Swift source file</comment>",
|
||||||
|
" <sub-class-of type='text/plain'/>",
|
||||||
|
" <glob pattern='*.swift'/>",
|
||||||
|
" </mime-type>",
|
||||||
"</mime-info>"
|
"</mime-info>"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
@@ -4128,7 +4128,8 @@ void TextEditorWidgetPrivate::forceUpdateScrollbarSize()
|
|||||||
// scrollarea which is a private part of the QPlainTextEdit.
|
// scrollarea which is a private part of the QPlainTextEdit.
|
||||||
// During the resizeEvent the plain text edit will resize its scrollbars.
|
// During the resizeEvent the plain text edit will resize its scrollbars.
|
||||||
// The TextEditorWidget will also update its scrollbar overlays.
|
// The TextEditorWidget will also update its scrollbar overlays.
|
||||||
q->resizeEvent(new QResizeEvent(q->size(), q->size()));
|
QResizeEvent event(q->size(), q->size());
|
||||||
|
q->resizeEvent(&event);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<EmbeddedWidgetInterface> TextEditorWidgetPrivate::insertWidget(
|
std::unique_ptr<EmbeddedWidgetInterface> TextEditorWidgetPrivate::insertWidget(
|
||||||
|
@@ -18,7 +18,27 @@ endif()
|
|||||||
# Set a better default value for CMAKE_INSTALL_PREFIX
|
# Set a better default value for CMAKE_INSTALL_PREFIX
|
||||||
#
|
#
|
||||||
function(qtc_modify_default_install_prefix)
|
function(qtc_modify_default_install_prefix)
|
||||||
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
# If at configure time the user didn't specify a CMAKE_INSTALL_PREFIX variable
|
||||||
|
# Modules/CMakeGenericSystem.cmake will set a default value
|
||||||
|
# to CMAKE_INSTALL_PREFIX and set CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT to ON
|
||||||
|
|
||||||
|
# In practice there are cases when CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT is
|
||||||
|
# set to ON and a custom CMAKE_INSTALL_PREFIX is set
|
||||||
|
|
||||||
|
# Do the original CMAKE_INSTALL_PREFIX detection
|
||||||
|
if(CMAKE_HOST_UNIX)
|
||||||
|
set(original_cmake_install_prefix "/usr/local")
|
||||||
|
else()
|
||||||
|
GetDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES)
|
||||||
|
set(original_cmake_install_prefix
|
||||||
|
"${CMAKE_GENERIC_PROGRAM_FILES}/${PROJECT_NAME}")
|
||||||
|
unset(CMAKE_GENERIC_PROGRAM_FILES)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# When the user code didn't modify the CMake set CMAKE_INSTALL_PREFIX
|
||||||
|
# then set the "/tmp" better value for CMAKE_INSTALL_PREFIX
|
||||||
|
if (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND
|
||||||
|
CMAKE_INSTALL_PREFIX STREQUAL "${original_cmake_install_prefix}")
|
||||||
set_property(CACHE CMAKE_INSTALL_PREFIX PROPERTY VALUE "/tmp")
|
set_property(CACHE CMAKE_INSTALL_PREFIX PROPERTY VALUE "/tmp")
|
||||||
endif()
|
endif()
|
||||||
endfunction()
|
endfunction()
|
||||||
|
@@ -1,6 +1,49 @@
|
|||||||
|
# Testing Boot2Qt with the Hardware Pool
|
||||||
|
|
||||||
|
## Installing the Requirements
|
||||||
|
|
||||||
### Testing Boot2Qt setup without hardware ###
|
On macOS, you need to have Docker Desktop installed, including the Docker CLI.
|
||||||
|
|
||||||
|
Install the Boot to Qt Software Stack for the Qt version and device hardware
|
||||||
|
that you want to test with the Qt Online Installer
|
||||||
|
|
||||||
|
On macOS, the installer might complain about not being able to run docker.
|
||||||
|
If that is the case, copy the command line from the dialog into a Terminal
|
||||||
|
with the Docker CLI in PATH and execute it manually. Choose `Ignore` in the
|
||||||
|
installer dialog when ready.
|
||||||
|
|
||||||
|
## Reserving a Device
|
||||||
|
|
||||||
|
Log into https://hw-controller.qt.io/ with your Qt Account. Choose the
|
||||||
|
appropriate device hardware, select the Qt version that matches what you
|
||||||
|
installed with the Qt Online Installer, state a reason for your device use,
|
||||||
|
choose a reservation duration, and select `Reserve`.
|
||||||
|
|
||||||
|
The device is then provisioned and booted. When ready, make note of the device
|
||||||
|
IP address.
|
||||||
|
|
||||||
|
## Configuring Qt Creator
|
||||||
|
|
||||||
|
Start Qt Creator, open the device options, and add a `Boot to Qt Device`.
|
||||||
|
Give it a name, and provide the IP that you noted when reserving the device.
|
||||||
|
The user is `root`.
|
||||||
|
|
||||||
|
Now you can open or create a project, select the corresponding Boot to Qt kit,
|
||||||
|
and build, run & debug.
|
||||||
|
|
||||||
|
While an application is running on the device, you can use a VNC[^vnc] viewer to
|
||||||
|
connect to the apps UI with the device's IP.
|
||||||
|
|
||||||
|
[^vnc]: The creation of the VNC connection depends on setting
|
||||||
|
`QT_QPA_PLATFORM=vnc` in `/etc/default/qt` on the device. That should
|
||||||
|
be enabled by default for devices created with the web interface.
|
||||||
|
|
||||||
|
## Releasing the Device
|
||||||
|
|
||||||
|
When you are finished with testing, release the reservation of the device
|
||||||
|
in the web interface.
|
||||||
|
|
||||||
|
# Testing Boot2Qt setup without hardware ###
|
||||||
|
|
||||||
It is possible to test Boot2Qt without hardware on a plain Linux host system.
|
It is possible to test Boot2Qt without hardware on a plain Linux host system.
|
||||||
|
|
||||||
@@ -8,12 +51,12 @@ Note: You need an ssh-accessible "root" user on the machine, open X access,
|
|||||||
and must be willing to use it. This is not meant for production environments!
|
and must be willing to use it. This is not meant for production environments!
|
||||||
|
|
||||||
|
|
||||||
# Prepare your machine
|
## Prepare your machine
|
||||||
|
|
||||||
ssh-copy-id -i ~/.ssh/id_??????.pub root@localhost
|
ssh-copy-id -i ~/.ssh/id_??????.pub root@localhost
|
||||||
xhost +
|
xhost +
|
||||||
|
|
||||||
# Get appcontroller source and build
|
## Get appcontroller source and build
|
||||||
|
|
||||||
git clone ssh://codereview.qt-project.org/qt-apps/boot2qt-appcontroller
|
git clone ssh://codereview.qt-project.org/qt-apps/boot2qt-appcontroller
|
||||||
|
|
||||||
@@ -21,12 +64,12 @@ cd boot2qt-appcontroller
|
|||||||
/path/to/qt-base/bin/qt-cmake ...
|
/path/to/qt-base/bin/qt-cmake ...
|
||||||
ninja ...
|
ninja ...
|
||||||
|
|
||||||
# Copy binary to "proper" location
|
## Copy binary to "proper" location
|
||||||
|
|
||||||
sudo ln -s `pwd`/appcontroller /usr/bin/appcontroller
|
sudo ln -s `pwd`/appcontroller /usr/bin/appcontroller
|
||||||
|
|
||||||
|
|
||||||
# Set up "Boot to Qt" Device in Creator
|
## Set up "Boot to Qt" Device in Creator
|
||||||
|
|
||||||
Ensure the "Boot to Qt" plugin is enabled
|
Ensure the "Boot to Qt" plugin is enabled
|
||||||
|
|
||||||
@@ -36,7 +79,7 @@ Device Address: 127.0.0.1
|
|||||||
|
|
||||||
Press "Apply"
|
Press "Apply"
|
||||||
|
|
||||||
# Create a suitable Kit
|
## Create a suitable Kit
|
||||||
|
|
||||||
Clone your standard kit for normal local work
|
Clone your standard kit for normal local work
|
||||||
Change the "Run Device" to LocalHostForBoot2Qt
|
Change the "Run Device" to LocalHostForBoot2Qt
|
||||||
@@ -46,11 +89,11 @@ Press "Apply"
|
|||||||
|
|
||||||
The kit will have a warning the "Device type is not supported by Qt version" - that's ok.
|
The kit will have a warning the "Device type is not supported by Qt version" - that's ok.
|
||||||
|
|
||||||
# Create a test project
|
## Create a test project
|
||||||
|
|
||||||
File -> New Project -> Qt Quick Application
|
File -> New Project -> Qt Quick Application
|
||||||
|
|
||||||
# Tweak project settings
|
## Tweak project settings
|
||||||
|
|
||||||
Deployment method: "Deploy to Boot to Qt Target"
|
Deployment method: "Deploy to Boot to Qt Target"
|
||||||
|
|
||||||
@@ -60,12 +103,12 @@ Run Environment: Add LD_LIBRARY_PATH=/path/to/qt-base/lib
|
|||||||
"Executable on Device" may be red at that stage, it shold get black after a successful build
|
"Executable on Device" may be red at that stage, it shold get black after a successful build
|
||||||
|
|
||||||
|
|
||||||
# Build
|
## Build
|
||||||
|
|
||||||
Ctrl-B
|
Ctrl-B
|
||||||
|
|
||||||
|
|
||||||
# Test
|
## Test
|
||||||
|
|
||||||
At that stage, the program should be runnable, debuggable (C++, QML, and combined QML/C++),
|
At that stage, the program should be runnable, debuggable (C++, QML, and combined QML/C++),
|
||||||
and Qml-Profilable
|
and Qml-Profilable
|
||||||
|
57
tests/manual/qnx/README.md
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
### Testing QNX setup without hardware ###
|
||||||
|
|
||||||
|
It is possible to test QNX without hardware on a plain Linux host system.
|
||||||
|
|
||||||
|
Note: This doc assumes you have:
|
||||||
|
1.1 An access to actual qnx target device available via IP address that has Qt installed.
|
||||||
|
1.2 A QNX SDP
|
||||||
|
1.3 A QNX license (placed under: $HOME/.qnx/license/licenses).
|
||||||
|
|
||||||
|
# Installations
|
||||||
|
|
||||||
|
2.1 Unpack qnx710-windows-linux-20240417.tar.xz in ~/qnx folder.
|
||||||
|
2.2 Install 'chrpath' on your linux host.
|
||||||
|
2.3 Install locally Qt for QNX via Qt installer / maintenance tool.
|
||||||
|
Install matching version of the one that is on the remote device.
|
||||||
|
Point Qt installer to ~/qnx/qnx710-windows-linux-20240417/qnx710 for the SDP dir.
|
||||||
|
2.4 Ensure you have cmake 3.21.1 at minimum installed on your host.
|
||||||
|
|
||||||
|
# Creator configuration
|
||||||
|
|
||||||
|
3.1 Ensure your installed Qt for QNX are detected:
|
||||||
|
Preferences | Kits | Qt Versions should list installed versions.
|
||||||
|
Preferences | Kits | Kits should list installed kits (won't be used!).
|
||||||
|
If not, try: Preferences | Kits | Qt Versions | Link with Qt...
|
||||||
|
and point to the installed Qt for QNX master dir.
|
||||||
|
3.2 Create QNX device, pointing to the IP address from 1.1:
|
||||||
|
Preferences | Devices | Add | QNX Device
|
||||||
|
3.3 Run device Test - it should already pass.
|
||||||
|
3.4 Ensure the right "Access via" value for the created QNX device:
|
||||||
|
it should be: Direct (not Local PC).
|
||||||
|
3.4 Add QNX SDK:
|
||||||
|
Preferences | SDKs | QNX | Add...
|
||||||
|
Point into ~/qnx/qnx710-windows-linux-20240417/qnx710/qnxsdp-env.sh
|
||||||
|
This should fill the QNX page with content and you should see 3 new buttons:
|
||||||
|
Create Kit for aarch64le, Create Kit for x86_64 and Create Kit for armle-v7.
|
||||||
|
3.5 Create a kit: press one of the buttons from the previous point.
|
||||||
|
Ensure it matches the architecture of the remote device.
|
||||||
|
You won't see any feedback, but when you switch to the Kits | Kits tab,
|
||||||
|
you should see a new kit created.
|
||||||
|
3.6 It might happen that the created kit doesn't have matching
|
||||||
|
compiler/debugger/Qt version selected. Ensure they have something like:
|
||||||
|
Compiler: QCC for x86_64 - qnx7 (64-bit ARM)
|
||||||
|
Debugger: Debugger for QNX 7.1.0 ARMv8
|
||||||
|
Qt version: Qt 6.8.2 for QNX 7.1 ARMv8
|
||||||
|
|
||||||
|
# Create a qnx project
|
||||||
|
|
||||||
|
4.1 Try creating a new project:
|
||||||
|
File | New Project... | Application (Qt) | Qt Console Application
|
||||||
|
and select the Kit created in point 3.5
|
||||||
|
4.2 Go to project run settings and fill up the "Alternate executable on device:" field.
|
||||||
|
Check "Use this command instead" on the right side first to enable the line.
|
||||||
|
Fill it with "/tmp/bin/[your_target_name]" by typing.
|
||||||
|
This should match the table in the "Deployment" section above.
|
||||||
|
Don't worry that it stays red, indicating it's not an existing path.
|
||||||
|
4.3 The project should build, deploy and run on remote now.
|
||||||
|
|
@@ -437,10 +437,14 @@ def __chooseTargets__(targets, availableTargets=None, additionalFunc=None):
|
|||||||
checkedTargets.add(current)
|
checkedTargets.add(current)
|
||||||
|
|
||||||
# perform additional function on detailed kits view
|
# perform additional function on detailed kits view
|
||||||
if additionalFunc:
|
if additionalFunc and detailsButton.enabled:
|
||||||
ensureChecked(detailsButton)
|
ensureChecked(detailsButton)
|
||||||
additionalFunc()
|
additionalFunc()
|
||||||
ensureChecked(detailsButton, False)
|
if detailsButton.enabled:
|
||||||
|
ensureChecked(detailsButton, False)
|
||||||
|
else:
|
||||||
|
test.verify(not detailsButton.checked,
|
||||||
|
'A disabled "Details" button should not be expanded.')
|
||||||
except LookupError:
|
except LookupError:
|
||||||
if mustCheck:
|
if mustCheck:
|
||||||
test.fail("Failed to check target '%s'." % Targets.getStringForTarget(current))
|
test.fail("Failed to check target '%s'." % Targets.getStringForTarget(current))
|
||||||
|