Merge remote-tracking branch 'origin/6.0' into qds-2.3
Change-Id: I92481f36fb28a801ae3bbbf68733e8410d212ee5
97
.github/workflows/build_cmake.yml
vendored
@@ -1,6 +1,10 @@
|
|||||||
name: CMake Build Matrix
|
name: CMake Build Matrix
|
||||||
|
|
||||||
on: [push, pull_request]
|
on:
|
||||||
|
push:
|
||||||
|
paths-ignore:
|
||||||
|
- 'dist/**'
|
||||||
|
- 'doc/**'
|
||||||
|
|
||||||
env:
|
env:
|
||||||
QT_VERSION: 6.2.1
|
QT_VERSION: 6.2.1
|
||||||
@@ -350,34 +354,58 @@ jobs:
|
|||||||
message("::set-output name=elfutils_dir::${elfutils_dir}")
|
message("::set-output name=elfutils_dir::${elfutils_dir}")
|
||||||
|
|
||||||
- name: Download ccache
|
- name: Download ccache
|
||||||
id: ccache
|
|
||||||
shell: cmake -P {0}
|
shell: cmake -P {0}
|
||||||
run: |
|
run: |
|
||||||
set(ccache_url "https://github.com/cristianadam/ccache/releases/download/v$ENV{CCACHE_VERSION}/${{ runner.os }}.tar.xz")
|
set(ccache_url "https://github.com/cristianadam/ccache/releases/download/v$ENV{CCACHE_VERSION}/${{ runner.os }}.tar.xz")
|
||||||
file(DOWNLOAD "${ccache_url}" ./ccache.tar.xz SHOW_PROGRESS)
|
file(DOWNLOAD "${ccache_url}" ./ccache.tar.xz SHOW_PROGRESS)
|
||||||
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvf ./ccache.tar.xz)
|
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvf ./ccache.tar.xz)
|
||||||
|
|
||||||
- name: Prepare ccache timestamp
|
- name: Prepare ccache archive name
|
||||||
id: ccache_cache_timestamp
|
id: ccache
|
||||||
shell: cmake -P {0}
|
shell: cmake -P {0}
|
||||||
run: |
|
run: |
|
||||||
string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
|
|
||||||
message("::set-output name=timestamp::${current_date}")
|
|
||||||
|
|
||||||
file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}" github_workspace)
|
file(TO_CMAKE_PATH "$ENV{GITHUB_WORKSPACE}" github_workspace)
|
||||||
include(${github_workspace}/cmake/QtCreatorIDEBranding.cmake)
|
include(${github_workspace}/cmake/QtCreatorIDEBranding.cmake)
|
||||||
string(REPLACE "." ";" IDE_VERSION_LIST ${IDE_VERSION_DISPLAY})
|
string(REPLACE "." ";" IDE_VERSION_LIST ${IDE_VERSION_DISPLAY})
|
||||||
list(GET IDE_VERSION_LIST 0 IDE_VERSION_MAJOR)
|
list(GET IDE_VERSION_LIST 0 IDE_VERSION_MAJOR)
|
||||||
message("::set-output name=ide_major_version::${IDE_VERSION_MAJOR}")
|
message("::set-output name=archive_name::ccache-${{ matrix.config.os }}-${{ matrix.config.cc }}-qtc${IDE_VERSION_MAJOR}")
|
||||||
|
|
||||||
|
- name: Download ccache archive
|
||||||
|
shell: cmake -P {0}
|
||||||
|
run: |
|
||||||
|
file(WRITE $ENV{GITHUB_WORKSPACE}/netrc.txt
|
||||||
|
"default login runneradmin password ${{ secrets.GITHUB_TOKEN }}")
|
||||||
|
|
||||||
- name: ccache cache files
|
foreach(page_id RANGE 1 10)
|
||||||
uses: actions/cache@v1
|
file(
|
||||||
with:
|
DOWNLOAD "https://api.github.com/repos/${{ github.repository }}/actions/artifacts?per_page=100&page=${page_id}"
|
||||||
path: .ccache
|
HTTPHEADER "Accept: application/vnd.github.v3+json"
|
||||||
key: ${{ matrix.config.name }}-ccache-${{ steps.ccache_cache_timestamp.outputs.ide_major_version }}-${{ steps.ccache_cache_timestamp.outputs.timestamp }}
|
NETRC_FILE "$ENV{GITHUB_WORKSPACE}/netrc.txt"
|
||||||
restore-keys: |
|
NETRC REQUIRED
|
||||||
${{ matrix.config.name }}-ccache-${{ steps.ccache_cache_timestamp.outputs.ide_major_version }}
|
SHOW_PROGRESS
|
||||||
|
artifacts.json)
|
||||||
|
file(READ artifacts.json artifacts_json)
|
||||||
|
|
||||||
|
string(JSON artifacts_length LENGTH "${artifacts_json}" "artifacts")
|
||||||
|
math(EXPR artifacts_length "${artifacts_length} - 1")
|
||||||
|
foreach(idx RANGE 0 ${artifacts_length})
|
||||||
|
string(JSON artifact_js GET "${artifacts_json}" "artifacts" ${idx})
|
||||||
|
string(JSON name GET "${artifact_js}" "name")
|
||||||
|
if ("${name}" STREQUAL "${{ steps.ccache.outputs.archive_name }}")
|
||||||
|
string(JSON download_url GET "${artifact_js}" "archive_download_url")
|
||||||
|
file(DOWNLOAD "${download_url}"
|
||||||
|
"${{ steps.ccache.outputs.archive_name }}.zip"
|
||||||
|
NETRC_FILE "$ENV{GITHUB_WORKSPACE}/netrc.txt"
|
||||||
|
NETRC REQUIRED
|
||||||
|
SHOW_PROGRESS)
|
||||||
|
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xvf "${{ steps.ccache.outputs.archive_name }}.zip")
|
||||||
|
file(MAKE_DIRECTORY .ccache)
|
||||||
|
execute_process(COMMAND ${CMAKE_COMMAND} -E tar xf "../${{ steps.ccache.outputs.archive_name }}.tar" WORKING_DIRECTORY .ccache)
|
||||||
|
|
||||||
|
return()
|
||||||
|
endif()
|
||||||
|
endforeach()
|
||||||
|
endforeach()
|
||||||
|
|
||||||
- name: Install system libs
|
- name: Install system libs
|
||||||
shell: cmake -P {0}
|
shell: cmake -P {0}
|
||||||
@@ -455,8 +483,10 @@ jobs:
|
|||||||
string(REPLACE "x86" "x64" Python3_EXECUTABLE "${Python3_EXECUTABLE}")
|
string(REPLACE "x86" "x64" Python3_EXECUTABLE "${Python3_EXECUTABLE}")
|
||||||
|
|
||||||
set(WITH_TESTS "--with-tests")
|
set(WITH_TESTS "--with-tests")
|
||||||
|
set(NO_DMG "--no-dmg")
|
||||||
if (${{github.ref}} MATCHES "tags/v")
|
if (${{github.ref}} MATCHES "tags/v")
|
||||||
unset(WITH_TESTS)
|
unset(WITH_TESTS)
|
||||||
|
unset(NO_DMG)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
execute_process(
|
execute_process(
|
||||||
@@ -472,6 +502,7 @@ jobs:
|
|||||||
${WITH_TESTS}
|
${WITH_TESTS}
|
||||||
${CDB_OPTION}
|
${CDB_OPTION}
|
||||||
${ELFUTILS_OPTION}
|
${ELFUTILS_OPTION}
|
||||||
|
${NO_DMG}
|
||||||
--add-config=-DCMAKE_C_COMPILER_LAUNCHER=ccache
|
--add-config=-DCMAKE_C_COMPILER_LAUNCHER=ccache
|
||||||
--add-config=-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
|
--add-config=-DCMAKE_CXX_COMPILER_LAUNCHER=ccache
|
||||||
--add-config=-DIDE_REVISION_URL=https://github.com/$ENV{GITHUB_REPOSITORY}/commits/$ENV{GITHUB_SHA}
|
--add-config=-DIDE_REVISION_URL=https://github.com/$ENV{GITHUB_REPOSITORY}/commits/$ENV{GITHUB_SHA}
|
||||||
@@ -534,38 +565,48 @@ jobs:
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
- name: Upload
|
- name: Upload
|
||||||
uses: actions/upload-artifact@v1
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
path: build/qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
path: build/qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||||
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||||
|
|
||||||
- name: Upload Devel
|
- name: Upload Devel
|
||||||
uses: actions/upload-artifact@v1
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
path: build/qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z
|
path: build/qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z
|
||||||
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z
|
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z
|
||||||
|
|
||||||
- name: Upload wininterrupt
|
- name: Upload wininterrupt
|
||||||
if: runner.os == 'Windows'
|
if: runner.os == 'Windows'
|
||||||
uses: actions/upload-artifact@v1
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
path: build/wininterrupt-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
path: build/wininterrupt-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||||
name: wininterrupt-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
name: wininterrupt-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||||
|
|
||||||
- name: Upload qtcreatorcdbext
|
- name: Upload qtcreatorcdbext
|
||||||
if: runner.os == 'Windows' && matrix.config.is_msvc
|
if: runner.os == 'Windows' && matrix.config.is_msvc
|
||||||
uses: actions/upload-artifact@v1
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
path: build/qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
path: build/qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||||
name: qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
name: qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||||
|
|
||||||
- name: Upload disk image
|
- name: Upload disk image
|
||||||
if: runner.os == 'macOS'
|
if: runner.os == 'macOS' && contains(github.ref, 'tags/v')
|
||||||
uses: actions/upload-artifact@v1
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
path: build/qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg
|
path: build/qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg
|
||||||
name: qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg
|
name: qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg
|
||||||
|
|
||||||
|
- name: Create ccache archive
|
||||||
|
working-directory: .ccache
|
||||||
|
run: cmake -E tar cf ../${{ steps.ccache.outputs.archive_name }}.tar .
|
||||||
|
|
||||||
|
- name: Upload ccache archive
|
||||||
|
uses: actions/upload-artifact@v2
|
||||||
|
with:
|
||||||
|
path: ./${{ steps.ccache.outputs.archive_name }}.tar
|
||||||
|
name: ${{ steps.ccache.outputs.archive_name }}
|
||||||
|
|
||||||
release:
|
release:
|
||||||
if: contains(github.ref, 'tags/v')
|
if: contains(github.ref, 'tags/v')
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -587,7 +628,7 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
echo "${{ steps.create_release.outputs.upload_url }}" > ./upload_url
|
echo "${{ steps.create_release.outputs.upload_url }}" > ./upload_url
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v1
|
- uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
path: ./upload_url
|
path: ./upload_url
|
||||||
name: upload_url
|
name: upload_url
|
||||||
@@ -620,40 +661,40 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Download artifact
|
- name: Download artifact
|
||||||
uses: actions/download-artifact@v1
|
uses: actions/download-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||||
path: ./
|
path: ./
|
||||||
|
|
||||||
- name: Download Devel artifact
|
- name: Download Devel artifact
|
||||||
uses: actions/download-artifact@v1
|
uses: actions/download-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z
|
name: qtcreator-${{ matrix.config.artifact }}-${{ github.run_id }}_dev.7z
|
||||||
path: ./
|
path: ./
|
||||||
|
|
||||||
- name: Download wininterrupt artifact
|
- name: Download wininterrupt artifact
|
||||||
if: contains(matrix.config.artifact, 'Windows')
|
if: contains(matrix.config.artifact, 'Windows')
|
||||||
uses: actions/download-artifact@v1
|
uses: actions/download-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: wininterrupt-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
name: wininterrupt-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||||
path: ./
|
path: ./
|
||||||
|
|
||||||
- name: Download qtcreatorcdbext artifact
|
- name: Download qtcreatorcdbext artifact
|
||||||
if: matrix.config.artifact == 'Windows-MSVC'
|
if: matrix.config.artifact == 'Windows-MSVC'
|
||||||
uses: actions/upload-artifact@v1
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
name: qtcreatorcdbext-${{ matrix.config.artifact }}-${{ github.run_id }}.7z
|
||||||
path: ./
|
path: ./
|
||||||
|
|
||||||
- name: Download disk image artifact
|
- name: Download disk image artifact
|
||||||
if: matrix.config.artifact == 'macOS'
|
if: matrix.config.artifact == 'macOS'
|
||||||
uses: actions/upload-artifact@v1
|
uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg
|
name: qt-creator-${{ matrix.config.artifact }}-${{ github.run_id }}.dmg
|
||||||
path: ./
|
path: ./
|
||||||
|
|
||||||
- name: Download URL
|
- name: Download URL
|
||||||
uses: actions/download-artifact@v1
|
uses: actions/download-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: upload_url
|
name: upload_url
|
||||||
path: ./
|
path: ./
|
||||||
|
19
dist/changes-6.0.0.md
vendored
@@ -47,6 +47,16 @@ Editing
|
|||||||
* Added option for `Insert header files on completion`
|
* Added option for `Insert header files on completion`
|
||||||
* Improved location of generated `compile_commands.json` (QTCREATORBUG-26431)
|
* Improved location of generated `compile_commands.json` (QTCREATORBUG-26431)
|
||||||
* Fixed missing reparsing after refactorings (QTCREATORBUG-26523)
|
* Fixed missing reparsing after refactorings (QTCREATORBUG-26523)
|
||||||
|
* Fixed that parameters were incorrectly highlighted as output parameters
|
||||||
|
* Fixed highlighting of string literals in macros (QTCREATORBUG-26553)
|
||||||
|
* Fixed icon of signals and slots in completion list (QTCREATORBUG-26555)
|
||||||
|
* Fixed header completion for Qt headers (QTCREATORBUG-26482)
|
||||||
|
* Fixed code model update after UI header change
|
||||||
|
* Fixed that `Find References` could show results for deleted files
|
||||||
|
(QTCREATORBUG-26574)
|
||||||
|
* Fixed that highlighting of current symbol could vanish (QTCREATORBUG-26339)
|
||||||
|
* Fixed that nested items were not synchronized with cursor position in
|
||||||
|
outline (QTCREATORBUG-26509)
|
||||||
|
|
||||||
### QML
|
### QML
|
||||||
|
|
||||||
@@ -75,6 +85,7 @@ Projects
|
|||||||
* Fixed that re-detecting compilers removed compilers from kits
|
* Fixed that re-detecting compilers removed compilers from kits
|
||||||
(QTCREATORBUG-25697)
|
(QTCREATORBUG-25697)
|
||||||
* Fixed GitHub action created by Qt Creator plugin wizard for Qt 6
|
* Fixed GitHub action created by Qt Creator plugin wizard for Qt 6
|
||||||
|
* Fixed crash when canceling device test dialog (QTCREATORBUG-26285)
|
||||||
|
|
||||||
### CMake
|
### CMake
|
||||||
|
|
||||||
@@ -155,10 +166,16 @@ Platforms
|
|||||||
* Added details to device settings (QTCREATORBUG-23991)
|
* Added details to device settings (QTCREATORBUG-23991)
|
||||||
* Added filter field for Android SDK manager
|
* Added filter field for Android SDK manager
|
||||||
* Fixed that NDK 22 and later could not be added
|
* Fixed that NDK 22 and later could not be added
|
||||||
|
* Fixed creation of Android template files (QTCREATORBUG-26580)
|
||||||
|
|
||||||
|
### iOS
|
||||||
|
|
||||||
|
* Fixed that no tasks were created for build issues (QTCREATORBUG-26541)
|
||||||
|
|
||||||
### WebAssembly
|
### WebAssembly
|
||||||
|
|
||||||
* Fixed running applications (QTCREATORBUG-25905, QTCREATORBUG-26189)
|
* Fixed running applications (QTCREATORBUG-25905, QTCREATORBUG-26189,
|
||||||
|
QTCREATORBUG-26562)
|
||||||
|
|
||||||
### MCU
|
### MCU
|
||||||
|
|
||||||
|
BIN
doc/qtcreator/images/icons/create-tracepoint.png
Normal file
After Width: | Height: | Size: 183 B |
BIN
doc/qtcreator/images/icons/output-pane-menu.png
Normal file
After Width: | Height: | Size: 110 B |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 7.8 KiB |
BIN
doc/qtcreator/images/qtcreator-output-panes-taskbar.png
Normal file
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 9.6 KiB |
Before Width: | Height: | Size: 154 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 158 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 19 KiB |
BIN
doc/qtcreator/images/qtcreator-performance-analyzer-toolbar.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
@@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (C) 2019 The Qt Company Ltd.
|
** Copyright (C) 2021 The Qt Company Ltd.
|
||||||
** Contact: https://www.qt.io/licensing/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
** This file is part of the Qt Creator documentation.
|
** This file is part of the Qt Creator documentation.
|
||||||
@@ -72,7 +72,9 @@
|
|||||||
\li Select the
|
\li Select the
|
||||||
\inlineimage qtcreator-analyze-start-button.png
|
\inlineimage qtcreator-analyze-start-button.png
|
||||||
(\uicontrol Start) button to start the application from the
|
(\uicontrol Start) button to start the application from the
|
||||||
Performance Analyzer.
|
\uicontrol {Performance Analyzer}.
|
||||||
|
|
||||||
|
\inlineimage qtcreator-performance-analyzer-toolbar.png "Performance Analyzer toolbar"
|
||||||
|
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
@@ -101,9 +103,21 @@
|
|||||||
|
|
||||||
To create trace points for profiling memory usage on a target device, select
|
To create trace points for profiling memory usage on a target device, select
|
||||||
\uicontrol Analyze > \uicontrol {Performance Analyzer Options} >
|
\uicontrol Analyze > \uicontrol {Performance Analyzer Options} >
|
||||||
\uicontrol {Create Memory Trace Points}.
|
\uicontrol {Create Memory Trace Points} or select
|
||||||
|
\inlineimage icons/create-tracepoint.png
|
||||||
|
on the \uicontrol {Performance Analyzer} toolbar.
|
||||||
|
|
||||||
To add events for the trace points, see \l{Choosing Event Types}
|
In the \uicontrol {Create Memory Trace Points} dialog, you can modify the
|
||||||
|
script to run.
|
||||||
|
|
||||||
|
\image qtcreator-performance-analyzer-create-memory-trace-points.png "Create Memory Trace Points dialog"
|
||||||
|
|
||||||
|
If you need root privileges to run scripts as root, select the privileges to
|
||||||
|
use in the \uicontrol {Elevate privileges using} field.
|
||||||
|
|
||||||
|
Select \uicontrol OK to run the script.
|
||||||
|
|
||||||
|
To add events for the trace points, see \l{Choosing Event Types}.
|
||||||
|
|
||||||
You can record a memory trace to view usage graphs in the samples rows of
|
You can record a memory trace to view usage graphs in the samples rows of
|
||||||
the timeline and to view memory allocations, peaks, and releases in the
|
the timeline and to view memory allocations, peaks, and releases in the
|
||||||
@@ -418,8 +432,8 @@
|
|||||||
|
|
||||||
You can load any \c perf.data files generated by recent versions of the
|
You can load any \c perf.data files generated by recent versions of the
|
||||||
Linux Perf tool and view them in \QC. Select \uicontrol Analyze >
|
Linux Perf tool and view them in \QC. Select \uicontrol Analyze >
|
||||||
\uicontrol {Performance Analyzer Options} > \uicontrol {Load perf.data} to
|
\uicontrol {Performance Analyzer Options} > \uicontrol {Load perf.data File}
|
||||||
load a file.
|
to load a file.
|
||||||
|
|
||||||
\image qtcreator-cpu-usage-analyzer-load-perf-trace.png
|
\image qtcreator-cpu-usage-analyzer-load-perf-trace.png
|
||||||
|
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
**
|
**
|
||||||
** Copyright (C) 2019 The Qt Company Ltd.
|
** Copyright (C) 2021 The Qt Company Ltd.
|
||||||
** Contact: https://www.qt.io/licensing/
|
** Contact: https://www.qt.io/licensing/
|
||||||
**
|
**
|
||||||
** This file is part of the Qt Creator documentation.
|
** This file is part of the Qt Creator documentation.
|
||||||
@@ -111,35 +111,30 @@
|
|||||||
|
|
||||||
\section1 Find a specific setting
|
\section1 Find a specific setting
|
||||||
|
|
||||||
To find specific settings you require in \uicontrol{Tools} > \uicontrol{Options}
|
To find specific settings in \uicontrol Tools > \uicontrol Options,
|
||||||
use the filter located at the top left of the \uicontrol Options dialog box.
|
use the filter located at the top left of the \uicontrol Options dialog box.
|
||||||
|
|
||||||
\section1 Open output panes
|
\section1 Open output panes
|
||||||
|
|
||||||
The output panes provide a list of errors and warnings encountered during
|
The \l{Viewing Output}{output panes} provide a list of errors and warnings
|
||||||
a build, detailed output from the compiler, status of a program when it is
|
encountered during a build, detailed output from the compiler, status of a
|
||||||
executed and debug output, as well as search results.
|
program when it is executed, debug output, and search results.
|
||||||
|
|
||||||
To open output panes, use the following shortcuts:
|
To open output panes, use the following shortcuts:
|
||||||
|
|
||||||
\list
|
\list
|
||||||
|
|
||||||
\li \uicontrol{Issues} pane Alt+1 (Cmd+1 on \macos)
|
\li \uicontrol{Issues} - \key Alt+1 (\key Cmd+1 on \macos)
|
||||||
|
|
||||||
\li \uicontrol{Search Results} pane Alt+2 (Cmd+2 on \macos)
|
\li \uicontrol{Search Results} - \key Alt+2 (\key Cmd+2 on \macos)
|
||||||
|
|
||||||
\li \uicontrol{Application Output} pane Alt+3 (Cmd+3 on \macos)
|
\li \uicontrol{Application Output} - \key Alt+3 (\key Cmd+3 on \macos)
|
||||||
|
|
||||||
\li \uicontrol{Compile Output} pane Alt+4 (Cmd+4 on \macos)
|
\li \uicontrol{Compile Output} - \key Alt+4 (\key Cmd+4 on \macos)
|
||||||
|
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
To open the other output panes, such as \uicontrol{General Messages} and
|
For additional ways to open all output panes, see \l{Viewing Output}.
|
||||||
\uicontrol{Version Control}, select \uicontrol View >
|
|
||||||
\uicontrol {Output Panes}. The menu items also display
|
|
||||||
the keyboard shortcuts that you can use.
|
|
||||||
|
|
||||||
For more information about output panes, see \l{Viewing Output}.
|
|
||||||
|
|
||||||
\section1 Find keyboard shortcuts
|
\section1 Find keyboard shortcuts
|
||||||
|
|
||||||
@@ -147,17 +142,17 @@
|
|||||||
You can see the keyboard shortcut for a menu command in the menu
|
You can see the keyboard shortcut for a menu command in the menu
|
||||||
or the tooltip for a button.
|
or the tooltip for a button.
|
||||||
|
|
||||||
To customize, import or export keyboard shortcuts, select \uicontrol Tools >
|
To customize, import, or export keyboard shortcuts, select \uicontrol Tools >
|
||||||
\uicontrol Options > \uicontrol Environment > \uicontrol Keyboard.
|
\uicontrol Options > \uicontrol Environment > \uicontrol Keyboard.
|
||||||
|
|
||||||
\section1 Run \QC from the command line
|
\section1 Run \QC from the command line
|
||||||
|
|
||||||
You can launch \QC from command line using the name of an
|
You can launch \QC from the command line using the name of an
|
||||||
existing session or \c .pro file by giving the name as the command
|
existing \l{Managing Sessions}{session} or project file by entering
|
||||||
argument.
|
the name as the command argument.
|
||||||
|
|
||||||
For example, running \tt{qtcreator somesession}, launches \QC and
|
For example, running \c {qtcreator somesession}, launches \QC and
|
||||||
loads session somesession.
|
loads the session called \e somesession.
|
||||||
|
|
||||||
For more information, see \l{Using Command Line Options}.
|
For more information, see \l{Using Command Line Options}.
|
||||||
|
|
||||||
@@ -210,7 +205,7 @@
|
|||||||
|
|
||||||
If special debugging of Qt objects fails due to data corruption within the
|
If special debugging of Qt objects fails due to data corruption within the
|
||||||
debugged objects, you can switch off the debugging helpers. When debugging
|
debugged objects, you can switch off the debugging helpers. When debugging
|
||||||
helpers are switched off low-level structures become visible.
|
helpers are switched off, low-level structures become visible.
|
||||||
|
|
||||||
To switch off the debugging helpers:
|
To switch off the debugging helpers:
|
||||||
\list 1
|
\list 1
|
||||||
@@ -250,7 +245,7 @@
|
|||||||
\section1 Quickly locate files using the keyboard
|
\section1 Quickly locate files using the keyboard
|
||||||
|
|
||||||
The \uicontrol Locator provides one of the easiest ways in \QC to browse
|
The \uicontrol Locator provides one of the easiest ways in \QC to browse
|
||||||
through projects, files, classes, functions, documentation and file systems.
|
through projects, files, classes, functions, documentation, and file systems.
|
||||||
To quickly access files not directly mentioned in your project, you can
|
To quickly access files not directly mentioned in your project, you can
|
||||||
create your own locator filters. That way you can locate files in a
|
create your own locator filters. That way you can locate files in a
|
||||||
directory structure you have defined.
|
directory structure you have defined.
|
||||||
@@ -307,12 +302,14 @@
|
|||||||
|
|
||||||
\section1 Enclose selected code in curly braces, parentheses, or double quotes
|
\section1 Enclose selected code in curly braces, parentheses, or double quotes
|
||||||
|
|
||||||
Press \key {Shift} and then the opening character.
|
When you have selected code and enter one of the following opening
|
||||||
|
characters, the appropriate closing character is added automatically
|
||||||
|
at the end of the selection:
|
||||||
|
|
||||||
\list
|
\list
|
||||||
\li Curly braces: \key {Shift+\{}
|
\li {
|
||||||
\li Parentheses: \key {Shift+(}
|
\li (
|
||||||
\li Double quotes: \key {Shift+"}
|
\li "
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
\section1 Select the enclosing block in C++
|
\section1 Select the enclosing block in C++
|
||||||
|
@@ -35,7 +35,7 @@
|
|||||||
The AutotoolsProjectManager is a plugin for autotools support. It is
|
The AutotoolsProjectManager is a plugin for autotools support. It is
|
||||||
disabled by default. To enable the plugin, select \uicontrol Help >
|
disabled by default. To enable the plugin, select \uicontrol Help >
|
||||||
\uicontrol {About Plugins} > \uicontrol {Build Systems} >
|
\uicontrol {About Plugins} > \uicontrol {Build Systems} >
|
||||||
\uicontrol AutotoolsProjectManager.Then select \uicontrol {Restart Now}
|
\uicontrol AutotoolsProjectManager. Then select \uicontrol {Restart Now}
|
||||||
to restart \QC and load the plugin.
|
to restart \QC and load the plugin.
|
||||||
|
|
||||||
To work with your Autotools project in \QC:
|
To work with your Autotools project in \QC:
|
||||||
|
@@ -384,9 +384,24 @@
|
|||||||
|
|
||||||
\endlist
|
\endlist
|
||||||
|
|
||||||
Output panes are available in all \l{Selecting Modes}{modes}. Click the name
|
Output panes are available on the taskbar in all \l{Selecting Modes}{modes}.
|
||||||
of an output pane to open the pane. To maximize an open output pane, click
|
|
||||||
the \uicontrol {Maximize Output Pane} button or press \key {Alt+9}.
|
\image qtcreator-output-panes-taskbar.png "Output panes on the taskbar"
|
||||||
|
|
||||||
|
You can open output panes in the following ways:
|
||||||
|
|
||||||
|
\list
|
||||||
|
\li Select the output pane on the taskbar.
|
||||||
|
\li Select \key Alt (\key Cmd on \macos) and the number of the pane on
|
||||||
|
the taskbar.
|
||||||
|
\li Select \inlineimage icons/output-pane-menu.png
|
||||||
|
, and then select the pane to open.
|
||||||
|
\li Select \uicontrol View > \uicontrol {Output Panes}.
|
||||||
|
The menu items also display the keyboard shortcuts that you can use.
|
||||||
|
\endlist
|
||||||
|
|
||||||
|
To maximize an open output pane, select the \inlineimage arrowup.png
|
||||||
|
(\uicontrol {Maximize Output Pane}) button or press \key {Alt+Shift+9}.
|
||||||
|
|
||||||
|
|
||||||
To increase or decrease the output text size, select \inlineimage plus.png
|
To increase or decrease the output text size, select \inlineimage plus.png
|
||||||
|
@@ -55,7 +55,7 @@
|
|||||||
To create a project:
|
To create a project:
|
||||||
|
|
||||||
\list 1
|
\list 1
|
||||||
\li Select \uicontrol File > \uicontrol {New File or Project} >
|
\li Select \uicontrol File > \uicontrol {New Project} >
|
||||||
\uicontrol General > \uicontrol {Qt Quick Application - Empty} >
|
\uicontrol General > \uicontrol {Qt Quick Application - Empty} >
|
||||||
\uicontrol Choose.
|
\uicontrol Choose.
|
||||||
\li In the \uicontrol Name field, enter the project name: \e {loginui1}.
|
\li In the \uicontrol Name field, enter the project name: \e {loginui1}.
|
||||||
@@ -308,8 +308,8 @@
|
|||||||
To create a push button by using the wizard template:
|
To create a push button by using the wizard template:
|
||||||
|
|
||||||
\list 1
|
\list 1
|
||||||
\li Select \uicontrol File > \uicontrol {New File or Project} >
|
\li Select \uicontrol File > \uicontrol {New File} >
|
||||||
\uicontrol {Files and Classes} > \uicontrol {Qt Quick Controls} >
|
\uicontrol {Qt Quick Controls} >
|
||||||
\uicontrol {Custom Button} > \uicontrol Choose.
|
\uicontrol {Custom Button} > \uicontrol Choose.
|
||||||
\li In the \uicontrol {Component name} field, enter a name for your
|
\li In the \uicontrol {Component name} field, enter a name for your
|
||||||
button component: \e {EntryField}.
|
button component: \e {EntryField}.
|
||||||
|
@@ -46,8 +46,8 @@
|
|||||||
|
|
||||||
\section1 Creating Reusable Buttons
|
\section1 Creating Reusable Buttons
|
||||||
|
|
||||||
We select \uicontrol File > \uicontrol {New File or Project} >
|
We select \uicontrol File > \uicontrol {New File} >
|
||||||
\uicontrol {Files and Classes} > \uicontrol {Qt Quick Controls} >
|
\uicontrol {Qt Quick Controls} >
|
||||||
\uicontrol {Custom Button} to create a reusable menu bar button
|
\uicontrol {Custom Button} to create a reusable menu bar button
|
||||||
that we call \e CustomButton.
|
that we call \e CustomButton.
|
||||||
|
|
||||||
|
@@ -63,7 +63,7 @@
|
|||||||
We use the \uicontrol {Qt for MCUs Application} project template to create
|
We use the \uicontrol {Qt for MCUs Application} project template to create
|
||||||
an application for MCUs, which support only a subset of the preset
|
an application for MCUs, which support only a subset of the preset
|
||||||
\l{glossary-component}{components}. We select \uicontrol File >
|
\l{glossary-component}{components}. We select \uicontrol File >
|
||||||
\uicontrol {New File or Project} > \uicontrol {Qt for MCUs Application} >
|
\uicontrol {New Project} > \uicontrol {Qt for MCUs Application} >
|
||||||
\uicontrol Choose, and follow the instructions of the wizard to create our
|
\uicontrol Choose, and follow the instructions of the wizard to create our
|
||||||
project.
|
project.
|
||||||
|
|
||||||
@@ -100,7 +100,7 @@
|
|||||||
that we use to indicate that a button is pressed.
|
that we use to indicate that a button is pressed.
|
||||||
|
|
||||||
Alternatively, you could create the screens from scratch in \QDS
|
Alternatively, you could create the screens from scratch in \QDS
|
||||||
by selecting \uicontrol File > \uicontrol {New File or Project} >
|
by selecting \uicontrol File > \uicontrol {New File} >
|
||||||
\uicontrol {Qt Quick Files}. While designing the screens, you can
|
\uicontrol {Qt Quick Files}. While designing the screens, you can
|
||||||
move reusable components into separate files. For more information,
|
move reusable components into separate files. For more information,
|
||||||
see \l{Components}.
|
see \l{Components}.
|
||||||
|
@@ -40,7 +40,7 @@
|
|||||||
|
|
||||||
\list 1
|
\list 1
|
||||||
|
|
||||||
\li Select \uicontrol File > \uicontrol {New File or Project} >
|
\li Select \uicontrol File > \uicontrol {New File} >
|
||||||
\if defined(qtcreator)
|
\if defined(qtcreator)
|
||||||
\uicontrol Qt > \uicontrol {Qt Quick UI File} >
|
\uicontrol Qt > \uicontrol {Qt Quick UI File} >
|
||||||
\else
|
\else
|
||||||
@@ -124,7 +124,6 @@
|
|||||||
information, see \l{Creating Scalable Buttons and Borders}.
|
information, see \l{Creating Scalable Buttons and Borders}.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
\previouspage quick-buttons.html
|
\previouspage quick-buttons.html
|
||||||
\page quick-scalable-image.html
|
\page quick-scalable-image.html
|
||||||
@@ -158,7 +157,7 @@
|
|||||||
\section1 Creating the Button Component
|
\section1 Creating the Button Component
|
||||||
|
|
||||||
To create a button component, select \uicontrol File >
|
To create a button component, select \uicontrol File >
|
||||||
\uicontrol {New File or Project} >
|
\uicontrol {New File} >
|
||||||
\if defined(qtcreator)
|
\if defined(qtcreator)
|
||||||
\uicontrol Qt > \uicontrol {Qt Quick UI File} >
|
\uicontrol Qt > \uicontrol {Qt Quick UI File} >
|
||||||
\else
|
\else
|
||||||
|
@@ -47,7 +47,7 @@
|
|||||||
To use wizard templates to create custom components:
|
To use wizard templates to create custom components:
|
||||||
|
|
||||||
\list 1
|
\list 1
|
||||||
\li Select \uicontrol File > \uicontrol {New File or Project} >
|
\li Select \uicontrol File > \uicontrol {New File} >
|
||||||
\if defined(qtcreator)
|
\if defined(qtcreator)
|
||||||
\uicontrol Qt > \uicontrol {Qt Quick UI File} >
|
\uicontrol Qt > \uicontrol {Qt Quick UI File} >
|
||||||
\else
|
\else
|
||||||
|
@@ -92,7 +92,7 @@
|
|||||||
for it, as described in \l {Creating Projects}.
|
for it, as described in \l {Creating Projects}.
|
||||||
|
|
||||||
To create the flow view, select \uicontrol File >
|
To create the flow view, select \uicontrol File >
|
||||||
\uicontrol {New File or Project} > \uicontrol {Files and Classes} >
|
\uicontrol {New File} >
|
||||||
\uicontrol {Qt Quick Files} > \uicontrol {Flow View}
|
\uicontrol {Qt Quick Files} > \uicontrol {Flow View}
|
||||||
and follow the instructions of the wizard.
|
and follow the instructions of the wizard.
|
||||||
|
|
||||||
@@ -197,8 +197,8 @@
|
|||||||
To add flow items:
|
To add flow items:
|
||||||
|
|
||||||
\list 1
|
\list 1
|
||||||
\li Select \uicontrol File > \uicontrol {New File or Project} >
|
\li Select \uicontrol File > \uicontrol {New File} >
|
||||||
\uicontrol {Files and Classes} > \uicontrol {Qt Quick Files} >
|
\uicontrol {Qt Quick Files} >
|
||||||
\uicontrol {Flow Item} and follow the instructions of the wizard
|
\uicontrol {Flow Item} and follow the instructions of the wizard
|
||||||
to create flow items for each screen in the UI.
|
to create flow items for each screen in the UI.
|
||||||
\li Add content to the flow item in one of the following ways:
|
\li Add content to the flow item in one of the following ways:
|
||||||
@@ -649,8 +649,8 @@
|
|||||||
\uicontrol Components > \uicontrol {Flow View}.
|
\uicontrol Components > \uicontrol {Flow View}.
|
||||||
|
|
||||||
\list 1
|
\list 1
|
||||||
\li Select \uicontrol File > \uicontrol {New File or Project} >
|
\li Select \uicontrol File > \uicontrol {New File} >
|
||||||
\uicontrol {Files and Classes} > \uicontrol {Qt Quick Files} >
|
\uicontrol {Qt Quick Files} >
|
||||||
\uicontrol {Flow Item} to create a flow item.
|
\uicontrol {Flow Item} to create a flow item.
|
||||||
\li In \l States, add states to the flow item.
|
\li In \l States, add states to the flow item.
|
||||||
\li Open the .ui.qml file that contains the \l{Adding Flow Views}
|
\li Open the .ui.qml file that contains the \l{Adding Flow Views}
|
||||||
|
@@ -70,7 +70,7 @@
|
|||||||
To import assets exported in \QB to \QDS projects:
|
To import assets exported in \QB to \QDS projects:
|
||||||
|
|
||||||
\list 1
|
\list 1
|
||||||
\li Select \uicontrol File > \uicontrol {New File or Project} >
|
\li Select \uicontrol File > \uicontrol {New Project} >
|
||||||
\uicontrol General > \uicontrol {Qt Quick Application - Empty} >
|
\uicontrol General > \uicontrol {Qt Quick Application - Empty} >
|
||||||
\uicontrol Choose, and follow the instructions of the wizard to
|
\uicontrol Choose, and follow the instructions of the wizard to
|
||||||
create an empty project.
|
create an empty project.
|
||||||
|
@@ -66,8 +66,8 @@
|
|||||||
\code
|
\code
|
||||||
importPaths: [ "imports", "backend" ]
|
importPaths: [ "imports", "backend" ]
|
||||||
\endcode
|
\endcode
|
||||||
\li Select \uicontrol File > \uicontrol {New File or Project} >
|
\li Select \uicontrol File > \uicontrol {New File} >
|
||||||
\uicontrol {Files and Classes} > \uicontrol {Qt Quick Files} >
|
\uicontrol {Qt Quick Files} >
|
||||||
\uicontrol {Qt Quick File} > \uicontrol Choose to add a Qt
|
\uicontrol {Qt Quick File} > \uicontrol Choose to add a Qt
|
||||||
Quick file that will specify the API of the UI.
|
Quick file that will specify the API of the UI.
|
||||||
\li Follow the instructions of the wizard to create the Qt Quick file
|
\li Follow the instructions of the wizard to create the Qt Quick file
|
||||||
@@ -75,8 +75,8 @@
|
|||||||
\e Values.qml.
|
\e Values.qml.
|
||||||
\note Make sure to capitalize the filename, because it will become
|
\note Make sure to capitalize the filename, because it will become
|
||||||
a custom component.
|
a custom component.
|
||||||
\li Select \uicontrol File > \uicontrol {New File or Project} >
|
\li Select \uicontrol File > \uicontrol {New File} >
|
||||||
\uicontrol {Files and Classes} > \uicontrol {JavaScript} >
|
\uicontrol {JavaScript} >
|
||||||
\uicontrol {JavaScript File} > \uicontrol Choose to create a
|
\uicontrol {JavaScript File} > \uicontrol Choose to create a
|
||||||
JavaScript file that generates mock data for the UI.
|
JavaScript file that generates mock data for the UI.
|
||||||
\li Follow the instructions of the wizard to create the JavaScript file
|
\li Follow the instructions of the wizard to create the JavaScript file
|
||||||
|
@@ -111,7 +111,7 @@
|
|||||||
\section1 Using Project Wizards
|
\section1 Using Project Wizards
|
||||||
|
|
||||||
\list 1
|
\list 1
|
||||||
\li Select \uicontrol File > \uicontrol {New File or Project}.
|
\li Select \uicontrol File > \uicontrol {New Project}.
|
||||||
\li Select a wizard template, and then select \uicontrol Choose.
|
\li Select a wizard template, and then select \uicontrol Choose.
|
||||||
\li In the \uicontrol Name field, enter a name for the project.
|
\li In the \uicontrol Name field, enter a name for the project.
|
||||||
Keep in mind that projects cannot be easily renamed later.
|
Keep in mind that projects cannot be easily renamed later.
|
||||||
|
@@ -193,7 +193,7 @@
|
|||||||
example, if you create a 3D project, preset 3D components are added to it.
|
example, if you create a 3D project, preset 3D components are added to it.
|
||||||
You can add more preset components in \uicontrol Library.
|
You can add more preset components in \uicontrol Library.
|
||||||
|
|
||||||
\image studio-project-wizards.png "New File or Project dialog"
|
\image studio-project-wizards.png "New Project dialog"
|
||||||
|
|
||||||
Read more about projects:
|
Read more about projects:
|
||||||
|
|
||||||
|
@@ -148,7 +148,8 @@ def package(args, paths):
|
|||||||
common.check_print_call(['7z', 'a', '-mmt2',
|
common.check_print_call(['7z', 'a', '-mmt2',
|
||||||
os.path.join(paths.result, args.name + '_dev.7z'), '*'],
|
os.path.join(paths.result, args.name + '_dev.7z'), '*'],
|
||||||
paths.dev_install)
|
paths.dev_install)
|
||||||
if args.with_debug_info:
|
# check for existence - the DebugInfo install target doesn't work for telemetry plugin
|
||||||
|
if args.with_debug_info and os.path.exists(paths.debug_install):
|
||||||
common.check_print_call(['7z', 'a', '-mmt2',
|
common.check_print_call(['7z', 'a', '-mmt2',
|
||||||
os.path.join(paths.result, args.name + '-debug.7z'), '*'],
|
os.path.join(paths.result, args.name + '-debug.7z'), '*'],
|
||||||
paths.debug_install)
|
paths.debug_install)
|
||||||
|
@@ -115,7 +115,7 @@ DStitleBarIcon=ffffffff
|
|||||||
DStitleBarButtonHover=40ffffff
|
DStitleBarButtonHover=40ffffff
|
||||||
DStitleBarButtonPress=60ffffff
|
DStitleBarButtonPress=60ffffff
|
||||||
|
|
||||||
DStabContainerBackground=ff0000ff
|
DStabContainerBackground=ff1f1f1f
|
||||||
DStabSplitter=ff595959
|
DStabSplitter=ff595959
|
||||||
|
|
||||||
DStabInactiveBackground=ff1f1f1f
|
DStabInactiveBackground=ff1f1f1f
|
||||||
|
@@ -105,7 +105,7 @@ DStitleBarIcon=ff4f5052
|
|||||||
DStitleBarButtonHover=40ffffff
|
DStitleBarButtonHover=40ffffff
|
||||||
DStitleBarButtonPress=60ffffff
|
DStitleBarButtonPress=60ffffff
|
||||||
|
|
||||||
DStabContainerBackground=ff0000ff
|
DStabContainerBackground=ff999999
|
||||||
DStabSplitter=ff595959
|
DStabSplitter=ff595959
|
||||||
|
|
||||||
DStabInactiveBackground=ff999999
|
DStabInactiveBackground=ff999999
|
||||||
|
@@ -120,7 +120,7 @@ DStitleBarIcon=ff4f5052
|
|||||||
DStitleBarButtonHover=40ffffff
|
DStitleBarButtonHover=40ffffff
|
||||||
DStitleBarButtonPress=60ffffff
|
DStitleBarButtonPress=60ffffff
|
||||||
|
|
||||||
DStabContainerBackground=ff0000ff
|
DStabContainerBackground=ffdadada
|
||||||
DStabSplitter=ff595959
|
DStabSplitter=ff595959
|
||||||
|
|
||||||
DStabInactiveBackground=ff999999
|
DStabInactiveBackground=ff999999
|
||||||
|
@@ -117,7 +117,7 @@ DStitleBarIcon=ffffffff
|
|||||||
DStitleBarButtonHover=40ffffff
|
DStitleBarButtonHover=40ffffff
|
||||||
DStitleBarButtonPress=60ffffff
|
DStitleBarButtonPress=60ffffff
|
||||||
|
|
||||||
DStabContainerBackground=ff0000ff
|
DStabContainerBackground=ff1f1f1f
|
||||||
DStabSplitter=ff595959
|
DStabSplitter=ff595959
|
||||||
|
|
||||||
DStabInactiveBackground=ff1f1f1f
|
DStabInactiveBackground=ff1f1f1f
|
||||||
|
@@ -114,7 +114,7 @@ DStitleBarIcon=ffffffff
|
|||||||
DStitleBarButtonHover=40ffffff
|
DStitleBarButtonHover=40ffffff
|
||||||
DStitleBarButtonPress=60ffffff
|
DStitleBarButtonPress=60ffffff
|
||||||
|
|
||||||
DStabContainerBackground=ff0000ff
|
DStabContainerBackground=ff1f1f1f
|
||||||
DStabSplitter=ff595959
|
DStabSplitter=ff595959
|
||||||
|
|
||||||
DStabInactiveBackground=ff1f1f1f
|
DStabInactiveBackground=ff1f1f1f
|
||||||
|
@@ -110,7 +110,7 @@ DStitleBarIcon=ff4f5052
|
|||||||
DStitleBarButtonHover=40ffffff
|
DStitleBarButtonHover=40ffffff
|
||||||
DStitleBarButtonPress=60ffffff
|
DStitleBarButtonPress=60ffffff
|
||||||
|
|
||||||
DStabContainerBackground=ff0000ff
|
DStabContainerBackground=ffdadada
|
||||||
DStabSplitter=ff595959
|
DStabSplitter=ff595959
|
||||||
|
|
||||||
DStabInactiveBackground=ff999999
|
DStabInactiveBackground=ff999999
|
||||||
|
@@ -31,6 +31,7 @@ if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/qlitehtml/src/CMakeLists.txt)
|
|||||||
set(QLITEHTML_DEVEL_EXCLUDE_FROM_ALL ON)
|
set(QLITEHTML_DEVEL_EXCLUDE_FROM_ALL ON)
|
||||||
set(QLITEHTML_HEADER_PATH "${IDE_HEADER_INSTALL_PATH}/src/lib/qlitehtml")
|
set(QLITEHTML_HEADER_PATH "${IDE_HEADER_INSTALL_PATH}/src/lib/qlitehtml")
|
||||||
set(QT_VERSION_MAJOR ${Qt5_VERSION_MAJOR})
|
set(QT_VERSION_MAJOR ${Qt5_VERSION_MAJOR})
|
||||||
|
set(BUILD_TESTING OFF) # otherwise litehtml downloads googletest
|
||||||
add_subdirectory(qlitehtml/src)
|
add_subdirectory(qlitehtml/src)
|
||||||
endif()
|
endif()
|
||||||
if(TARGET qlitehtml)
|
if(TARGET qlitehtml)
|
||||||
|
@@ -31,6 +31,13 @@
|
|||||||
#include <QThread>
|
#include <QThread>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
#ifdef QTCREATOR_PCH_H
|
||||||
|
#define CALLBACK WINAPI
|
||||||
|
#endif
|
||||||
|
#include <qt_windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
using namespace Utils;
|
using namespace Utils;
|
||||||
|
|
||||||
namespace Utils {
|
namespace Utils {
|
||||||
@@ -83,6 +90,26 @@ bool Reaper::isFinished() const
|
|||||||
return !m_process;
|
return !m_process;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
static BOOL sendMessage(UINT message, HWND hwnd, LPARAM lParam)
|
||||||
|
{
|
||||||
|
DWORD dwProcessID;
|
||||||
|
GetWindowThreadProcessId(hwnd, &dwProcessID);
|
||||||
|
if ((DWORD)lParam == dwProcessID) {
|
||||||
|
SendNotifyMessage(hwnd, message, 0, 0);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL CALLBACK sendShutDownMessageToAllWindowsOfProcess_enumWnd(HWND hwnd, LPARAM lParam)
|
||||||
|
{
|
||||||
|
static UINT uiShutDownMessage = RegisterWindowMessage(L"qtcctrlcstub_shutdown");
|
||||||
|
return sendMessage(uiShutDownMessage, hwnd, lParam);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
void Reaper::nextIteration()
|
void Reaper::nextIteration()
|
||||||
{
|
{
|
||||||
QProcess::ProcessState state = m_process ? m_process->state() : QProcess::NotRunning;
|
QProcess::ProcessState state = m_process ? m_process->state() : QProcess::NotRunning;
|
||||||
@@ -96,11 +123,16 @@ void Reaper::nextIteration()
|
|||||||
if (m_lastState == QProcess::Starting)
|
if (m_lastState == QProcess::Starting)
|
||||||
m_process->kill();
|
m_process->kill();
|
||||||
} else if (state == QProcess::Running) {
|
} else if (state == QProcess::Running) {
|
||||||
if (m_lastState == QProcess::Running)
|
if (m_lastState == QProcess::Running) {
|
||||||
m_process->kill();
|
m_process->kill();
|
||||||
else
|
} else if (m_process->program().endsWith(QLatin1String("qtcreator_ctrlc_stub.exe"))) {
|
||||||
|
#ifdef Q_OS_WIN
|
||||||
|
EnumWindows(sendShutDownMessageToAllWindowsOfProcess_enumWnd, m_process->processId());
|
||||||
|
#endif
|
||||||
|
} else {
|
||||||
m_process->terminate();
|
m_process->terminate();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
m_lastState = state;
|
m_lastState = state;
|
||||||
m_iterationTimer.start();
|
m_iterationTimer.start();
|
||||||
@@ -149,10 +181,7 @@ void ProcessReaper::reap(QProcess *process, int timeoutMs)
|
|||||||
if (process->state() == QProcess::NotRunning) {
|
if (process->state() == QProcess::NotRunning) {
|
||||||
process->deleteLater();
|
process->deleteLater();
|
||||||
return;
|
return;
|
||||||
} else {
|
|
||||||
process->kill();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Neither can move object with a parent into a different thread
|
// Neither can move object with a parent into a different thread
|
||||||
// nor reaping the process with a parent makes any sense.
|
// nor reaping the process with a parent makes any sense.
|
||||||
process->setParent(nullptr);
|
process->setParent(nullptr);
|
||||||
|
@@ -191,6 +191,7 @@ SemanticTokenSupport::SemanticTokenSupport(Client *client)
|
|||||||
|
|
||||||
void SemanticTokenSupport::refresh()
|
void SemanticTokenSupport::refresh()
|
||||||
{
|
{
|
||||||
|
qCDebug(LOGLSPHIGHLIGHT) << "refresh all semantic highlights for" << m_client->name();
|
||||||
m_tokens.clear();
|
m_tokens.clear();
|
||||||
for (Core::IEditor *editor : Core::EditorManager::visibleEditors())
|
for (Core::IEditor *editor : Core::EditorManager::visibleEditors())
|
||||||
onCurrentEditorChanged(editor);
|
onCurrentEditorChanged(editor);
|
||||||
@@ -226,6 +227,8 @@ void SemanticTokenSupport::reloadSemanticTokens(TextDocument *textDocument)
|
|||||||
params.setTextDocument(docId);
|
params.setTextDocument(docId);
|
||||||
SemanticTokensFullRequest request(params);
|
SemanticTokensFullRequest request(params);
|
||||||
request.setResponseCallback(responseCallback);
|
request.setResponseCallback(responseCallback);
|
||||||
|
qCDebug(LOGLSPHIGHLIGHT) << "Requesting all tokens for" << filePath << "with version"
|
||||||
|
<< m_client->documentVersion(filePath);
|
||||||
m_client->sendContent(request);
|
m_client->sendContent(request);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -238,19 +241,22 @@ void SemanticTokenSupport::updateSemanticTokens(TextDocument *textDocument)
|
|||||||
const VersionedTokens versionedToken = m_tokens.value(filePath);
|
const VersionedTokens versionedToken = m_tokens.value(filePath);
|
||||||
const QString &previousResultId = versionedToken.tokens.resultId().value_or(QString());
|
const QString &previousResultId = versionedToken.tokens.resultId().value_or(QString());
|
||||||
if (!previousResultId.isEmpty()) {
|
if (!previousResultId.isEmpty()) {
|
||||||
if (m_client->documentVersion(filePath) == versionedToken.version)
|
const int documentVersion = m_client->documentVersion(filePath);
|
||||||
|
if (documentVersion == versionedToken.version)
|
||||||
return;
|
return;
|
||||||
SemanticTokensDeltaParams params;
|
SemanticTokensDeltaParams params;
|
||||||
params.setTextDocument(TextDocumentIdentifier(DocumentUri::fromFilePath(filePath)));
|
params.setTextDocument(TextDocumentIdentifier(DocumentUri::fromFilePath(filePath)));
|
||||||
params.setPreviousResultId(previousResultId);
|
params.setPreviousResultId(previousResultId);
|
||||||
SemanticTokensFullDeltaRequest request(params);
|
SemanticTokensFullDeltaRequest request(params);
|
||||||
request.setResponseCallback(
|
request.setResponseCallback(
|
||||||
[this, filePath, documentVersion = m_client->documentVersion(filePath)](
|
[this, filePath, documentVersion](
|
||||||
const SemanticTokensFullDeltaRequest::Response &response) {
|
const SemanticTokensFullDeltaRequest::Response &response) {
|
||||||
handleSemanticTokensDelta(filePath,
|
handleSemanticTokensDelta(filePath,
|
||||||
response.result().value_or(nullptr),
|
response.result().value_or(nullptr),
|
||||||
documentVersion);
|
documentVersion);
|
||||||
});
|
});
|
||||||
|
qCDebug(LOGLSPHIGHLIGHT)
|
||||||
|
<< "Requesting delta for" << filePath << "with version" << documentVersion;
|
||||||
m_client->sendContent(request);
|
m_client->sendContent(request);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -411,8 +417,10 @@ void SemanticTokenSupport::handleSemanticTokensDelta(
|
|||||||
const LanguageServerProtocol::SemanticTokensDeltaResult &result,
|
const LanguageServerProtocol::SemanticTokensDeltaResult &result,
|
||||||
int documentVersion)
|
int documentVersion)
|
||||||
{
|
{
|
||||||
|
qCDebug(LOGLSPHIGHLIGHT) << "Handle Tokens for " << filePath;
|
||||||
if (auto tokens = Utils::get_if<SemanticTokens>(&result)) {
|
if (auto tokens = Utils::get_if<SemanticTokens>(&result)) {
|
||||||
m_tokens[filePath] = {*tokens, documentVersion};
|
m_tokens[filePath] = {*tokens, documentVersion};
|
||||||
|
qCDebug(LOGLSPHIGHLIGHT) << "New Data " << tokens->data();
|
||||||
} else if (auto tokensDelta = Utils::get_if<SemanticTokensDelta>(&result)) {
|
} else if (auto tokensDelta = Utils::get_if<SemanticTokensDelta>(&result)) {
|
||||||
m_tokens[filePath].version = documentVersion;
|
m_tokens[filePath].version = documentVersion;
|
||||||
QList<SemanticTokensEdit> edits = tokensDelta->edits();
|
QList<SemanticTokensEdit> edits = tokensDelta->edits();
|
||||||
@@ -434,7 +442,7 @@ void SemanticTokenSupport::handleSemanticTokensDelta(
|
|||||||
|
|
||||||
auto it = data.begin();
|
auto it = data.begin();
|
||||||
const auto end = data.end();
|
const auto end = data.end();
|
||||||
qCDebug(LOGLSPHIGHLIGHT) << "Edit Tokens for " << filePath;
|
qCDebug(LOGLSPHIGHLIGHT) << "Edit Tokens";
|
||||||
qCDebug(LOGLSPHIGHLIGHT) << "Data before edit " << data;
|
qCDebug(LOGLSPHIGHLIGHT) << "Data before edit " << data;
|
||||||
for (const SemanticTokensEdit &edit : qAsConst(edits)) {
|
for (const SemanticTokensEdit &edit : qAsConst(edits)) {
|
||||||
if (edit.start() > data.size()) // prevent edits after the previously reported data
|
if (edit.start() > data.size()) // prevent edits after the previously reported data
|
||||||
@@ -469,6 +477,7 @@ void SemanticTokenSupport::handleSemanticTokensDelta(
|
|||||||
tokens.setResultId(tokensDelta->resultId());
|
tokens.setResultId(tokensDelta->resultId());
|
||||||
} else {
|
} else {
|
||||||
m_tokens.remove(filePath);
|
m_tokens.remove(filePath);
|
||||||
|
qCDebug(LOGLSPHIGHLIGHT) << "Data cleared";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
highlight(filePath);
|
highlight(filePath);
|
||||||
@@ -476,6 +485,7 @@ void SemanticTokenSupport::handleSemanticTokensDelta(
|
|||||||
|
|
||||||
void SemanticTokenSupport::highlight(const Utils::FilePath &filePath, bool force)
|
void SemanticTokenSupport::highlight(const Utils::FilePath &filePath, bool force)
|
||||||
{
|
{
|
||||||
|
qCDebug(LOGLSPHIGHLIGHT) << "highlight" << filePath;
|
||||||
TextDocument *doc = TextDocument::textDocumentForFilePath(filePath);
|
TextDocument *doc = TextDocument::textDocumentForFilePath(filePath);
|
||||||
if (!doc || LanguageClientManager::clientForDocument(doc) != m_client)
|
if (!doc || LanguageClientManager::clientForDocument(doc) != m_client)
|
||||||
return;
|
return;
|
||||||
@@ -486,6 +496,7 @@ void SemanticTokenSupport::highlight(const Utils::FilePath &filePath, bool force
|
|||||||
const QList<SemanticToken> tokens = versionedTokens.tokens
|
const QList<SemanticToken> tokens = versionedTokens.tokens
|
||||||
.toTokens(m_tokenTypes, m_tokenModifiers);
|
.toTokens(m_tokenTypes, m_tokenModifiers);
|
||||||
if (m_tokensHandler) {
|
if (m_tokensHandler) {
|
||||||
|
qCDebug(LOGLSPHIGHLIGHT) << "use tokens handler" << filePath;
|
||||||
int line = 1;
|
int line = 1;
|
||||||
int column = 1;
|
int column = 1;
|
||||||
QList<ExpandedSemanticToken> expandedTokens;
|
QList<ExpandedSemanticToken> expandedTokens;
|
||||||
|
@@ -50,8 +50,8 @@ static const QHash<QString, QString> &envVarToCMakeVarMapping()
|
|||||||
{"IMXRT595_FREERTOS_DIR","FREERTOS_DIR"},
|
{"IMXRT595_FREERTOS_DIR","FREERTOS_DIR"},
|
||||||
{"STM32F7_FREERTOS_DIR", "FREERTOS_DIR"},
|
{"STM32F7_FREERTOS_DIR", "FREERTOS_DIR"},
|
||||||
{"eFlashLoad_PATH","eFlashLoad_PATH"},
|
{"eFlashLoad_PATH","eFlashLoad_PATH"},
|
||||||
{"RenesasFlashProgrammer_PATH", "RenesasFlashProgrammer_PATH"},
|
{"RenesasFlashProgrammer_PATH", "RENESAS_FLASH_PROGRAMMER_PATH"},
|
||||||
{"MCUXpressoIDE_PATH", "MCUXpressoIDE_PATH"},
|
{"MCUXpressoIDE_PATH", "MCUXPRESSO_IDE_PATH"},
|
||||||
{"JLINK_PATH", "JLINK_PATH"},
|
{"JLINK_PATH", "JLINK_PATH"},
|
||||||
{"TVII_GRAPHICS_DRIVER_DIR", "TVII_GRAPHICS_DRIVER_DIR"},
|
{"TVII_GRAPHICS_DRIVER_DIR", "TVII_GRAPHICS_DRIVER_DIR"},
|
||||||
{"CYPRESS_AUTO_FLASH_UTILITY_DIR", "CYPRESS_AUTO_FLASH_UTILITY_DIR"},
|
{"CYPRESS_AUTO_FLASH_UTILITY_DIR", "CYPRESS_AUTO_FLASH_UTILITY_DIR"},
|
||||||
|
@@ -255,8 +255,10 @@ void DeviceSettingsWidget::testDevice()
|
|||||||
{
|
{
|
||||||
const IDevice::ConstPtr &device = currentDevice();
|
const IDevice::ConstPtr &device = currentDevice();
|
||||||
QTC_ASSERT(device && device->hasDeviceTester(), return);
|
QTC_ASSERT(device && device->hasDeviceTester(), return);
|
||||||
DeviceTestDialog dlg(m_deviceManager->mutableDevice(device->id()), this);
|
auto dlg = new DeviceTestDialog(m_deviceManager->mutableDevice(device->id()), this);
|
||||||
dlg.exec();
|
dlg->setAttribute(Qt::WA_DeleteOnClose);
|
||||||
|
dlg->setModal(true);
|
||||||
|
dlg->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceSettingsWidget::handleDeviceUpdated(Id id)
|
void DeviceSettingsWidget::handleDeviceUpdated(Id id)
|
||||||
|
@@ -521,6 +521,19 @@ void JsonWizardFactory::registerGeneratorFactory(JsonWizardGeneratorFactory *fac
|
|||||||
s_generatorFactories.append(factory);
|
s_generatorFactories.append(factory);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static QString qmlProjectName(const FilePath &folder)
|
||||||
|
{
|
||||||
|
FilePath currentFolder = folder;
|
||||||
|
while (!currentFolder.isEmpty()) {
|
||||||
|
const QList<FilePath> fileList = currentFolder.dirEntries({"*.qmlproject"});
|
||||||
|
if (!fileList.isEmpty())
|
||||||
|
return fileList.first().baseName();
|
||||||
|
currentFolder = currentFolder.parentDir();
|
||||||
|
}
|
||||||
|
|
||||||
|
return {};
|
||||||
|
}
|
||||||
|
|
||||||
Wizard *JsonWizardFactory::runWizardImpl(const FilePath &path, QWidget *parent,
|
Wizard *JsonWizardFactory::runWizardImpl(const FilePath &path, QWidget *parent,
|
||||||
Id platform,
|
Id platform,
|
||||||
const QVariantMap &variables, bool showWizard)
|
const QVariantMap &variables, bool showWizard)
|
||||||
@@ -545,6 +558,7 @@ Wizard *JsonWizardFactory::runWizardImpl(const FilePath &path, QWidget *parent,
|
|||||||
wizard->setValue(i.key(), i.value());
|
wizard->setValue(i.key(), i.value());
|
||||||
|
|
||||||
wizard->setValue(QStringLiteral("InitialPath"), path.toString());
|
wizard->setValue(QStringLiteral("InitialPath"), path.toString());
|
||||||
|
wizard->setValue(QStringLiteral("QmlProjectName"), qmlProjectName(path));
|
||||||
wizard->setValue(QStringLiteral("Platform"), platform.toString());
|
wizard->setValue(QStringLiteral("Platform"), platform.toString());
|
||||||
|
|
||||||
QString kindStr = QLatin1String(Core::Constants::WIZARD_KIND_UNKNOWN);
|
QString kindStr = QLatin1String(Core::Constants::WIZARD_KIND_UNKNOWN);
|
||||||
|
@@ -9,6 +9,8 @@ UTILS_DIR = $$PWD/../../libs/utils
|
|||||||
|
|
||||||
DEFINES *= QTCREATOR_UTILS_STATIC_LIB
|
DEFINES *= QTCREATOR_UTILS_STATIC_LIB
|
||||||
|
|
||||||
|
win32: LIBS*= -luser32
|
||||||
|
|
||||||
INCLUDEPATH += $$UTILS_DIR
|
INCLUDEPATH += $$UTILS_DIR
|
||||||
|
|
||||||
HEADERS += \
|
HEADERS += \
|
||||||
|
@@ -9,6 +9,11 @@ QtcTool {
|
|||||||
cpp.defines: base.concat("QTCREATOR_UTILS_STATIC_LIB")
|
cpp.defines: base.concat("QTCREATOR_UTILS_STATIC_LIB")
|
||||||
cpp.includePaths: base.concat(pathToUtils)
|
cpp.includePaths: base.concat(pathToUtils)
|
||||||
|
|
||||||
|
Properties {
|
||||||
|
condition: qbs.targetOS.contains("windows")
|
||||||
|
cpp.dynamicLibraries: "user32"
|
||||||
|
}
|
||||||
|
|
||||||
files: [
|
files: [
|
||||||
"launcherlogging.cpp",
|
"launcherlogging.cpp",
|
||||||
"launcherlogging.h",
|
"launcherlogging.h",
|
||||||
|