Merge remote-tracking branch 'origin/15.0'
Change-Id: Ief149bffb53651a539480327552f10f0e20b22a0
26
dist/changelog/changes-15.0.0.md
vendored
@@ -21,18 +21,18 @@ General
|
||||
([Blog Post](https://www.qt.io/blog/review-new-themes-for-qt-creator))
|
||||
* Added `Tools > Scripting > New Script` for creating Lua based Qt Creator
|
||||
scripts
|
||||
([Documentation](https://doc-snapshots.qt.io/qtcreator-15.0/creator-how-to-create-lua-scripts.html))
|
||||
([Documentation](https://doc.qt.io/qtcreator/creator-how-to-create-lua-scripts.html))
|
||||
* Plugins
|
||||
* Added `DocumentationUrl` and new mandatory fields `Id` and `VendorId`
|
||||
to the plugin meta data
|
||||
* Changed the plugin descriptions to Markdown in
|
||||
`Help > About Plugins > Details` and `Extensions` mode
|
||||
* Extended the API available to Lua plugins
|
||||
([Documentation](https://doc-snapshots.qt.io/qtcreator-extending/lua-extensions.html))
|
||||
([Documentation](https://doc.qt.io/qtcreator-extending/lua-extensions.html))
|
||||
* Prebuilt binaries
|
||||
* Added opt-in crash reporting to
|
||||
`Edit > Preferences > Environment > System`
|
||||
([Documentation](https://doc-snapshots.qt.io/qtcreator-15.0/creator-how-to-turn-on-crash-reports.html))
|
||||
([Documentation](https://doc.qt.io/qtcreator/creator-how-to-turn-on-crash-reports.html))
|
||||
|
||||
Editing
|
||||
-------
|
||||
@@ -157,6 +157,7 @@ Projects
|
||||
([QTCREATORBUG-31141](https://bugreports.qt.io/browse/QTCREATORBUG-31141))
|
||||
* Fixed a focus issue when renaming files
|
||||
([QTCREATORBUG-30926](https://bugreports.qt.io/browse/QTCREATORBUG-30926))
|
||||
* Fixed that the `default` session could be renamed and deleted
|
||||
|
||||
### CMake
|
||||
|
||||
@@ -183,6 +184,10 @@ Projects
|
||||
* Added the option of opening `CMakeCache.txt` to open the project
|
||||
([QTCREATORBUG-24439](https://bugreports.qt.io/browse/QTCREATORBUG-24439),
|
||||
[QTCREATORBUG-30507](https://bugreports.qt.io/browse/QTCREATORBUG-30507))
|
||||
* Made `conanfile.py` and `vcpkg.json` visible in the project tree when used
|
||||
([QTCREATORBUG-32041](https://bugreports.qt.io/browse/QTCREATORBUG-32041),
|
||||
[Conan Package Manager](https://doc.qt.io/qtcreator/creator-project-conan.html),
|
||||
[vcpkg Package Manager](https://doc.qt.io/qtcreator/creator-vcpkg.html))
|
||||
* Fixed the option `Build Only the Application to Be Run` for the
|
||||
`Build before deploying` preferences
|
||||
([QTCREATORBUG-31416](https://bugreports.qt.io/browse/QTCREATORBUG-31416))
|
||||
@@ -245,6 +250,12 @@ Analyzer
|
||||
* Added column sorting to the list of issues
|
||||
* Added a `Reload` button
|
||||
|
||||
Terminal
|
||||
--------
|
||||
|
||||
* Fixed the flushing of output after a process terminates
|
||||
([QTCREATORBUG-30733](https://bugreports.qt.io/browse/QTCREATORBUG-30733))
|
||||
|
||||
Version Control Systems
|
||||
-----------------------
|
||||
|
||||
@@ -256,8 +267,10 @@ Version Control Systems
|
||||
|
||||
* Added actions for blame at the revision, blame of the parent, the file
|
||||
from the revision, and the log for the line to the tooltip for `Instant Blame`
|
||||
([Documentation](https://doc-snapshots.qt.io/qtcreator-15.0/creator-vcs-git.html#using-instant-blame))
|
||||
([Documentation](https://doc.qt.io/qtcreator/creator-vcs-git.html#using-instant-blame))
|
||||
* Added visual indications that files are modified to the `Projects` view
|
||||
(when you select
|
||||
`Preferences > Version Control > General > Show VCS file status`)
|
||||
([QTCREATORBUG-8857](https://bugreports.qt.io/browse/QTCREATORBUG-8857))
|
||||
* Added the option to include all local branches in the log
|
||||
* Gerrit
|
||||
@@ -269,6 +282,9 @@ Test Integration
|
||||
|
||||
* Added test duration information for test frameworks that support it
|
||||
([QTCREATORBUG-31242](https://bugreports.qt.io/browse/QTCREATORBUG-31242))
|
||||
* Added support for running auto tests on Android for Qt 6.8.1 and later
|
||||
* Fixed the execution of tests with multiple test classes
|
||||
([QTCREATORBUG-31935](https://bugreports.qt.io/browse/QTCREATORBUG-31935))
|
||||
|
||||
Extension Manager
|
||||
-----------------
|
||||
@@ -317,7 +333,7 @@ Platforms
|
||||
### VxWorks
|
||||
|
||||
* Added support for VxWorks 24.03
|
||||
([Documentation](https://doc-snapshots.qt.io/qtcreator-15.0/creator-how-to-create-vxworks-kits.html))
|
||||
([Documentation](https://doc.qt.io/qtcreator/creator-how-to-create-vxworks-kits.html))
|
||||
|
||||
Credits for these changes go to:
|
||||
--------------------------------
|
||||
|
Before Width: | Height: | Size: 9.9 KiB |
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.4 KiB |
Before Width: | Height: | Size: 5.1 KiB After Width: | Height: | Size: 3.2 KiB |
BIN
doc/qtcreator/images/qtcreator-preferences-compilers-custom.webp
Normal file
After Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 19 KiB |
@@ -165,8 +165,14 @@
|
||||
\section2 Add or remove CMake tools
|
||||
|
||||
To add a path to a CMake executable that \QC does not detect automatically,
|
||||
and to specify settings for it, select \uicontrol Add. To make changes to
|
||||
automatically detected installations, select \uicontrol Clone.
|
||||
and to specify settings for it, select \uicontrol Add.
|
||||
|
||||
To add a CMake executable on a remote Linux device or in Docker, select
|
||||
\uicontrol Remote in the dropdown menu in \uicontrol Browse
|
||||
(\uicontrol Choose on \macos) in the \uicontrol Path field.
|
||||
|
||||
To make changes to automatically detected installations, select
|
||||
\uicontrol Clone.
|
||||
|
||||
To remove the selected CMake executable from the list, select
|
||||
\uicontrol Remove.
|
||||
@@ -186,7 +192,8 @@
|
||||
|
||||
\image qtcreator-kits-cmake.png {Kits preferences}
|
||||
|
||||
\sa {Build with CMake}{How To: Build with CMake},
|
||||
\sa {Build applications on remote Linux devices}, {Build on Docker devices},
|
||||
{Build with CMake}{How To: Build with CMake},
|
||||
{Manage Kits}{How To: Manage Kits}, {CMake}, {Kits}
|
||||
*/
|
||||
|
||||
|
@@ -462,15 +462,19 @@
|
||||
|
||||
\brief Compute values of arithmetic expressions or function calls.
|
||||
|
||||
To compute values of arithmetic expressions or function calls, use
|
||||
To access global data that is not visible in the
|
||||
\l {Local Variables and Function Parameters}{Locals} view or to compute
|
||||
values of arithmetic expressions or function calls, use
|
||||
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
|
||||
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.
|
||||
|
||||
You can also use Expression Evaluators as shortcuts to items that are
|
||||
nested deeply in the locals tree.
|
||||
|
||||
\image qtcreator-debugger-expressions.webp {Expressions view}
|
||||
|
||||
\section1 Adding Expression Evaluators
|
||||
@@ -481,8 +485,8 @@
|
||||
You can also:
|
||||
|
||||
\list
|
||||
\li Double-click in the \uicontrol {Expressions} or
|
||||
\l {Local Variables and Function Parameters}{Locals} view.
|
||||
\li Double-click in the \uicontrol {Expressions} or \uicontrol {Locals}
|
||||
view.
|
||||
\li Select \uicontrol {Add New Expression Evaluator} from the context
|
||||
menu.
|
||||
\endlist
|
||||
@@ -502,21 +506,12 @@
|
||||
|
||||
The set of evaluated expressions is saved in your session.
|
||||
|
||||
\note Expression evaluators are powerful, but slow down debugger operation
|
||||
significantly. Use them sparingly and remove them when you no longer need
|
||||
them.
|
||||
|
||||
Expression evaluators are re-evaluated whenever the current frame changes.
|
||||
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
|
||||
\note Evaluating expressions is slow, so remove expression evaluators after
|
||||
use.
|
||||
|
||||
\section1 JavaScript Expressions
|
||||
|
||||
@@ -526,27 +521,46 @@
|
||||
|
||||
\section1 C and C++ Expressions
|
||||
|
||||
GDB, LLDB and CDB support the evaluation of simple C and C++ expressions.
|
||||
CDB, GDB, and LLDB support the evaluation of simple C and C++ expressions,
|
||||
such as arithmetic expressions made of simple values and pointers.
|
||||
|
||||
Depending on the backend and concrete location, some function calls
|
||||
can be evaluated. CDB is the most limited backend in this respect.
|
||||
|
||||
\section2 Function Calls
|
||||
|
||||
Functions can be called only if they are actually compiled into the debugged
|
||||
executable or a library used by the executable. Inlined
|
||||
functions such as most \c{operator[]} implementations of standard containers
|
||||
are typically \e{not} available.
|
||||
|
||||
\note When an expression has a function call, anything can happen, including
|
||||
corruption of the application's state, or using the application's permission
|
||||
to perform arbitrary actions.
|
||||
|
||||
\section2 Ranged Syntax
|
||||
|
||||
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]}.
|
||||
|
||||
\section2 Compound Variables
|
||||
|
||||
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.
|
||||
|
||||
\section2 Optimized Builds
|
||||
|
||||
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} views to show
|
||||
unexpected data.
|
||||
|
||||
\section2 GCC
|
||||
|
||||
The debug information from GCC does not include enough
|
||||
information about the time when a variable is initialized.
|
||||
Therefore, \QC can not tell whether the contents of a local
|
||||
@@ -555,6 +569,12 @@
|
||||
\uicontrol {not in scope}. Not all uninitialized objects,
|
||||
however, can be recognized as such.
|
||||
|
||||
\section1 Expressions View Actions
|
||||
|
||||
Right-click the \uicontrol Expressions view to select the following actions:
|
||||
|
||||
\include creator-debug-views.qdoc 0
|
||||
|
||||
\sa {Debug}{How To: Debug}, {Debugging}, {Debuggers}, {Debugger}
|
||||
\endif
|
||||
*/
|
||||
|
@@ -199,3 +199,22 @@
|
||||
\sa {Enable and disable plugins}, {Docker}{How To: Develop for Docker},
|
||||
{Manage Kits}{How To: Manage Kits}
|
||||
*/
|
||||
|
||||
/*!
|
||||
\page creator-how-to-build-on-docker.html
|
||||
\previouspage creator-how-tos.html
|
||||
|
||||
\ingroup creator-how-to-docker
|
||||
|
||||
\title Build on Docker devices
|
||||
|
||||
In addition to building applications \e {for} Docker, you can use the
|
||||
toolchain in Docker to build the applications \e {in} Docker.
|
||||
|
||||
\note Enable the Docker plugin to use it.
|
||||
|
||||
\include linux-mobile/creator-how-to-build-on-remote-devices.qdocinc {build on remote devices} {Docker device}
|
||||
|
||||
\sa {Add CMake tools}, {Enable and disable plugins},
|
||||
{Docker}{How To: Develop for Docker}, {Manage Kits}{How To: Manage Kits}
|
||||
*/
|
||||
|
@@ -0,0 +1,60 @@
|
||||
// Copyright (C) 2024 The Qt Company Ltd.
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only
|
||||
|
||||
//! [build on remote devices]
|
||||
|
||||
To build applications on a \1:
|
||||
|
||||
\list 1
|
||||
|
||||
\li Go to \preferences > \uicontrol Devices > \uicontrol Devices, and
|
||||
then select \uicontrol Add to add a \1.
|
||||
|
||||
\li Go to \uicontrol {Preferences} > \uicontrol CMake >
|
||||
\uicontrol Tools, and then select \uicontrol Add.
|
||||
|
||||
\li In \uicontrol Path, select \uicontrol Remote in the dropdown
|
||||
menu in \uicontrol Browse (\uicontrol Choose on \macos) to
|
||||
add the path to the CMake executable on the \1.
|
||||
|
||||
\li Go to \uicontrol {Preferences} > \uicontrol Kits >
|
||||
\uicontrol {Qt Versions}, and then press \key Shift and click the
|
||||
\uicontrol Add button to add the Qt version on the \1.
|
||||
|
||||
\li Go to \uicontrol {Preferences} > \uicontrol Kits >
|
||||
\uicontrol Compilers, and then select the compiler
|
||||
type in \uicontrol Add.
|
||||
|
||||
\li In \uicontrol {C compiler path}, select \uicontrol Remote in the
|
||||
dropdown menu in \uicontrol Browse (\uicontrol Choose on \macos) to
|
||||
add the path to the compiler on the \1.
|
||||
|
||||
\li Go to \uicontrol {Preferences} > \uicontrol Kits
|
||||
to add a kit for building on the device.
|
||||
|
||||
\li Select the device, CMake tool, Qt version, and compiler that you
|
||||
added above.
|
||||
|
||||
\li In \uicontrol {Run device type} and \uicontrol {Build device}, select
|
||||
\uicontrol {\1}.
|
||||
|
||||
\li To specify build settings:
|
||||
|
||||
\list 1
|
||||
|
||||
\li Open a project for an application you want to develop for the
|
||||
device.
|
||||
|
||||
\li Select \uicontrol Projects > \uicontrol {Build & Run} to activate
|
||||
the kit that you specified above.
|
||||
|
||||
\endlist
|
||||
|
||||
\li Select \uicontrol Run to specify run settings. Usually, you can use
|
||||
the default settings.
|
||||
|
||||
When you run the project, \QC deploys the application as specified by
|
||||
the deploy steps.
|
||||
|
||||
\endlist
|
||||
//! [build on remote devices]
|
@@ -75,16 +75,18 @@
|
||||
|
||||
\li Select \uicontrol Add to add the Qt version for embedded Linux.
|
||||
|
||||
\li Go to \preferences > \uicontrol Kits > \uicontrol Compilers.
|
||||
\li Go to \uicontrol {Preferences} > \uicontrol Kits >
|
||||
\uicontrol Compilers.
|
||||
|
||||
\li Select \uicontrol Add to add the compiler for building the
|
||||
applications.
|
||||
|
||||
\li Go to \preferences > \uicontrol Devices > \uicontrol Devices.
|
||||
\li Go to \uicontrol {Preferences} > \uicontrol Devices >
|
||||
\uicontrol Devices.
|
||||
|
||||
\li Select \uicontrol Add to add a remote Linux device.
|
||||
|
||||
\li Go to \preferences > \uicontrol Kits.
|
||||
\li Go to \uicontrol {Preferences} > \uicontrol Kits.
|
||||
|
||||
\li Select \uicontrol Add to add a kit for building for the device.
|
||||
|
||||
@@ -150,56 +152,9 @@
|
||||
In addition to building applications \e {for} a generic Linux device, you can
|
||||
use the toolchain on the device to build the applications \e {on} the device.
|
||||
|
||||
To build applications on a remote Linux device:
|
||||
|
||||
\list 1
|
||||
|
||||
\li Go to \preferences > \uicontrol Devices > \uicontrol Devices, and
|
||||
then select \uicontrol Add to add a remote Linux device.
|
||||
|
||||
\li Go to \preferences > \uicontrol CMake > \uicontrol {CMake Tools}, and
|
||||
then select \uicontrol Add to add the path to the CMake executable
|
||||
on the remote Linux device.
|
||||
|
||||
\li Go to \preferences > \uicontrol Kits > \uicontrol {Qt Versions},
|
||||
and then select \uicontrol Add to add the Qt version on the remote
|
||||
Linux device
|
||||
|
||||
\li Go to \preferences > \uicontrol Kits > \uicontrol Compilers, and
|
||||
then select \uicontrol Add to add the the compiler on the remote
|
||||
Linux device.
|
||||
|
||||
\li Go to \preferences > \uicontrol Kits, and then select \uicontrol Add
|
||||
to add a kit for building for the device.
|
||||
|
||||
\li Select the device, CMake tool, Qt version, and compiler that you
|
||||
added above.
|
||||
|
||||
\li In \uicontrol {Run device type} and \uicontrol {Build device}, select
|
||||
\uicontrol {Remote Linux Device}.
|
||||
|
||||
\li To specify build settings:
|
||||
|
||||
\list 1
|
||||
|
||||
\li Open a project for an application you want to develop for the
|
||||
device.
|
||||
|
||||
\li Select \uicontrol Projects > \uicontrol {Build & Run} to activate
|
||||
the kit that you specified above.
|
||||
|
||||
\endlist
|
||||
|
||||
\li Select \uicontrol Run to specify run settings. Usually, you can use
|
||||
the default settings.
|
||||
|
||||
When you run the project, \QC deploys the application as specified by
|
||||
the deploy steps.
|
||||
|
||||
\endlist
|
||||
\include creator-how-to-build-on-remote-devices.qdocinc {build on remote devices} {remote Linux device}
|
||||
|
||||
\sa {Add CMake tools}, {Remote Linux}{How To: Develop for remote Linux},
|
||||
{Manage Kits}{How To: Manage Kits}, {Developing for Remote Linux Devices},
|
||||
{Remote Linux Deploy Configuration}, {Remote Linux Run Settings}
|
||||
*/
|
||||
|
||||
|
@@ -217,10 +217,16 @@
|
||||
\li In \uicontrol {C compiler path}, enter the path to the
|
||||
directory where the C compiler is located.
|
||||
|
||||
\li In \uicontrol {C++ compiler path}, enter the path
|
||||
to the directory where the C++ compiler is located. Select
|
||||
\uicontrol {Derive from C compiler} to derive the C++ compiler
|
||||
name from the C compiler name.
|
||||
Select \uicontrol Remote in the dropdown menu in \uicontrol Browse
|
||||
(\uicontrol Choose on \macos) to add the path to the compiler on a
|
||||
remote Linux device or in Docker.
|
||||
|
||||
\li In \uicontrol {C++ compiler path}, select
|
||||
\uicontrol {Provide manually} to enter the path
|
||||
to the directory where the C++ compiler is located.
|
||||
|
||||
Select \uicontrol Remote to add the path to the compiler on a
|
||||
remote Linux device or in Docker.
|
||||
|
||||
\li In \uicontrol Initialization, select the
|
||||
\c {vcvarsall.bat} file for setting up the command
|
||||
@@ -274,20 +280,30 @@
|
||||
\uicontrol Custom option. Specify the paths to the directories where the
|
||||
compiler and make tool are located and set preferences for the compiler.
|
||||
|
||||
\image creator-compilers-custom.png
|
||||
\image qtcreator-preferences-compilers-custom.webp {Compilers in Kit Preferences}
|
||||
|
||||
To add other compilers:
|
||||
|
||||
\list 1
|
||||
|
||||
\li Select \preferences > \uicontrol Kits >
|
||||
\uicontrol Compilers > \uicontrol Add > \uicontrol Custom >
|
||||
\uicontrol C or \uicontrol C++.
|
||||
\uicontrol Compilers > \uicontrol Add > \uicontrol Custom.
|
||||
|
||||
\li In \uicontrol Name, enter a name for the compiler.
|
||||
|
||||
\li In \uicontrol {Compiler path}, enter the path to the directory
|
||||
where the compiler is located.
|
||||
\li In \uicontrol {C compiler path}, enter the path to the
|
||||
directory where the C compiler is located.
|
||||
|
||||
Select \uicontrol Remote in the dropdown menu in \uicontrol Browse
|
||||
(\uicontrol Choose on \macos) to add the path to the compiler on a
|
||||
remote Linux device or in Docker.
|
||||
|
||||
\li In \uicontrol {C++ compiler path}, select
|
||||
\uicontrol {Provide manually} to enter the path
|
||||
to the directory where the C++ compiler is located.
|
||||
|
||||
Select \uicontrol Remote to add the path to the compiler on a
|
||||
remote Linux device or in Docker.
|
||||
|
||||
\li In \uicontrol {Make path}, enter the path to the directory where
|
||||
the make tool is located.
|
||||
|
@@ -71,6 +71,9 @@
|
||||
\li Select \preferences > \uicontrol Kits >
|
||||
\uicontrol {Qt Versions} > \uicontrol Add.
|
||||
|
||||
To add a Qt version on a remote Linux device or in Docker,
|
||||
press \key Shift and click \uicontrol Add.
|
||||
|
||||
\li Select the qmake executable for the Qt version to add.
|
||||
|
||||
\li Select the Qt version to view and edit it.
|
||||
|
@@ -154,19 +154,34 @@ def extract_file(archive: Path, target: Path) -> None:
|
||||
|
||||
|
||||
async def download(url: str, target: Path) -> None:
|
||||
print('- Starting download {} -> {}'.format(url, str(target)))
|
||||
print(('''
|
||||
- Starting download {}
|
||||
-> {}''').strip().format(url, str(target)))
|
||||
# Since urlretrieve does blocking I/O it would prevent parallel downloads.
|
||||
# Run in default thread pool.
|
||||
temp_target = target.with_suffix(target.suffix + '-part')
|
||||
loop = asyncio.get_running_loop()
|
||||
await loop.run_in_executor(None, urllib.request.urlretrieve, url, str(target))
|
||||
await loop.run_in_executor(None, urllib.request.urlretrieve, url, str(temp_target))
|
||||
temp_target.rename(target)
|
||||
print('+ finished downloading {}'.format(str(target)))
|
||||
|
||||
|
||||
def download_and_extract(urls: list[str], target: Path, temp: Path) -> None:
|
||||
download_and_extract_tuples([(url, target) for url in urls], temp)
|
||||
def download_and_extract(
|
||||
urls: list[str],
|
||||
target: Path,
|
||||
temp: Path,
|
||||
skip_existing: bool = False
|
||||
) -> None:
|
||||
download_and_extract_tuples([(url, target) for url in urls],
|
||||
temp,
|
||||
skip_existing)
|
||||
|
||||
|
||||
def download_and_extract_tuples(urls_and_targets: list[tuple[str, Path]], temp: Path) -> None:
|
||||
def download_and_extract_tuples(
|
||||
urls_and_targets: list[tuple[str, Path]],
|
||||
temp: Path,
|
||||
skip_existing: bool = False
|
||||
) -> None:
|
||||
temp.mkdir(parents=True, exist_ok=True)
|
||||
target_tuples : list[tuple[Path, Path]] = []
|
||||
# TODO make this work with file URLs, which then aren't downloaded
|
||||
@@ -178,7 +193,10 @@ def download_and_extract_tuples(urls_and_targets: list[tuple[str, Path]], temp:
|
||||
filename = Path(u.path).name
|
||||
target_file = temp / filename
|
||||
target_tuples.append((target_file, target_path))
|
||||
tasks.append(asyncio.create_task(download(url, target_file)))
|
||||
if skip_existing and target_file.exists():
|
||||
print('Skipping download of {}'.format(url))
|
||||
else:
|
||||
tasks.append(asyncio.create_task(download(url, target_file)))
|
||||
for task in tasks:
|
||||
await task
|
||||
asyncio.run(impl())
|
||||
|
@@ -966,7 +966,10 @@ class DumperBase():
|
||||
children = [('error', error)]
|
||||
self.putSpecialValue("notcallable", children=children)
|
||||
else:
|
||||
self.putItem(result)
|
||||
if result is None:
|
||||
self.putSpecialValue("notcallable")
|
||||
else:
|
||||
self.putItem(result)
|
||||
|
||||
def call(self, rettype, value, func, *args):
|
||||
return self.callHelper(rettype, value, func, args)
|
||||
|
@@ -737,11 +737,11 @@ class Dumper(DumperBase):
|
||||
return None if val is None else self.fromNativeValue(val)
|
||||
|
||||
def nativeParseAndEvaluate(self, exp):
|
||||
# FIXME: This breaks symbol discovery
|
||||
if not self.allowInferiorCalls:
|
||||
return None
|
||||
#self.warn('EVALUATE "%s"' % exp)
|
||||
try:
|
||||
if not self.allowInferiorCalls:
|
||||
return None
|
||||
|
||||
val = gdb.parse_and_eval(exp)
|
||||
return val
|
||||
except RuntimeError as error:
|
||||
@@ -1041,6 +1041,10 @@ class Dumper(DumperBase):
|
||||
except:
|
||||
return 0
|
||||
|
||||
def symbolAddress(self, symbolName):
|
||||
res = self.findSymbol(symbolName)
|
||||
return res
|
||||
|
||||
def handleNewObjectFile(self, objfile):
|
||||
name = objfile.filename
|
||||
if self.isWindowsTarget():
|
||||
|
@@ -24586,11 +24586,11 @@ Flags: %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid location for %1.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ungültiger Pfad für %1.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Could not create "%1": %2</source>
|
||||
<translation type="unfinished">Konnte "%1" nicht erzeugen: %2</translation>
|
||||
<translation>Konnte "%1" nicht erstellen: %2</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -27373,7 +27373,7 @@ Sie werden möglicherweise gebeten, den Inhalt dieses Logs mitzuteilen, wenn Sie
|
||||
</message>
|
||||
<message>
|
||||
<source>Load Last Core File</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Letzte Core-Datei laden</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Start and Break on Main</source>
|
||||
@@ -27514,11 +27514,11 @@ Sie werden möglicherweise gebeten, den Inhalt dieses Logs mitzuteilen, wenn Sie
|
||||
</message>
|
||||
<message>
|
||||
<source>coredumpctl did not find any cores created by systemd-coredump.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>coredumpctl hat keine von systemd-coredump erstellten Core-Dateien gefunden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Last Core file "%1"</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Letzte Core-Datei "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Reload debugging helpers skipped as no engine is running.</source>
|
||||
@@ -28292,11 +28292,11 @@ Sie können hier eine andere Verbindung wählen, beispielsweise eine serielle Ve
|
||||
</message>
|
||||
<message>
|
||||
<source>Show warnings for unsupported breakpoints</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Warnungen für nicht unterstützte Haltepunkte anzeigen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Shows a warning on debugger start-up when breakpoints are requested which are not supported by the selected debugger engine.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Zeigt beim Start des Debuggers eine Warnung an, wenn Haltepunkte angefordert werden, die nicht von der gewählten Debugger-Engine unterstützt werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Behavior</source>
|
||||
@@ -28304,15 +28304,15 @@ Sie können hier eine andere Verbindung wählen, beispielsweise eine serielle Ve
|
||||
</message>
|
||||
<message>
|
||||
<source>User Interface</source>
|
||||
<translation type="unfinished">Benutzeroberfläche</translation>
|
||||
<translation>Benutzeroberfläche</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>When Debugging Stops</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Wenn das Debuggen beendet wird</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Allow inferior calls in debugging helper</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Aufrufe von der Ausgabe-Hilfsbibliothek in den zu debuggenden Prozess erlauben</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Extra Debugging Helpers</source>
|
||||
@@ -29224,11 +29224,11 @@ Das Setzen von Haltepunkten anhand von Dateinamen und Zeilennummern könnte fehl
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid debugger command</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ungültiges Debugger-Kommando</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Invalid working directory</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ungültiges Arbeitsverzeichnis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Type of Debugger Backend</source>
|
||||
@@ -30015,7 +30015,7 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed starting Docker container. Exit code: %1, output: %2</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Docker-Container konnte nicht gestartet werden. Rückgabewert: %1, Ausgabe: %2</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Docker Image "%1" (%2)</source>
|
||||
@@ -30123,11 +30123,11 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Failed to inspect image: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Untersuchung des Images fehlgeschlagen: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Could not parse image inspect output: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Die Ausgabe von image inspect konnte nicht ausgewertet werden: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>localSource: No mount point found for %1</source>
|
||||
@@ -30361,7 +30361,7 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Active</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Aktiv</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Restart Now</source>
|
||||
@@ -30381,15 +30381,15 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No details to show</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Keine Details verfügbar</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Select an extension to see more information about it.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Wählen Sie eine Erweiterung aus, um Informationen darüber anzuzeigen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Last Update</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Letzte Aktualisierung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Tags</source>
|
||||
@@ -30433,31 +30433,31 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Inactive</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Inaktiv</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Last updated</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Zuletzt aktualisiert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Name</source>
|
||||
<translation type="unfinished">Name</translation>
|
||||
<translation>Name</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>All</source>
|
||||
<translation type="unfinished">Alle</translation>
|
||||
<translation>Alle</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Extension packs</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Erweiterungspakete</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Individual extensions</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Einzelne Erweiterungen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No extension found!</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Keine Erweiterungen gefunden!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Manage Extensions</source>
|
||||
@@ -30469,11 +30469,11 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Filter by: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Filtern nach: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Sort by: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Sortieren nach: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Install...</source>
|
||||
@@ -30485,43 +30485,43 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Server URL:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Server-URL:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Note</source>
|
||||
<translation type="unfinished">Hinweis</translation>
|
||||
<translation>Hinweis</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>%1 does not check extensions from external vendors for security flaws or malicious intent, so be careful when installing them, as it might leave your computer vulnerable to attacks such as hacking, malware, and phishing.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>%1 überprüft keine Erweiterungen von externen Anbietern auf Sicherheitsprobleme oder böswillige Absichten. Seien Sie deshalb vorsichtig beim Installieren solcher Erweiterungen, da sie Ihren Computer für Angriffe wie Hacking, Schadsoftware und Phishing anfällig machen könnten.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Use External Repository</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Externes Repository benutzen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Install Extension...</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Erweiterung installieren...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Plugin changes will take effect after restart.</source>
|
||||
<translation type="unfinished">Änderungen der Plugins werden nach einem Neustart wirksam.</translation>
|
||||
<translation>Änderungen der Plugins werden nach einem Neustart wirksam.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Browser</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Browser</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Documentation</source>
|
||||
<translation type="unfinished">Dokumentation</translation>
|
||||
<translation>Dokumentation</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>More Information</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Mehr Informationen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>New</source>
|
||||
<translation type="unfinished">Neu</translation>
|
||||
<translation>Neu</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -30536,7 +30536,7 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Vendor Id:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Anbieter-ID:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Vendor:</source>
|
||||
@@ -30544,7 +30544,7 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Documentation:</source>
|
||||
<translation type="unfinished">Dokumentation:</translation>
|
||||
<translation>Dokumentation:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Location:</source>
|
||||
@@ -30580,7 +30580,7 @@ Versuchen Sie, das Projekt neu zu erstellen.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Id:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>ID:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Compatibility version:</source>
|
||||
@@ -30710,11 +30710,11 @@ Grund: %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>No callback set to accept terms and conditions</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Es ist kein Callback für das Annehmen von Bedingungen gesetzt</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>You did not accept the terms and conditions</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Sie haben die Bedingungen nicht angenommen</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Cannot load plugin because dependency failed to load: %1(%2)
|
||||
@@ -30784,11 +30784,11 @@ Grund: %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Plugin id "%1" must be lowercase</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Plugin-ID "%1" muss kleingeschrieben sein</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Terms and conditions: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Bedingungen: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Resolving dependencies failed because state != Read</source>
|
||||
@@ -30864,11 +30864,11 @@ Grund: %3</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>deprecated</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>veraltet</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>experimental</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>experimentell</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Utilities</source>
|
||||
@@ -45873,12 +45873,13 @@ fails because Clang does not understand the target architecture.</source>
|
||||
</message>
|
||||
<message>
|
||||
<source>Qbs Profile Additions</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Ergänzungen zum Qbs-Profil</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Additional module properties to set in the Qbs profile corresponding to this kit.
|
||||
You will rarely need to do this.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Zusätzliche Moduleigenschaften, die im Qbs-Profil des entsprechenden Kits gesetzt werden sollen.
|
||||
Dies ist selten nötig.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Qbs files</source>
|
||||
@@ -46719,7 +46720,7 @@ Weder der Pfad zur Bibliothek noch der Pfad zu den Headerdateien wird zur .pro-D
|
||||
</message>
|
||||
<message>
|
||||
<source>Starting qmake failed with the following error: %1</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Das Starten von qmake ist mit folgendem Fehler fehlgeschlagen: %1</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The build directory should be at the same level as the source directory.</source>
|
||||
@@ -47651,7 +47652,7 @@ Weitere Informationen finden Sie auf der Dokumentationsseite "Checking Code
|
||||
</message>
|
||||
<message>
|
||||
<source>A when condition cannot contain an object.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Eine "when"-Bedingung kann kein Objekt enthalten.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>JavaScript blocks are not supported in a UI file (.ui.qml).</source>
|
||||
@@ -47703,7 +47704,7 @@ Weitere Informationen finden Sie auf der Dokumentationsseite "Checking Code
|
||||
</message>
|
||||
<message>
|
||||
<source>Arbitrary functions and function calls outside of a Connections object are not supported in a UI file (.ui.qml).</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Beliebige Funktionen und Funktionsaufrufe außerhalb des Connections-Objektes werden in einer UI-Datei (.ui.qml) nicht unterstützt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Duplicate import (%1).</source>
|
||||
@@ -48116,7 +48117,7 @@ Sie können eine Annotation "// @uri My.Module.Uri" hinzufügen, um de
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable semantic highlighting (experimental)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Semantische Hervorhebung aktivieren (experimentell)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enabled</source>
|
||||
@@ -48140,11 +48141,11 @@ Sie können eine Annotation "// @uri My.Module.Uri" hinzufügen, um de
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable QML Language Server on this project.</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Aktiviere QML Language Server für dieses Projekt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Qt Quick</source>
|
||||
<translation type="unfinished">Qt Quick</translation>
|
||||
<translation>Qt Quick</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open .ui.qml files with:</source>
|
||||
@@ -49438,7 +49439,7 @@ Sind Sie sicher?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Enable CMake Generator</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>CMake-Generator aktivieren</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
@@ -49884,11 +49885,11 @@ wirklich entfernen?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Error</source>
|
||||
<translation type="unfinished">Fehler</translation>
|
||||
<translation>Fehler</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Warning</source>
|
||||
<translation type="unfinished">Warnung</translation>
|
||||
<translation>Warnung</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Not all possible target environments can be supported due to missing compilers.</source>
|
||||
@@ -50895,7 +50896,7 @@ Der Steuerprozess konnte nicht gestartet werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>The process crashed.</source>
|
||||
<translation type="unfinished">Der Prozess ist abgestürzt.</translation>
|
||||
<translation>Der Prozess ist abgestürzt.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>"%1" failed to start: %2</source>
|
||||
@@ -53104,43 +53105,43 @@ Die Datei "%1" konnte nicht geöffnet werden.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Diff Project Directory</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Diff des Projektverzeichnisses</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Diff Directory of Project "%1"</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Diff des Projektverzeichnisses von "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Project Directory Status</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Status des Projektverzeichnisses</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Status of Directory of Project "%1"</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Status des Projektverzeichnisses von "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Log Project Directory</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Log des Projektverzeichnisses</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Log Directory of Project "%1"</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Log des Projektverzeichnisses von "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Update Project Directory</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Projektverzeichnis aktualisieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Update Directory of Project "%1"</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Projektverzeichnis von "%1" aktualisieren</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Commit Project Directory</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Commit des Projektverzeichnisses</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Commit Directory of Project "%1"</source>
|
||||
<translation type="unfinished"></translation>
|
||||
<translation>Commit des Projektverzeichnisses von "%1"</translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Describe...</source>
|
||||
|
@@ -48,8 +48,9 @@
|
||||
|
||||
#ifdef ENABLE_CRASHPAD
|
||||
#define NOMINMAX
|
||||
#include "client/crashpad_client.h"
|
||||
#include "client/crash_report_database.h"
|
||||
#include "client/crashpad_client.h"
|
||||
#include "client/crashpad_info.h"
|
||||
#include "client/settings.h"
|
||||
#endif
|
||||
|
||||
@@ -443,6 +444,12 @@ void startCrashpad(const AppInfo &appInfo, bool crashReportingEnabled)
|
||||
annotations["sha1"] = Core::Constants::IDE_REVISION_STR;
|
||||
#endif
|
||||
|
||||
if (HostOsInfo::isWindowsHost()) {
|
||||
// reduces the size of crash reports, which can be large on Windows
|
||||
CrashpadInfo::GetCrashpadInfo()
|
||||
->set_gather_indirectly_referenced_memory(crashpad::TriState::kEnabled, 0);
|
||||
}
|
||||
|
||||
// Optional arguments to pass to the handler
|
||||
std::vector<std::string> arguments;
|
||||
arguments.push_back("--no-rate-limit");
|
||||
|
@@ -67,7 +67,8 @@ public:
|
||||
int findInResultInsertPosition(const QString &key) const
|
||||
{
|
||||
const auto compare = [](int compareResult) { return compareResult > 0; };
|
||||
return findIndex(m_resultNameValueDictionary, key, compare);
|
||||
const int pos = findIndex(m_resultNameValueDictionary, key, compare);
|
||||
return pos >= 0 ? pos : m_resultNameValueDictionary.size();
|
||||
}
|
||||
|
||||
int findInResult(const QString &key) const
|
||||
@@ -291,6 +292,7 @@ QModelIndex EnvironmentModel::addVariable(const EnvironmentItem &item)
|
||||
} else {
|
||||
// We add something that is not in the base dictionary
|
||||
// Insert a new line!
|
||||
QTC_ASSERT(insertPos >= 0, insertPos = d->m_resultNameValueDictionary.size());
|
||||
beginInsertRows(QModelIndex(), insertPos, insertPos);
|
||||
Q_ASSERT(changePos < 0);
|
||||
d->m_items.append(item);
|
||||
|
@@ -110,7 +110,7 @@ enum class Base { Dec, Hex };
|
||||
|
||||
static bool isHex(const QChar &c)
|
||||
{
|
||||
return (c >= 'a' && c <= 'f') || (c >= 'A' && c < 'F');
|
||||
return (c >= 'a' && c <= 'f') || (c >= 'A' && c <= 'F');
|
||||
}
|
||||
|
||||
static bool isDigit(const QChar &c, Base base)
|
||||
|
@@ -520,7 +520,7 @@ void IssuesWidget::updateTable()
|
||||
for (const Dto::ColumnInfoDto &column : m_currentTableInfo->columns) {
|
||||
columnHeaders << column.header.value_or(column.key);
|
||||
if (!column.showByDefault)
|
||||
hiddenColumns << column.key;
|
||||
hiddenColumns << columnHeaders.last();
|
||||
IssueHeaderView::ColumnInfo info;
|
||||
info.key = column.key;
|
||||
info.sortable = column.canSort;
|
||||
|
@@ -1014,7 +1014,7 @@ void AxivionPluginPrivate::enableInlineIssues(bool enable)
|
||||
return;
|
||||
m_inlineIssuesEnabled = enable;
|
||||
|
||||
if (enable)
|
||||
if (enable && m_dashboardServerId.isValid())
|
||||
handleOpenedDocs();
|
||||
else
|
||||
clearAllMarks();
|
||||
@@ -1091,6 +1091,8 @@ void switchActiveDashboardId(const Id &toDashboardId)
|
||||
dd->m_serverAccess = ServerAccess::Unknown;
|
||||
dd->m_apiToken.reset();
|
||||
dd->m_dashboardInfo.reset();
|
||||
dd->m_currentProjectInfo.reset();
|
||||
updatePerspectiveToolbar();
|
||||
}
|
||||
|
||||
const std::optional<DashboardInfo> currentDashboardInfo()
|
||||
|
@@ -4,7 +4,7 @@
|
||||
"Name" : "Copilot",
|
||||
"Version" : "${IDE_VERSION}",
|
||||
"CompatVersion" : "${IDE_VERSION_COMPAT}",
|
||||
"DisabledByDefault" : true,
|
||||
"Experimental" : true,
|
||||
"VendorId" : "theqtcompany",
|
||||
"Vendor" : "The Qt Company Ltd",
|
||||
"Copyright" : "${IDE_COPYRIGHT}",
|
||||
|
@@ -1,3 +1,5 @@
|
||||
As with most solutions that use Generative AI, the Github Copilot extension is considered experimental.
|
||||
|
||||

|
||||
|
||||
*Copilot in action*
|
||||
|
@@ -50,11 +50,6 @@ SessionView::SessionView(QWidget *parent)
|
||||
// Ensure that the full session name is visible.
|
||||
header()->setSectionResizeMode(0, QHeaderView::ResizeToContents);
|
||||
|
||||
QItemSelection firstRow(m_sessionModel.index(0,0), m_sessionModel.index(
|
||||
0, m_sessionModel.columnCount() - 1));
|
||||
selectionModel()->select(firstRow, QItemSelectionModel::QItemSelectionModel::
|
||||
SelectCurrent);
|
||||
|
||||
connect(this, &Utils::TreeView::activated, this, [this](const QModelIndex &index){
|
||||
emit sessionActivated(m_sessionModel.sessionAt(index.row()));
|
||||
});
|
||||
|
@@ -236,7 +236,7 @@ void BranchView::slotCustomContextMenu(const QPoint &point)
|
||||
|
||||
SetInContext block(m_blockRefresh);
|
||||
QMenu contextMenu;
|
||||
if (isLocal)
|
||||
if (isLocal || hasActions)
|
||||
contextMenu.addAction(Tr::tr("&Add..."), this, &BranchView::add);
|
||||
|
||||
const std::optional<QString> remote = m_model->remoteName(index);
|
||||
|
@@ -2768,12 +2768,12 @@ bool GitClient::getCommitData(const FilePath &workingDirectory,
|
||||
// R old -> new
|
||||
// D deleted_file
|
||||
// ?? untracked_file
|
||||
if (status != StatusUnchanged) {
|
||||
if (!commitData.parseFilesFromStatus(output)) {
|
||||
*errorMessage = msgParseFilesFailed();
|
||||
return false;
|
||||
}
|
||||
if (!commitData.parseFilesFromStatus(output)) {
|
||||
*errorMessage = msgParseFilesFailed();
|
||||
return false;
|
||||
}
|
||||
|
||||
if (status != StatusUnchanged) {
|
||||
// Filter out untracked files that are not part of the project
|
||||
QStringList untrackedFiles = commitData.filterFiles(UntrackedFile);
|
||||
|
||||
|
@@ -382,7 +382,7 @@ void InstantBlame::perform()
|
||||
const Utils::FilePath workingDirectory = Utils::FilePath::fromString(fi.path());
|
||||
const QString lineString = QString("%1,%1").arg(line);
|
||||
const auto lineDiffHandler = [this](const CommandResult &result) {
|
||||
const QString error = result.cleanedStdErr();
|
||||
const QString error = result.cleanedStdErr().trimmed();
|
||||
if (!error.isEmpty()) {
|
||||
qCWarning(log) << error;
|
||||
}
|
||||
|
@@ -51,6 +51,11 @@
|
||||
" <glob pattern='*.mkd'/>",
|
||||
" <glob pattern='*.markdown'/>",
|
||||
" </mime-type>",
|
||||
" <mime-type type='text/rust'>",
|
||||
" <comment>Rust souce file</comment>",
|
||||
" <sub-class-of type='text/plain'/>",
|
||||
" <glob pattern='*.rs'/>",
|
||||
" </mime-type>",
|
||||
"</mime-info>"
|
||||
]
|
||||
}
|
||||
|
@@ -280,7 +280,7 @@ bool RefactoringFile::apply()
|
||||
|
||||
fileChanged();
|
||||
if (withUnmodifiedEditor && EditorManager::autoSaveAfterRefactoring())
|
||||
m_editor->textDocument()->save(m_filePath, false);
|
||||
DocumentManager::saveDocument(m_editor->textDocument(), m_filePath);
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -343,6 +343,14 @@ protected:
|
||||
void wheelEvent(QWheelEvent *event) override {
|
||||
QCoreApplication::sendEvent(textEdit->viewport(), event);
|
||||
}
|
||||
bool event(QEvent *event) override
|
||||
{
|
||||
if (event->type() == QEvent::ToolTip) {
|
||||
textEdit->extraAreaToolTipEvent(static_cast<QHelpEvent *>(event));
|
||||
return true;
|
||||
}
|
||||
return QWidget::event(event);
|
||||
}
|
||||
|
||||
private:
|
||||
TextEditorWidget *textEdit;
|
||||
@@ -7062,8 +7070,10 @@ void TextEditorWidget::mousePressEvent(QMouseEvent *e)
|
||||
|
||||
RefactorMarker refactorMarker = d->m_refactorOverlay->markerAt(e->pos());
|
||||
if (refactorMarker.isValid()) {
|
||||
if (refactorMarker.callback)
|
||||
if (refactorMarker.callback) {
|
||||
refactorMarker.callback(this);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
d->m_linkPressed = d->isMouseNavigationEvent(e);
|
||||
}
|
||||
@@ -7370,6 +7380,25 @@ void TextEditorWidget::updateFoldingHighlight(const QTextCursor &cursor)
|
||||
d->m_highlightBlocksTimer.start(d->m_highlightBlocksInfo.isEmpty() ? 120 : 0);
|
||||
}
|
||||
|
||||
void TextEditorWidget::extraAreaToolTipEvent(QHelpEvent *e)
|
||||
{
|
||||
QTextCursor cursor = cursorForPosition(QPoint(0, e->pos().y()));
|
||||
|
||||
int markWidth = 0;
|
||||
extraAreaWidth(&markWidth);
|
||||
const bool inMarkArea = e->pos().x() <= markWidth && e->pos().x() >= 0;
|
||||
if (!inMarkArea)
|
||||
return;
|
||||
int line = cursor.blockNumber() + 1;
|
||||
if (d->extraAreaPreviousMarkTooltipRequestedLine != line) {
|
||||
if (auto data = static_cast<TextBlockUserData *>(cursor.block().userData())) {
|
||||
if (!data->marks().isEmpty())
|
||||
d->showTextMarksToolTip(mapToGlobal(e->pos()), data->marks());
|
||||
}
|
||||
}
|
||||
d->extraAreaPreviousMarkTooltipRequestedLine = line;
|
||||
}
|
||||
|
||||
void TextEditorWidget::extraAreaMouseEvent(QMouseEvent *e)
|
||||
{
|
||||
QTextCursor cursor = cursorForPosition(QPoint(0, e->pos().y()));
|
||||
@@ -7386,16 +7415,14 @@ void TextEditorWidget::extraAreaMouseEvent(QMouseEvent *e)
|
||||
// Set whether the mouse cursor is a hand or normal arrow
|
||||
if (e->type() == QEvent::MouseMove) {
|
||||
if (inMarkArea) {
|
||||
// tool tips are shown in extraAreaToolTipEvent
|
||||
int line = cursor.blockNumber() + 1;
|
||||
if (d->extraAreaPreviousMarkTooltipRequestedLine != line) {
|
||||
if (auto data = static_cast<TextBlockUserData *>(cursor.block().userData())) {
|
||||
if (data->marks().isEmpty())
|
||||
ToolTip::hide();
|
||||
else
|
||||
d->showTextMarksToolTip(mapToGlobal(e->pos()), data->marks());
|
||||
}
|
||||
}
|
||||
d->extraAreaPreviousMarkTooltipRequestedLine = line;
|
||||
}
|
||||
|
||||
if (!d->m_markDragging && e->buttons() & Qt::LeftButton && !d->m_markDragStart.isNull()) {
|
||||
|
@@ -312,6 +312,7 @@ public:
|
||||
virtual void extraAreaLeaveEvent(QEvent *);
|
||||
virtual void extraAreaContextMenuEvent(QContextMenuEvent *);
|
||||
virtual void extraAreaMouseEvent(QMouseEvent *);
|
||||
virtual void extraAreaToolTipEvent(QHelpEvent *e);
|
||||
void updateFoldingHighlight(const QPoint &pos);
|
||||
void updateFoldingHighlight(const QTextCursor &cursor);
|
||||
|
||||
|
@@ -128,6 +128,7 @@ void VcsCommandPrivate::installStdCallbacks(Process *process)
|
||||
|| m_progressParser || !(m_flags & RunFlags::SuppressStdErr))) {
|
||||
process->setTextChannelMode(Channel::Error, TextChannelMode::MultiLine);
|
||||
connect(process, &Process::textOnStandardError, this, [this](const QString &text) {
|
||||
VcsOutputWindow::setRepository(m_defaultWorkingDirectory);
|
||||
if (!(m_flags & RunFlags::SuppressStdErr))
|
||||
VcsOutputWindow::appendError(text);
|
||||
if (m_flags & RunFlags::ProgressiveOutput)
|
||||
@@ -138,6 +139,7 @@ void VcsCommandPrivate::installStdCallbacks(Process *process)
|
||||
|| m_flags & RunFlags::ShowStdOut) {
|
||||
process->setTextChannelMode(Channel::Output, TextChannelMode::MultiLine);
|
||||
connect(process, &Process::textOnStandardOutput, this, [this](const QString &text) {
|
||||
VcsOutputWindow::setRepository(m_defaultWorkingDirectory);
|
||||
if (m_flags & RunFlags::ShowStdOut)
|
||||
VcsOutputWindow::append(text);
|
||||
if (m_flags & RunFlags::ProgressiveOutput)
|
||||
@@ -305,6 +307,7 @@ CommandResult VcsCommand::runBlockingHelper(const CommandLine &command, int time
|
||||
return {};
|
||||
|
||||
const Internal::VcsCommandPrivate::Job job{command, timeoutS, d->m_defaultWorkingDirectory};
|
||||
VcsOutputWindow::setRepository(d->m_defaultWorkingDirectory);
|
||||
d->setupProcess(&process, job);
|
||||
|
||||
const EventLoopMode eventLoopMode = d->eventLoopMode();
|
||||
|
@@ -63,6 +63,11 @@ macro(qtc_auto_setup_conan)
|
||||
option(QT_CREATOR_SKIP_CONAN_SETUP "Skip Qt Creator's conan package manager auto-setup" OFF)
|
||||
set(QT_CREATOR_CONAN_BUILD_POLICY "missing" CACHE STRING "Qt Creator's conan package manager auto-setup build policy. This is used for the BUILD property of cmake_conan_run")
|
||||
|
||||
set_property(
|
||||
DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
APPEND
|
||||
PROPERTY CMAKE_CONFIGURE_DEPENDS "${conanfile_txt}")
|
||||
|
||||
find_program(conan_program conan)
|
||||
if (NOT conan_program)
|
||||
message(WARNING "Qt Creator: conan executable not found. "
|
||||
@@ -206,6 +211,11 @@ macro(qtc_auto_setup_vcpkg)
|
||||
if (EXISTS "${CMAKE_SOURCE_DIR}/vcpkg.json" AND NOT QT_CREATOR_SKIP_VCPKG_SETUP)
|
||||
option(QT_CREATOR_SKIP_VCPKG_SETUP "Skip Qt Creator's vcpkg package manager auto-setup" OFF)
|
||||
|
||||
set_property(
|
||||
DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
APPEND
|
||||
PROPERTY CMAKE_CONFIGURE_DEPENDS "${CMAKE_SOURCE_DIR}/vcpkg.json")
|
||||
|
||||
find_program(vcpkg_program vcpkg
|
||||
PATHS $ENV{VCPKG_ROOT} ${CMAKE_SOURCE_DIR}/vcpkg ${CMAKE_SOURCE_DIR}/3rdparty/vcpkg
|
||||
NO_DEFAULT_PATH
|
||||
|
@@ -106,6 +106,7 @@ void tst_StringUtils::testParseUsedPortFromNetstatOutput_data()
|
||||
// Linux
|
||||
QTest::newRow("Linux1") << "sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt ..." << -1;
|
||||
QTest::newRow("Linux2") << "0: 00000000:2805 00000000:0000 0A 00000000:00000000 00:00000000 00000000 ..." << 10245;
|
||||
QTest::newRow("Linux3") << " 1: 0100007F:193F 00000000:0000 0A 00000000:00000000 00:00000000 00000000 ..." << 6463;
|
||||
|
||||
// Mac
|
||||
QTest::newRow("Mac1") << "Active Internet connections (including servers)" << -1;
|
||||
|