Merge remote-tracking branch 'origin/6.0' into qds-2.3

Change-Id: I92481f36fb28a801ae3bbbf68733e8410d212ee5
This commit is contained in:
Tim Jenssen
2021-11-30 17:45:08 +01:00
41 changed files with 256 additions and 108 deletions

View File

@@ -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
View File

@@ -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

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 7.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 154 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 158 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -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

View File

@@ -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++

View File

@@ -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:

View File

@@ -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

View File

@@ -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}.

View File

@@ -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.

View File

@@ -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}.

View File

@@ -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

View File

@@ -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

View File

@@ -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}

View File

@@ -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.

View File

@@ -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

View 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.

View File

@@ -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:

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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);

View File

@@ -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;

View File

@@ -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"},

View File

@@ -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)

View File

@@ -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);

View File

@@ -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 += \

View File

@@ -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",