From a8b689ae9b6c68d52f17343792bc649af068ca52 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 29 Feb 2024 12:19:54 +0100 Subject: Debugger: Fix register display for LLDB and CDB Change-Id: Ia157c0c03168e91b11d837d6355e61e10afd9728 Reviewed-by: Christian Stenger Reviewed-by: Reviewed-by: David Schulz --- src/plugins/debugger/gdb/gdbengine.cpp | 2 +- src/plugins/debugger/registerhandler.cpp | 3 ++- src/plugins/debugger/registerhandler.h | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 9efc98f24c..3964589ef5 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -3432,7 +3432,7 @@ void GdbEngine::handleRegisterListing(const DebuggerResponse &response) reg.name = parts.at(0); reg.size = parts.at(4).toInt(); reg.reportedType = parts.at(5); - reg.groups = Utils::toSet(parts.at(6).split(',')); + reg.groups = parts.at(6).split(','); m_registers[gdbRegisterNumber] = reg; } } diff --git a/src/plugins/debugger/registerhandler.cpp b/src/plugins/debugger/registerhandler.cpp index 64f82052bf..348888f29b 100644 --- a/src/plugins/debugger/registerhandler.cpp +++ b/src/plugins/debugger/registerhandler.cpp @@ -676,7 +676,8 @@ void RegisterHandler::updateRegister(const Register &r) { bool sort = false; bool changed = false; - for (const QString &group : r.groups) { + const QStringList groups = r.groups.isEmpty() ? QStringList{"all"} : r.groups; + for (const QString &group : groups) { RegisterGroup *regGr = m_registerGroups.value(group, nullptr); if (!regGr) { sort = true; diff --git a/src/plugins/debugger/registerhandler.h b/src/plugins/debugger/registerhandler.h index 0640a42bdc..8a02fd2eaa 100644 --- a/src/plugins/debugger/registerhandler.h +++ b/src/plugins/debugger/registerhandler.h @@ -72,7 +72,7 @@ public: RegisterValue value; RegisterValue previousValue; QString description; - QSet groups; + QStringList groups; int size = 0; RegisterKind kind = UnknownRegister; }; -- cgit v1.2.3 From 63a88562510cf38b967261d83da022bdb278cdc1 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 29 Feb 2024 12:51:14 +0100 Subject: ClangFormat: Do not show floating widget The widget is visible by default and will be shown when it gets added to its parent widget. This patch avoids a short popup of the widget which is not added to its parent when opening the C++ settings. Amends e1f7469afb32efa51d665c9211767b214cd93573. Change-Id: I7fd40e1fff4872c725ec84b5d1c1e60d6b2b22ce Reviewed-by: Artem Sokolovskii --- src/plugins/clangformat/clangformatconfigwidget.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/plugins/clangformat/clangformatconfigwidget.cpp b/src/plugins/clangformat/clangformatconfigwidget.cpp index 98de337022..99b8302d36 100644 --- a/src/plugins/clangformat/clangformatconfigwidget.cpp +++ b/src/plugins/clangformat/clangformatconfigwidget.cpp @@ -227,8 +227,6 @@ void ClangFormatConfigWidget::initEditor(TextEditor::ICodeStylePreferences *code QShortcut *saveSC = new QShortcut(QKeySequence("Ctrl+S"), this); connect(saveSC, &QShortcut::activated, this, [this] { apply(); }); - - m_editorScrollArea->show(); } void ClangFormatConfigWidget::initPreview(TextEditor::ICodeStylePreferences *codeStyle) -- cgit v1.2.3 From cc763c80d784e530cda6d767a1d4e35d8716c607 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 29 Feb 2024 13:41:45 +0100 Subject: ClangCodeModel: Improve debug output for semantic highlighting Previously, the final highlighting results we showed were incomplete and out of order. Change-Id: If18062cc5a7f3156d6bb0b282aed33906cdef910 Reviewed-by: David Schulz --- src/plugins/clangcodemodel/clangdsemantichighlighting.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/clangcodemodel/clangdsemantichighlighting.cpp b/src/plugins/clangcodemodel/clangdsemantichighlighting.cpp index dd63565bd5..c5bc3d7235 100644 --- a/src/plugins/clangcodemodel/clangdsemantichighlighting.cpp +++ b/src/plugins/clangcodemodel/clangdsemantichighlighting.cpp @@ -386,8 +386,6 @@ void doSemanticHighlighting( } if (isOutputParameter(token)) styles.mixinStyles.push_back(C_OUTPUT_ARGUMENT); - qCDebug(clangdLogHighlight) << "adding highlighting result" - << token.line << token.column << token.length << int(styles.mainStyle); return HighlightingResult(token.line, token.column, token.length, styles); }; @@ -420,6 +418,8 @@ void doSemanticHighlighting( } QList virtualRanges; for (const HighlightingResult &r : results) { + qCDebug(clangdLogHighlight) + << '\t' << r.line << r.column << r.length << int(r.textStyles.mainStyle); if (r.textStyles.mainStyle != C_VIRTUAL_METHOD) continue; const Position startPos(r.line - 1, r.column - 1); -- cgit v1.2.3 From 38ea6224164887024c96f5f5b6f655fe250ad497 Mon Sep 17 00:00:00 2001 From: Artem Sokolovskii Date: Thu, 29 Feb 2024 12:35:57 +0100 Subject: TextEditor: Fix jump to a search result to a folded block Change-Id: Id9963bdf2a02930911753af046443e9b657bc9b9 Reviewed-by: Reviewed-by: David Schulz --- src/plugins/texteditor/texteditor.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index baf027d124..054e65193f 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -3552,6 +3552,7 @@ void TextEditorWidget::restoreState(const QByteArray &state) QTC_ASSERT(documentLayout, return); documentLayout->requestUpdate(); documentLayout->emitDocumentSizeChanged(); + d->updateCursorPosition(); } }; if (!singleShotAfterHighlightingDone(foldingRestore)) @@ -6696,6 +6697,9 @@ void TextEditorWidget::ensureBlockIsUnfolded(QTextBlock block) void TextEditorWidgetPrivate::toggleBlockVisible(const QTextBlock &block) { + if (q->singleShotAfterHighlightingDone([this, block] { toggleBlockVisible(block); })) + return; + auto documentLayout = qobject_cast(q->document()->documentLayout()); QTC_ASSERT(documentLayout, return); -- cgit v1.2.3 From 251a8a22102501097c54a7cf527b2950fd27cf7c Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Thu, 29 Feb 2024 13:58:31 +0100 Subject: Utils: Display error message boxes on missing dlls This used to work in previou Qt Creator versions. Task-number: QTCREATORBUG-29662 Change-Id: I97b0b15edbc39c2d6c11bb7d71cacd7e006a26f5 Reviewed-by: Marcus Tillmanns --- src/libs/utils/processhelper.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/libs/utils/processhelper.cpp b/src/libs/utils/processhelper.cpp index 2ca23fe138..6045b77bec 100644 --- a/src/libs/utils/processhelper.cpp +++ b/src/libs/utils/processhelper.cpp @@ -59,9 +59,6 @@ void ProcessStartHandler::setWindowsSpecificStartupFlags(bool belowNormalPriorit bool createConsoleWindow) { #ifdef Q_OS_WIN - if (!belowNormalPriority && !createConsoleWindow) - return; - m_process->setCreateProcessArgumentsModifier( [belowNormalPriority, createConsoleWindow](QProcess::CreateProcessArguments *args) { if (createConsoleWindow) { @@ -71,6 +68,8 @@ void ProcessStartHandler::setWindowsSpecificStartupFlags(bool belowNormalPriorit if (belowNormalPriority) args->flags |= BELOW_NORMAL_PRIORITY_CLASS; + + args->flags |= CREATE_DEFAULT_ERROR_MODE; }); #else // Q_OS_WIN Q_UNUSED(belowNormalPriority) -- cgit v1.2.3 From 02bac284885be6760102f92ba3eadb0bd9354d24 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Thu, 29 Feb 2024 14:34:26 +0100 Subject: TextEditor: add mime type for device tree source files Fixes: QTCREATORBUG-19029 Change-Id: I1959681cb7e0f9466cea3344836d7029a98b4548 Reviewed-by: Eike Ziller --- src/plugins/texteditor/TextEditor.json.in | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/plugins/texteditor/TextEditor.json.in b/src/plugins/texteditor/TextEditor.json.in index 5fbf3e3067..447d9c91c6 100644 --- a/src/plugins/texteditor/TextEditor.json.in +++ b/src/plugins/texteditor/TextEditor.json.in @@ -15,5 +15,15 @@ "Category" : "Core", "Description" : "Text editor framework and the implementation of the basic text editor.", "Url" : "http://www.qt.io", - ${IDE_PLUGIN_DEPENDENCIES} + ${IDE_PLUGIN_DEPENDENCIES}, + "Mimetypes" : [ + "", + "", + " ", + " Device tree source files", + " ", + " ", + " ", + "" + ] } -- cgit v1.2.3 From e7468d060c854eae241f6cb18c81c7f679ff36ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Wed, 28 Feb 2024 10:57:12 +0100 Subject: Mention installer issue in changelog Users should know before downloading. Might also avoid some duplicate bugreports. Change-Id: Ib2d5964fcbb314d7b1c25a281bf5c255a47b3e86 Reviewed-by: Eike Ziller Reviewed-by: Leena Miettinen --- dist/changelog/changes-13.0.0.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/dist/changelog/changes-13.0.0.md b/dist/changelog/changes-13.0.0.md index 6ca281668f..82530d2976 100644 --- a/dist/changelog/changes-13.0.0.md +++ b/dist/changelog/changes-13.0.0.md @@ -41,6 +41,10 @@ General ([QTCREATORBUG-29886](https://bugreports.qt.io/browse/QTCREATORBUG-29886)) * Fixed issues with the window actions ([QTCREATORBUG-30381](https://bugreports.qt.io/browse/QTCREATORBUG-30381)) +* Known Issues + * Installers provided by The Qt Company mostly display English text, not + the system's language + ([QTIFW-3310](https://bugreports.qt.io/browse/QTIFW-3310)) Editing ------- -- cgit v1.2.3 From 87f2e9e190ee0df75ff2f9a16b694c152823f6d9 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 23 Feb 2024 13:04:00 +0100 Subject: Doc: Describe launching the debugger from the locator The "dr" locator filter was added. Task-number: QTCREATORBUG-30209 Change-Id: I25efd162c7adbff90e0c31c0965c30053ea4a64b Reviewed-by: hjk Reviewed-by: Eike Ziller --- .../src/debugger/creator-only/creator-debugger.qdoc | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc index 914ee67465..34ea75fc52 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc @@ -115,9 +115,17 @@ \title Launching the Debugger - To start an application from an open project under the control of a - debugger, select the \inlineimage icons/qtcreator-debug-button.png - (\uicontrol {Start Debugging of Startup Project}) button or press \key F5. + You can start an application from an open project under the control of a + debugger in the following ways: + + \list + \li Select \inlineimage icons/qtcreator-debug-button.png + (\uicontrol {Start Debugging of Startup Project}). + \li Press \key F5. + \li Enter \c {dr} in the locator, and select the project to debug. + \li Go to \uicontrol Debug > \uicontrol {Start Debugging} > + \uicontrol {Start Debugging of Startup Project}. + \endlist \QC checks whether the compiled application is up-to-date, and rebuilds and deploys it if you set the \uicontrol {Build before deploying} field to -- cgit v1.2.3 From 2e45d1d85ac3a62c44d42e6b1e0b4c1f3b19e2ab Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 28 Feb 2024 17:07:13 +0100 Subject: CppEditor: Make two test cases ClangFormat-compatible Change-Id: I5e9df40de3e13f0941c0f8c14385de43e828b5d2 Reviewed-by: Reviewed-by: Christian Stenger Reviewed-by: Qt CI Bot --- src/plugins/cppeditor/cppdoxygen_test.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/plugins/cppeditor/cppdoxygen_test.cpp b/src/plugins/cppeditor/cppdoxygen_test.cpp index 2cab76ee49..c1799b3b45 100644 --- a/src/plugins/cppeditor/cppdoxygen_test.cpp +++ b/src/plugins/cppeditor/cppdoxygen_test.cpp @@ -225,26 +225,30 @@ void DoxygenTest::testBasic_data() /// test cpp style doxygen comment when inside a indented scope QTest::newRow("cpp_styleA_indented") << _( - " bool preventFolding;\n" + "void func() {\n" " ///|\n" " int a;\n" + "}\n" ) << _( - " bool preventFolding;\n" + "void func() {\n" " ///\n" " /// \\brief a\n" " ///\n" - " int a;\n") << int(CommandPrefix::Auto); + " int a;\n" + "}\n") << int(CommandPrefix::Auto); QTest::newRow("cpp_styleB_indented") << _( - " bool preventFolding;\n" + "void func() {\n" " //!|\n" " int a;\n" + "}\n" ) << _( - " bool preventFolding;\n" + "void func() {\n" " //!\n" " //! \\brief a\n" " //!\n" - " int a;\n") << int(CommandPrefix::Auto); + " int a;\n" + "}\n") << int(CommandPrefix::Auto); QTest::newRow("cpp_styleA_indented_preserve_mixed_indention_continuation") << _( "\t bool preventFolding;\n" -- cgit v1.2.3 From 3aa801ca9442167408835364cbb0a759ab0b5ee3 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 28 Feb 2024 17:23:41 +0100 Subject: CppEditor: Mark two tests as incompatible with ClangFormat Change-Id: I95771a3f7fb78d0b7700dc52fdbe7c1e17d00f74 Reviewed-by: Reviewed-by: Christian Stenger --- src/plugins/cppeditor/cppdoxygen_test.cpp | 8 ++++++++ src/plugins/cppeditor/cppquickfix_test.cpp | 8 -------- src/plugins/cppeditor/cpptoolstestcase.cpp | 11 +++++++++++ src/plugins/cppeditor/cpptoolstestcase.h | 2 ++ 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/plugins/cppeditor/cppdoxygen_test.cpp b/src/plugins/cppeditor/cppdoxygen_test.cpp index c1799b3b45..2d85345303 100644 --- a/src/plugins/cppeditor/cppdoxygen_test.cpp +++ b/src/plugins/cppeditor/cppdoxygen_test.cpp @@ -495,6 +495,14 @@ void DoxygenTest::runTest(const QByteArray &original, QCoreApplication::sendEvent(testDocument.m_editorWidget, &event); const QByteArray result = testDocument.m_editorWidget->document()->toPlainText().toUtf8(); + if (isClangFormatPresent()) { + QEXPECT_FAIL("noContinuationForExpressionAndComment1", + "ClangFormat indents differently", + Continue); + QEXPECT_FAIL("noContinuationForExpressionAndComment2", + "ClangFormat indents differently", + Continue); + } QCOMPARE(QLatin1String(result), QLatin1String(expected)); testDocument.m_editorWidget->undo(); diff --git a/src/plugins/cppeditor/cppquickfix_test.cpp b/src/plugins/cppeditor/cppquickfix_test.cpp index dd4817ea0d..ac9766414d 100644 --- a/src/plugins/cppeditor/cppquickfix_test.cpp +++ b/src/plugins/cppeditor/cppquickfix_test.cpp @@ -12,8 +12,6 @@ #include "cppsourceprocessertesthelper.h" #include "cpptoolssettings.h" -#include -#include #include #include @@ -5406,12 +5404,6 @@ void QuickfixTest::testInsertDefsFromDecls() void QuickfixTest::testInsertAndFormatDefsFromDecls() { - static const auto isClangFormatPresent = [] { - using namespace ExtensionSystem; - return Utils::contains(PluginManager::plugins(), [](const PluginSpec *plugin) { - return plugin->name() == "ClangFormat" && plugin->isEffectivelyEnabled(); - }); - }; if (!isClangFormatPresent()) QSKIP("This test reqires ClangFormat"); diff --git a/src/plugins/cppeditor/cpptoolstestcase.cpp b/src/plugins/cppeditor/cpptoolstestcase.cpp index a55895affc..b0151e7a81 100644 --- a/src/plugins/cppeditor/cpptoolstestcase.cpp +++ b/src/plugins/cppeditor/cpptoolstestcase.cpp @@ -13,6 +13,9 @@ #include +#include +#include + #include #include @@ -39,6 +42,14 @@ using namespace Utils; namespace CppEditor::Internal::Tests { +bool isClangFormatPresent() +{ + using namespace ExtensionSystem; + return Utils::contains(PluginManager::plugins(), [](const PluginSpec *plugin) { + return plugin->name() == "ClangFormat" && plugin->isEffectivelyEnabled(); + }); +}; + CppTestDocument::CppTestDocument(const QByteArray &fileName, const QByteArray &source, char cursorMarker) : m_fileName(QString::fromUtf8(fileName)) diff --git a/src/plugins/cppeditor/cpptoolstestcase.h b/src/plugins/cppeditor/cpptoolstestcase.h index 13548630e6..99969621b3 100644 --- a/src/plugins/cppeditor/cpptoolstestcase.h +++ b/src/plugins/cppeditor/cpptoolstestcase.h @@ -35,6 +35,8 @@ class CppEditorWidget; namespace Internal::Tests { +bool isClangFormatPresent(); + class CppTestDocument; typedef QSharedPointer TestDocumentPtr; -- cgit v1.2.3 From d6eb041e6dfeb1297c2cf74e7505278921da0973 Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 28 Feb 2024 12:49:35 +0100 Subject: Debugger: Show supported gdb architectures in log ... using a true gem of interface design. Change-Id: I33ee751a0d204ea610d031991f0d472912a065a8 Reviewed-by: Christian Stenger Reviewed-by: --- src/plugins/debugger/gdb/gdbengine.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 3964589ef5..919ee6c753 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -3870,6 +3870,10 @@ void GdbEngine::handleGdbStarted() runCommand({"show version", CB(handleShowVersion)}); runCommand({"show debug-file-directory", CB(handleDebugInfoLocation)}); + // Show supported architectures. + runCommand({"set max-completions 1000"}); // gdb-multiarch needs ~250 + runCommand({"complete set arch "}); // Keep the space! + //runCommand("-enable-timings"); //rurun print static-members off"); // Seemingly doesn't work. //runCommand("set debug infrun 1"); -- cgit v1.2.3 From dfb685d64caedb126cda25a54655bdcb2252b8c2 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 29 Feb 2024 15:54:21 +0100 Subject: ProjectExplorer: Employ FuzzyMatcher in run config creation dialog ... when filtering the candidates. Change-Id: Ia95475ae3ee2a6eab2c9551ed22f97a9540d3503 Reviewed-by: Marcus Tillmanns --- src/plugins/projectexplorer/addrunconfigdialog.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/projectexplorer/addrunconfigdialog.cpp b/src/plugins/projectexplorer/addrunconfigdialog.cpp index 4457bf0700..7cf96920e8 100644 --- a/src/plugins/projectexplorer/addrunconfigdialog.cpp +++ b/src/plugins/projectexplorer/addrunconfigdialog.cpp @@ -9,6 +9,7 @@ #include #include +#include #include #include @@ -129,7 +130,7 @@ AddRunConfigDialog::AddRunConfigDialog(Target *target, QWidget *parent) buttonBox->button(QDialogButtonBox::Ok)->setText(Tr::tr("Create")); connect(filterEdit, &FancyLineEdit::textChanged, this, [proxyModel](const QString &text) { - proxyModel->setFilterRegularExpression(QRegularExpression(text, QRegularExpression::CaseInsensitiveOption)); + proxyModel->setFilterRegularExpression(FuzzyMatcher::createRegExp(text)); }); connect(m_view, &TreeView::doubleClicked, this, [this] { accept(); }); const auto updateOkButton = [buttonBox, this] { -- cgit v1.2.3 From 4f30c2b4eda72528c975251de0052104c5c8db66 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Thu, 29 Feb 2024 16:02:33 +0100 Subject: Welcome: Fix the hover background color It used the wrong color token. With the correct one, the hover effect is a bit less prominent. Change-Id: I95a1f5a92f95d4055ae8bce703fdc633b122ac59 Reviewed-by: hjk --- src/plugins/coreplugin/welcomepagehelper.cpp | 13 +++++-------- src/plugins/coreplugin/welcomepagehelper.h | 4 ++++ src/plugins/extensionmanager/extensionsbrowser.cpp | 11 +++++++---- src/plugins/projectexplorer/projectwelcomepage.cpp | 6 ++---- 4 files changed, 18 insertions(+), 16 deletions(-) diff --git a/src/plugins/coreplugin/welcomepagehelper.cpp b/src/plugins/coreplugin/welcomepagehelper.cpp index 636888d6b4..c1cf35beb3 100644 --- a/src/plugins/coreplugin/welcomepagehelper.cpp +++ b/src/plugins/coreplugin/welcomepagehelper.cpp @@ -856,10 +856,8 @@ void ListItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti painter->save(); painter->translate(bgRGlobal.topLeft()); - const QColor fill(themeColor(hovered ? Theme::Token_Foreground_Muted - : Theme::Token_Background_Muted)); - const QPen pen(themeColor(hovered ? Theme::Token_Foreground_Muted - : Theme::Token_Stroke_Subtle), itemOutlineWidth); + const QColor fill(themeColor(hovered ? cardHoverBackground : cardDefaultBackground)); + const QPen pen(themeColor(hovered ? cardHoverStroke : cardDefaultStroke), itemOutlineWidth); WelcomePageHelpers::drawCardBackground(painter, bgR, fill, pen, itemCornerRounding); const int shiftY = thumbnailAreaR.bottom(); @@ -915,7 +913,7 @@ void ListItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti constexpr int filterMargin = hoverBlurRadius; QImage thumbnail(bgR.size() + QSize(filterMargin, filterMargin) * 2, QImage::Format_ARGB32_Premultiplied); - thumbnail.fill(themeColor(Theme::Token_Foreground_Muted)); + thumbnail.fill(themeColor(cardHoverBackground)); QPainter thumbnailPainter(&thumbnail); thumbnailPainter.translate(filterMargin, filterMargin); thumbnailPainter.fillRect(thumbnailAreaR, @@ -924,8 +922,7 @@ void ListItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti thumbnailPainter.setPen(titleTF.color()); drawPixmapOverlay(item, &thumbnailPainter, option, thumbnailAreaR); thumbnailPainter.setOpacity(1.0 - hoverBlurOpacity); - thumbnailPainter.fillRect(thumbnail.rect(), - themeColor(Theme::Token_Foreground_Muted)); + thumbnailPainter.fillRect(thumbnail.rect(), themeColor(cardHoverBackground)); thumbnailPainter.end(); qt_blurImage(thumbnail, hoverBlurRadius, false, false); @@ -944,7 +941,7 @@ void ListItemDelegate::paint(QPainter *painter, const QStyleOptionViewItem &opti const QPixmap thumbnailPortionPM = m_blurredThumbnail.copy(backgroundPortionR); painter->drawPixmap(backgroundPortionR.topLeft(), thumbnailPortionPM); } else { - painter->fillRect(thumbnailAreaR, themeColor(Theme::Token_Foreground_Muted)); + painter->fillRect(thumbnailAreaR, themeColor(cardHoverBackground)); } } diff --git a/src/plugins/coreplugin/welcomepagehelper.h b/src/plugins/coreplugin/welcomepagehelper.h index 6856a59a99..84a6ec358b 100644 --- a/src/plugins/coreplugin/welcomepagehelper.h +++ b/src/plugins/coreplugin/welcomepagehelper.h @@ -59,6 +59,10 @@ public: CORE_EXPORT void setBackgroundColor(QWidget *widget, Utils::Theme::Color colorRole); constexpr qreal defaultCardBackgroundRounding = 3.75; +constexpr Utils::Theme::Color cardDefaultBackground = Utils::Theme::Token_Background_Muted; +constexpr Utils::Theme::Color cardDefaultStroke = Utils::Theme::Token_Stroke_Subtle; +constexpr Utils::Theme::Color cardHoverBackground = Utils::Theme::Token_Foreground_Subtle; +constexpr Utils::Theme::Color cardHoverStroke = cardHoverBackground; CORE_EXPORT void drawCardBackground(QPainter *painter, const QRectF &rect, const QBrush &fill, const QPen &pen = QPen(Qt::NoPen), qreal rounding = defaultCardBackgroundRounding); diff --git a/src/plugins/extensionmanager/extensionsbrowser.cpp b/src/plugins/extensionmanager/extensionsbrowser.cpp index dba1936d60..d83c1ef3ee 100644 --- a/src/plugins/extensionmanager/extensionsbrowser.cpp +++ b/src/plugins/extensionmanager/extensionsbrowser.cpp @@ -329,10 +329,13 @@ public: { const bool selected = option.state & QStyle::State_Selected; const bool hovered = option.state & QStyle::State_MouseOver; - const QColor fillColor = creatorTheme()->color(hovered ? Theme::Token_Foreground_Muted - : Theme::Token_Background_Muted); - const QColor strokeColor = creatorTheme()->color(selected ? Theme::Token_Stroke_Strong - : Theme::Token_Stroke_Subtle); + const QColor fillColor = + creatorTheme()->color(hovered ? WelcomePageHelpers::cardHoverBackground + : WelcomePageHelpers::cardDefaultBackground); + const QColor strokeColor = + creatorTheme()->color(selected ? Theme::Token_Stroke_Strong + : hovered ? WelcomePageHelpers::cardHoverStroke + : WelcomePageHelpers::cardDefaultStroke); WelcomePageHelpers::drawCardBackground(painter, itemRect, fillColor, strokeColor); } { diff --git a/src/plugins/projectexplorer/projectwelcomepage.cpp b/src/plugins/projectexplorer/projectwelcomepage.cpp index 431fa8ee1d..5ca983329e 100644 --- a/src/plugins/projectexplorer/projectwelcomepage.cpp +++ b/src/plugins/projectexplorer/projectwelcomepage.cpp @@ -232,10 +232,8 @@ static QPixmap pixmap(const QString &id, const Theme::Color color) static void drawBackgroundRect(QPainter *painter, const QRectF &rect, bool hovered) { - const QColor fill(themeColor(hovered ? Theme::Token_Foreground_Muted - : Theme::Token_Background_Muted)); - const QPen pen(themeColor(hovered ? Theme::Token_Foreground_Muted - : Theme::Token_Stroke_Subtle)); + const QColor fill(themeColor(hovered ? cardHoverBackground : cardDefaultBackground)); + const QPen pen(themeColor(hovered ? cardHoverStroke : cardDefaultStroke)); const qreal rounding = s(defaultCardBackgroundRounding * 1000) / 1000.0; const qreal saneRounding = rounding <= 2 ? 0 : rounding; -- cgit v1.2.3 From 53eb67e4838d8c6c2131da0809ffe606917690ed Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 1 Mar 2024 07:56:21 +0100 Subject: Axivion: Improve sort indicator icon Change-Id: I3579cd460644867cddf491365780c0fd76f2c810 Reviewed-by: hjk --- src/plugins/axivion/issueheaderview.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/plugins/axivion/issueheaderview.cpp b/src/plugins/axivion/issueheaderview.cpp index ce432eb126..a9dfd38b8d 100644 --- a/src/plugins/axivion/issueheaderview.cpp +++ b/src/plugins/axivion/issueheaderview.cpp @@ -16,13 +16,16 @@ static QIcon iconForSorted(SortOrder order) { const Utils::Icon UNSORTED( {{":/axivion/images/sortAsc.png", Utils::Theme::IconsDisabledColor}, - {":/axivion/images/sortDesc.png", Utils::Theme::IconsDisabledColor}}); + {":/axivion/images/sortDesc.png", Utils::Theme::IconsDisabledColor}}, + Utils::Icon::MenuTintedStyle); const Utils::Icon SORT_ASC( {{":/axivion/images/sortAsc.png", Utils::Theme::PaletteText}, - {":/axivion/images/sortDesc.png", Utils::Theme::IconsDisabledColor}}); + {":/axivion/images/sortDesc.png", Utils::Theme::IconsDisabledColor}}, + Utils::Icon::MenuTintedStyle); const Utils::Icon SORT_DESC( {{":/axivion/images/sortAsc.png", Utils::Theme::IconsDisabledColor}, - {":/axivion/images/sortDesc.png", Utils::Theme::PaletteText}}); + {":/axivion/images/sortDesc.png", Utils::Theme::PaletteText}}, + Utils::Icon::MenuTintedStyle); static const QIcon unsorted = UNSORTED.icon(); static const QIcon sortedAsc = SORT_ASC.icon(); static const QIcon sortedDesc = SORT_DESC.icon(); -- cgit v1.2.3 From b6b5f04264fae1bd68278388a1448847952b1fbe Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Fri, 1 Mar 2024 07:10:01 +0100 Subject: CompilerExplorer: Fix value vs. volatileValue Previously adding a new Compiler would not compile the current source, but the last "applied" source. Change-Id: I0979d21a61808e7bc03e5b72e9c8a2492200c8f6 Reviewed-by: hjk --- src/plugins/compilerexplorer/compilerexplorereditor.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/compilerexplorer/compilerexplorereditor.cpp b/src/plugins/compilerexplorer/compilerexplorereditor.cpp index 0defb33163..c39b594d48 100644 --- a/src/plugins/compilerexplorer/compilerexplorereditor.cpp +++ b/src/plugins/compilerexplorer/compilerexplorereditor.cpp @@ -389,7 +389,7 @@ CompilerWidget::CompilerWidget(const std::shared_ptr &sourceSett removeCompilerBtn->setToolTip(Tr::tr("Remove Compiler")); connect(removeCompilerBtn, &QToolButton::clicked, this, &CompilerWidget::remove); - compile(m_sourceSettings->source()); + compile(m_sourceSettings->source.volatileValue()); connect(&m_sourceSettings->source, &Utils::StringAspect::volatileValueChanged, this, [this] { compile(m_sourceSettings->source.volatileValue()); @@ -459,7 +459,7 @@ void CompilerWidget::doCompile() { using namespace Api; - QString compilerId = m_compilerSettings->compiler(); + QString compilerId = m_compilerSettings->compiler.volatileValue(); if (compilerId.isEmpty()) compilerId = "clang_trunk"; -- cgit v1.2.3 From b5a6f851a3d42ec0fb9ff4cffbb3e65fe0540035 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Fri, 1 Mar 2024 06:37:04 +0100 Subject: CompilerExplorer: Adjust Terminal font size Adjust the output Terminal font size based on the text editor font size settings. Change-Id: Id1047f0fce0ac781cbc51b01f0df9657b179d71a Reviewed-by: David Schulz --- src/libs/solutions/terminal/terminalview.h | 4 ++-- .../compilerexplorer/compilerexplorereditor.cpp | 24 ++++++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/libs/solutions/terminal/terminalview.h b/src/libs/solutions/terminal/terminalview.h index 4079eb7ddc..c69fbcd14e 100644 --- a/src/libs/solutions/terminal/terminalview.h +++ b/src/libs/solutions/terminal/terminalview.h @@ -32,8 +32,8 @@ struct SearchHit bool operator==(const SearchHit &other) const { return !operator!=(other); } }; -QString defaultFontFamily(); -int defaultFontSize(); +QString TERMINAL_EXPORT defaultFontFamily(); +int TERMINAL_EXPORT defaultFontSize(); class TERMINAL_EXPORT TerminalView : public QAbstractScrollArea { diff --git a/src/plugins/compilerexplorer/compilerexplorereditor.cpp b/src/plugins/compilerexplorer/compilerexplorereditor.cpp index c39b594d48..651ee59620 100644 --- a/src/plugins/compilerexplorer/compilerexplorereditor.cpp +++ b/src/plugins/compilerexplorer/compilerexplorereditor.cpp @@ -446,6 +446,22 @@ Core::SearchableTerminal *CompilerWidget::createTerminal() m_resultTerminal->setColors(colors); + auto setFontSize = [this](const TextEditor::FontSettings &fontSettings) { + QFont f; + f.setFixedPitch(true); + f.setFamily(TerminalSolution::defaultFontFamily()); + f.setPointSize(TerminalSolution::defaultFontSize() * (fontSettings.fontZoom() / 100.0f)); + + m_resultTerminal->setFont(f); + }; + + setFontSize(TextEditorSettings::instance()->fontSettings()); + + connect(TextEditorSettings::instance(), + &TextEditorSettings::fontSettingsChanged, + this, + setFontSize); + return m_resultTerminal; } @@ -924,6 +940,14 @@ EditorFactory::EditorFactory() m_actionHandler.setUnhandledCallback( [undoStackFromEditor](Utils::Id cmdId, Core::IEditor *editor) { + if (cmdId == TextEditor::Constants::INCREASE_FONT_SIZE) { + TextEditor::TextEditorSettings::instance()->increaseFontZoom(); + return true; + } else if (cmdId == TextEditor::Constants::DECREASE_FONT_SIZE) { + TextEditor::TextEditorSettings::instance()->decreaseFontZoom(); + return true; + } + if (cmdId != Core::Constants::UNDO && cmdId != Core::Constants::REDO) return false; -- cgit v1.2.3 From 5b276d5940fa12b80bee53946c87fa1fe2983f57 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 29 Feb 2024 08:07:57 +0100 Subject: Android: Use more ICore::dialogParent() This is usually the better choice because it takes dialogs into account. I had one message box vanish behind the rest of Qt Creator, which could be better with this. Change-Id: I47b93e120a9e86f9f81da8e542477f1c6274bf87 Reviewed-by: Assam Boudjelthia --- src/plugins/android/androidsdkmanagerwidget.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/plugins/android/androidsdkmanagerwidget.cpp b/src/plugins/android/androidsdkmanagerwidget.cpp index e5f0d27345..7b1ca4e88f 100644 --- a/src/plugins/android/androidsdkmanagerwidget.cpp +++ b/src/plugins/android/androidsdkmanagerwidget.cpp @@ -7,6 +7,8 @@ #include "androidsdkmodel.h" #include "androidtr.h" +#include + #include #include #include @@ -275,7 +277,7 @@ void AndroidSdkManagerWidget::installEssentials() { m_sdkModel->selectMissingEssentials(); if (!m_sdkModel->missingEssentials().isEmpty()) { - QMessageBox::warning(this, + QMessageBox::warning(Core::ICore::dialogParent(), Tr::tr("Android SDK Changes"), Tr::tr("%1 cannot find the following essential packages: \"%2\".\n" "Install them manually after the current operation is done.\n") @@ -321,8 +323,11 @@ void AndroidSdkManagerWidget::onApplyButton(const QString &extraMessage) QString message = Tr::tr("%n Android SDK packages shall be updated.", "", packagesToUpdate.count()); if (!extraMessage.isEmpty()) message.prepend(extraMessage + "\n\n"); - QMessageBox messageDlg(QMessageBox::Information, Tr::tr("Android SDK Changes"), - message, QMessageBox::Ok | QMessageBox::Cancel, this); + QMessageBox messageDlg(QMessageBox::Information, + Tr::tr("Android SDK Changes"), + message, + QMessageBox::Ok | QMessageBox::Cancel, + Core::ICore::dialogParent()); QString details; if (!uninstallPackages.isEmpty()) -- cgit v1.2.3 From 3ff56b80790dc6054f6994443ab7c59cd91b02b1 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 1 Mar 2024 11:22:10 +0100 Subject: Bump version to 13.0.0-rc1 Change-Id: I5b4efa41aabce4b007308a53ea9ac291a3a3ad58 Reviewed-by: Eike Ziller --- cmake/QtCreatorIDEBranding.cmake | 6 +++--- qbs/modules/qtc/qtc.qbs | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/cmake/QtCreatorIDEBranding.cmake b/cmake/QtCreatorIDEBranding.cmake index 6890a1ef95..070a556d40 100644 --- a/cmake/QtCreatorIDEBranding.cmake +++ b/cmake/QtCreatorIDEBranding.cmake @@ -1,6 +1,6 @@ -set(IDE_VERSION "12.0.83") # The IDE version. -set(IDE_VERSION_COMPAT "12.0.83") # The IDE Compatibility version. -set(IDE_VERSION_DISPLAY "13.0.0-beta2") # The IDE display version. +set(IDE_VERSION "12.0.84") # The IDE version. +set(IDE_VERSION_COMPAT "12.0.84") # The IDE Compatibility version. +set(IDE_VERSION_DISPLAY "13.0.0-rc1") # The IDE display version. set(IDE_COPYRIGHT_YEAR "2024") # The IDE current copyright year. set(IDE_SETTINGSVARIANT "QtProject") # The IDE settings variation. diff --git a/qbs/modules/qtc/qtc.qbs b/qbs/modules/qtc/qtc.qbs index cb40782268..c9bfc919fe 100644 --- a/qbs/modules/qtc/qtc.qbs +++ b/qbs/modules/qtc/qtc.qbs @@ -4,16 +4,16 @@ import qbs.FileInfo import qbs.Utilities Module { - property string qtcreator_display_version: '13.0.0-beta2' + property string qtcreator_display_version: '13.0.0-rc1' property string ide_version_major: '12' property string ide_version_minor: '0' - property string ide_version_release: '83' + property string ide_version_release: '84' property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.' + ide_version_release property string ide_compat_version_major: '12' property string ide_compat_version_minor: '0' - property string ide_compat_version_release: '83' + property string ide_compat_version_release: '84' property string qtcreator_compat_version: ide_compat_version_major + '.' + ide_compat_version_minor + '.' + ide_compat_version_release -- cgit v1.2.3 From 262dcc6643225d413490fbf03a1b1471b380518d Mon Sep 17 00:00:00 2001 From: David Schulz Date: Thu, 29 Feb 2024 13:17:33 +0100 Subject: Core: do not activate open documents entry on right click If we activate an entry before we handle the context menu event we might switch into another mode. For example when right clicking on a ui File. Fixes: QTCREATORBUG-30357 Change-Id: I8de78c3a6bbd9d62e2766ccd2059ee3ee4ef0870 Reviewed-by: Eike Ziller --- src/libs/utils/itemviews.h | 16 ++++++++++++++++ src/plugins/coreplugin/editormanager/openeditorsview.cpp | 9 +++++++++ src/plugins/projectexplorer/projectwindow.cpp | 14 +------------- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/src/libs/utils/itemviews.h b/src/libs/utils/itemviews.h index 50e8a4af01..ff1f5328b1 100644 --- a/src/libs/utils/itemviews.h +++ b/src/libs/utils/itemviews.h @@ -59,6 +59,22 @@ public: BaseT::keyPressEvent(event); } + virtual bool userWantsContextMenu(const QMouseEvent *) const + { + return false; + } + + void mousePressEvent(QMouseEvent *e) override + { + if (!userWantsContextMenu(e)) + BaseT::mousePressEvent(e); + } + + void mouseReleaseEvent(QMouseEvent *e) override + { + if (!userWantsContextMenu(e)) + BaseT::mouseReleaseEvent(e); + } }; class QTCREATOR_UTILS_EXPORT TreeView : public View diff --git a/src/plugins/coreplugin/editormanager/openeditorsview.cpp b/src/plugins/coreplugin/editormanager/openeditorsview.cpp index 350cdac142..cc7451b939 100644 --- a/src/plugins/coreplugin/editormanager/openeditorsview.cpp +++ b/src/plugins/coreplugin/editormanager/openeditorsview.cpp @@ -66,6 +66,8 @@ private: void activateEditor(const QModelIndex &index); void closeDocument(const QModelIndex &index); + bool userWantsContextMenu(const QMouseEvent *) const final; + ProxyModel *m_model; }; @@ -138,6 +140,13 @@ void OpenEditorsWidget::closeDocument(const QModelIndex &index) updateCurrentItem(EditorManager::currentEditor()); } +bool OpenEditorsWidget::userWantsContextMenu(const QMouseEvent *e) const +{ + // block activating on entry on right click otherwise we might switch into another mode + // see QTCREATORBUG-30357 + return e->button() == Qt::RightButton; +} + void OpenEditorsWidget::contextMenuRequested(QPoint pos) { QMenu contextMenu; diff --git a/src/plugins/projectexplorer/projectwindow.cpp b/src/plugins/projectexplorer/projectwindow.cpp index 66dca5ecd5..1c2f04a04c 100644 --- a/src/plugins/projectexplorer/projectwindow.cpp +++ b/src/plugins/projectexplorer/projectwindow.cpp @@ -648,24 +648,12 @@ private: return; } - bool userWantsContextMenu(const QMouseEvent *e) const + bool userWantsContextMenu(const QMouseEvent *e) const final { // On Windows, we get additional mouse events for the item view when right-clicking, // causing unwanted kit activation (QTCREATORBUG-24156). Let's suppress these. return HostOsInfo::isWindowsHost() && e->button() == Qt::RightButton; } - - void mousePressEvent(QMouseEvent *e) final - { - if (!userWantsContextMenu(e)) - BaseTreeView::mousePressEvent(e); - } - - void mouseReleaseEvent(QMouseEvent *e) final - { - if (!userWantsContextMenu(e)) - BaseTreeView::mouseReleaseEvent(e); - } }; class ComboBoxItem : public TreeItem -- cgit v1.2.3 From 6a59cb891b7010cb97fcbdccf2b816ceadb516b6 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 1 Mar 2024 12:22:58 +0100 Subject: Qt/Documentation: Avoid automatic loading of unrelated help files On Linux/KDE systems, the KDE documentation files can be installed in the Qt documentation directory. This leads to a great of documentation files to be loaded by default, which we try to avoid for performance reasons. Restrict the pattern for .qch files to start with a 'q', which still matches the Qt documentation files. If the user wants the documentation of KDE libraries, they can register them manually. Change-Id: Ib658c3b2c26a97ca69a8c0e46a5057a58b5a7ec7 Reviewed-by: Christian Kandeler --- src/plugins/qtsupport/qtversionmanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp index 715eec8aa2..acdaba6282 100644 --- a/src/plugins/qtsupport/qtversionmanager.cpp +++ b/src/plugins/qtsupport/qtversionmanager.cpp @@ -506,7 +506,7 @@ static QList> documentationFiles(QtVersion *v) {v->docsPath().toString() + QChar('/'), v->docsPath().toString() + "/qch/"}); for (const QString &docPath : docPaths) { const QDir versionHelpDir(docPath); - for (const QString &helpFile : versionHelpDir.entryList(QStringList("*.qch"), QDir::Files)) + for (const QString &helpFile : versionHelpDir.entryList(QStringList("q*.qch"), QDir::Files)) files.append({docPath, helpFile}); } return files; -- cgit v1.2.3 From c5cce4233d977a72ee4b99eed3845863cf91c7ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Thu, 29 Feb 2024 14:24:40 +0100 Subject: SquishTests: Update tests for Welcome screen Some tests are failing because of QTCREATORBUG-30466 unless someone resizes Creator's windows manually. Task-number: QTCREATORBUG-30466 Change-Id: Ibeecc2abd85839be3497691912e411862c465a89 Reviewed-by: Christian Stenger --- tests/system/shared/project.py | 12 ++--- tests/system/shared/welcome.py | 39 ++++----------- tests/system/suite_WELP/tst_WELP01/test.py | 55 +++++++++------------- tests/system/suite_WELP/tst_WELP02/test.py | 7 ++- tests/system/suite_WELP/tst_WELP03/test.py | 3 +- tests/system/suite_WELP/tst_WELP04/test.py | 3 +- .../suite_general/tst_session_handling/test.py | 6 +-- 7 files changed, 47 insertions(+), 78 deletions(-) diff --git a/tests/system/shared/project.py b/tests/system/shared/project.py index 5bb724a0b1..71689babf7 100644 --- a/tests/system/shared/project.py +++ b/tests/system/shared/project.py @@ -9,11 +9,11 @@ def openQbsProject(projectPath): def openQmakeProject(projectPath, targets=Targets.desktopTargetClasses(), fromWelcome=False): cleanUpUserFiles(projectPath) if fromWelcome: - wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton('Open Project...') - if not all((wsButtonFrame, wsButtonLabel)): + wsButton = getWelcomeScreenSideBarButton('Open Project...') + if not object.exists(wsButton): test.fatal("Could not find 'Open Project...' button on Welcome Page.") return [] - mouseClick(wsButtonLabel) + mouseClick(wsButton) else: invokeMenuItem("File", "Open File or Project...") selectFromFileDialog(projectPath) @@ -60,11 +60,11 @@ def __createProjectOrFileSelectType__(category, template, fromWelcome = False, i if fromWelcome: if not isProject: test.fatal("'Create Project...' on Welcome screen only handles projects nowadays.") - wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton("Create Project...") - if not all((wsButtonFrame, wsButtonLabel)): + wsButton = getWelcomeScreenSideBarButton("Create Project...") + if not object.exists(wsButton): test.fatal("Could not find 'Create Project...' button on Welcome Page") return [] - mouseClick(wsButtonLabel) + mouseClick(wsButton) elif isProject: invokeMenuItem("File", "New Project...") else: diff --git a/tests/system/shared/welcome.py b/tests/system/shared/welcome.py index 8066f27131..a5ba097ff1 100644 --- a/tests/system/shared/welcome.py +++ b/tests/system/shared/welcome.py @@ -4,30 +4,11 @@ def __childrenOfType__(parentObject, typeName): return [child for child in object.children(parentObject) if className(child) == typeName] -def __getWelcomeScreenButtonHelper__(buttonLabel, widgetWithQFrames, isUrlButton = False): - frames = __childrenOfType__(widgetWithQFrames, 'QWidget') - for frame in frames: - childCount = 1 # incorrect but okay for framed sidebar buttons - if isUrlButton: - childCount = len(__childrenOfType__(frame, 'QLabel')) - for occurrence in range(1, childCount + 1): - label = getChildByClass(frame, 'QLabel', occurrence) - if label is None: - continue - if str(label.text) == buttonLabel: - return frame, label - return None, None - -def getWelcomeScreenSideBarButton(buttonLabel, isUrlButton = False): - sideBar = waitForObject("{container={type='Welcome::Internal::SideArea' unnamed='1' " - "window=':Qt Creator_Core::Internal::MainWindow'} type='QWidget' " - "unnamed='1'}") - return __getWelcomeScreenButtonHelper__(buttonLabel, sideBar, isUrlButton) - -def getWelcomeScreenBottomButton(buttonLabel): - bottomArea = waitForObject("{type='Welcome::Internal::BottomArea' unnamed='1' " - "window=':Qt Creator_Core::Internal::MainWindow'}") - return __getWelcomeScreenButtonHelper__(buttonLabel, bottomArea, False) + +def getWelcomeScreenSideBarButton(buttonLabel): + return ("{text='%s' type='QPushButton' unnamed='1' visible='1' " + "window=':Qt Creator_Core::Internal::MainWindow'}" % buttonLabel) + def getWelcomeTreeView(treeViewLabel): try: @@ -37,11 +18,11 @@ def getWelcomeTreeView(treeViewLabel): return None def switchToSubMode(subModeLabel): - wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton(subModeLabel) - frameAndLabelFound = all((wsButtonFrame, wsButtonLabel)) - if frameAndLabelFound: - mouseClick(wsButtonLabel) - return frameAndLabelFound + wsButton = getWelcomeScreenSideBarButton(subModeLabel) + buttonFound = object.exists(wsButton) + if buttonFound: + mouseClick(wsButton) + return buttonFound def findExampleOrTutorial(tableView, regex, verbose=False): filterModel = __childrenOfType__(tableView, 'QSortFilterProxyModel') diff --git a/tests/system/suite_WELP/tst_WELP01/test.py b/tests/system/suite_WELP/tst_WELP01/test.py index 0bc65d1f00..61ee8a6030 100644 --- a/tests/system/suite_WELP/tst_WELP01/test.py +++ b/tests/system/suite_WELP/tst_WELP01/test.py @@ -14,25 +14,16 @@ def clickItemVerifyHelpCombo(button, expectedHelpComboRegex, testDetails): test.log("Found %s" % str(helpCombo.currentText)) # select "Welcome" page from left toolbar again switchViewTo(ViewConstants.WELCOME) - wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton(getStarted) - return test.verify(all((wsButtonFrame, wsButtonLabel)), + return test.verify(object.exists(getWelcomeScreenSideBarButton(getStarted)), "Verifying: '%s' button is being displayed." % getStarted) def buttonActive(button): - # colors of the default theme for active button on Welcome page - defaultActiveRGB = (69, 206, 85) - # colors of the dark theme for active button on Welcome page - darkActiveRGB = (54, 193, 72) - # QPalette::Window (used background color of Welcome page buttons) - enumQPaletteWindow = 10 - color = button.palette.color(enumQPaletteWindow) - current = (color.red, color.green, color.blue) - return current == defaultActiveRGB or current == darkActiveRGB + return waitForObject(button).checked def waitForButtonsState(projectsActive, examplesActive, tutorialsActive, timeout=5000): - projButton = getWelcomeScreenSideBarButton('Projects')[0] - exmpButton = getWelcomeScreenSideBarButton('Examples')[0] - tutoButton = getWelcomeScreenSideBarButton('Tutorials')[0] - if not all((projButton, exmpButton, tutoButton)): + projButton = getWelcomeScreenSideBarButton('Projects') + exmpButton = getWelcomeScreenSideBarButton('Examples') + tutoButton = getWelcomeScreenSideBarButton('Tutorials') + if not all(map(object.exists, (projButton, exmpButton, tutoButton))): return False return waitFor('buttonActive(projButton) == projectsActive ' 'and buttonActive(exmpButton) == examplesActive ' @@ -65,25 +56,25 @@ def main(): buttonsAndState = {'Projects':False, 'Examples':True, 'Tutorials':False} for button, state in buttonsAndState.items(): - wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton(button) - if test.verify(all((wsButtonFrame, wsButtonLabel)), + wsButton = getWelcomeScreenSideBarButton(button) + if test.verify(object.exists(wsButton), "Verified whether '%s' button is shown." % button): - test.compare(buttonActive(wsButtonFrame), state, + test.compare(buttonActive(wsButton), state, "Verifying whether '%s' button is active (%s)." % (button, state)) # select Projects and roughly check this switchToSubMode('Projects') for button in ['Create Project...', 'Open Project...']: - wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton(button) - if test.verify(all((wsButtonFrame, wsButtonLabel)), + wsButton = getWelcomeScreenSideBarButton(button) + if test.verify(object.exists(wsButton), "Verified whether '%s' button is shown." % button): - test.verify(not buttonActive(wsButtonFrame), + test.verify(not buttonActive(wsButton), "Verifying whether '%s' button is inactive." % button) - wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton(getStarted) - if test.verify(all((wsButtonFrame, wsButtonLabel)), + wsButton = getWelcomeScreenSideBarButton(getStarted) + if test.verify(object.exists(wsButton), "Verifying: Qt Creator displays Welcome Page with '%s' button." % getStarted): - if clickItemVerifyHelpCombo(wsButtonLabel, "Getting Started | Qt Creator Manual", + if clickItemVerifyHelpCombo(wsButton, "Getting Started | Qt Creator Manual", "Verifying: Help with Creator Documentation is being opened."): textUrls = {'Online Community':'https://forum.qt.io', @@ -92,13 +83,14 @@ def main(): 'User Guide':'qthelp://org.qt-project.qtcreator/doc/index.html' } for text, url in textUrls.items(): - button, label = getWelcomeScreenBottomButton(text) - if test.verify(all((button, label)), + button = getWelcomeScreenSideBarButton(text) + if test.verify(object.exists(button), "Verifying whether link button (%s) exists." % text): - test.compare(str(button.toolTip), url, "Verifying URL for %s" % text) - wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton(getStarted) - if wsButtonLabel is not None: - mouseClick(wsButtonLabel) + test.compare(str(waitForObject(button).toolTip), url, + "Verifying URL for %s" % text) + wsButton = getWelcomeScreenSideBarButton(getStarted) + if object.exists(wsButton): + mouseClick(wsButton) qcManualQModelIndexStr = getQModelIndexStr("text~='Qt Creator Manual [0-9.]+'", ":Qt Creator_QHelpContentWidget") if str(waitForObject(":Qt Creator_HelpSelector_QComboBox").currentText) == "(Untitled)": @@ -109,8 +101,7 @@ def main(): # select "Welcome" page from left toolbar again switchViewTo(ViewConstants.WELCOME) - wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton(getStarted) - test.verify(wsButtonFrame is not None and wsButtonLabel is not None, + test.verify(object.exists(getWelcomeScreenSideBarButton(getStarted)), "Verifying: Getting Started topic is being displayed.") # select Examples and roughly check them switchToSubMode('Examples') diff --git a/tests/system/suite_WELP/tst_WELP02/test.py b/tests/system/suite_WELP/tst_WELP02/test.py index d79391d121..add3d28b3a 100644 --- a/tests/system/suite_WELP/tst_WELP02/test.py +++ b/tests/system/suite_WELP/tst_WELP02/test.py @@ -6,8 +6,7 @@ source("../../shared/qtcreator.py") def checkTypeAndProperties(typePropertiesDetails): for (qType, props, detail) in typePropertiesDetails: if qType == "QPushButton": - wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton(props) - test.verify(all((wsButtonFrame, wsButtonLabel)), + test.verify(object.exists(getWelcomeScreenSideBarButton(props)), "Verifying: Qt Creator displays Welcome Page with %s." % detail) elif qType == 'QTreeView': treeView = getWelcomeTreeView(props) @@ -59,8 +58,8 @@ def main(): ) checkTypeAndProperties(typePropDet) - getStartedF, getStartedL = getWelcomeScreenSideBarButton("Get Started") - test.verify(getStartedF is not None and getStartedL is not None, "'Get Started' button found") + test.verify(object.exists(getWelcomeScreenSideBarButton("Get Started")), + "'Get Started' button found") # select "Create Project" and try to create a new project createNewQtQuickApplication(tempDir(), "SampleApp", fromWelcome = True) diff --git a/tests/system/suite_WELP/tst_WELP03/test.py b/tests/system/suite_WELP/tst_WELP03/test.py index b09fa9e2a9..50f7b503cc 100644 --- a/tests/system/suite_WELP/tst_WELP03/test.py +++ b/tests/system/suite_WELP/tst_WELP03/test.py @@ -55,8 +55,7 @@ def main(): qchs.extend([os.path.join(p, "qtopengl.qch"), os.path.join(p, "qtwidgets.qch")]) addHelpDocumentation(qchs) setFixedHelpViewer(HelpViewer.HELPMODE) - wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton('Get Started') - if not test.verify(all((wsButtonFrame, wsButtonLabel)), + if not test.verify(object.exists(getWelcomeScreenSideBarButton('Get Started')), "Verifying: Qt Creator displays Welcome Page with Getting Started."): test.fatal("Something's wrong - leaving test.") invokeMenuItem("File", "Exit") diff --git a/tests/system/suite_WELP/tst_WELP04/test.py b/tests/system/suite_WELP/tst_WELP04/test.py index c9a1806669..6ccf2f0d3a 100644 --- a/tests/system/suite_WELP/tst_WELP04/test.py +++ b/tests/system/suite_WELP/tst_WELP04/test.py @@ -15,8 +15,7 @@ def main(): startQC() if not startedWithoutPluginError(): return - wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton('Get Started') - if not test.verify(all((wsButtonFrame, wsButtonLabel)), + if not test.verify(object.exists(getWelcomeScreenSideBarButton('Get Started')), "Verifying: Qt Creator displays Welcome Page with Getting Started."): test.fatal("Something's wrong - leaving test.") invokeMenuItem("File", "Exit") diff --git a/tests/system/suite_general/tst_session_handling/test.py b/tests/system/suite_general/tst_session_handling/test.py index b535145cc9..305d64895e 100644 --- a/tests/system/suite_general/tst_session_handling/test.py +++ b/tests/system/suite_general/tst_session_handling/test.py @@ -84,11 +84,11 @@ def createAndSwitchToSession(toSession): def checkWelcomePage(sessionName, isCurrent=False): switchViewTo(ViewConstants.WELCOME) - wsButtonFrame, wsButtonLabel = getWelcomeScreenSideBarButton('Projects') - if not all((wsButtonFrame, wsButtonLabel)): + wsButton = getWelcomeScreenSideBarButton('Projects') + if not object.exists(wsButton): test.fatal("Something's pretty wrong - leaving check for WelcomePage.") return - mouseClick(wsButtonLabel) + mouseClick(wsButton) treeView = getWelcomeTreeView("Sessions") if not treeView: test.fatal("Failed to find Sessions tree view - leaving check for WelcomePage.") -- cgit v1.2.3 From 810c9e710686cd8b247f8e50428b42fc79ca1c75 Mon Sep 17 00:00:00 2001 From: Artem Sokolovskii Date: Fri, 1 Mar 2024 12:18:18 +0100 Subject: ClangFormat: Fix vague error message Change-Id: I321d74a80c1735dad3edb6e542451cab3a71a3f7 Reviewed-by: Leena Miettinen --- src/plugins/clangformat/clangformatconfigwidget.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/clangformat/clangformatconfigwidget.cpp b/src/plugins/clangformat/clangformatconfigwidget.cpp index 99b8302d36..9adf94cafc 100644 --- a/src/plugins/clangformat/clangformatconfigwidget.cpp +++ b/src/plugins/clangformat/clangformatconfigwidget.cpp @@ -343,8 +343,8 @@ void ClangFormatConfigWidget::apply() } QMessageBox mBox; - mBox.setText( - Tr::tr("The current settings are not valid. Are you sure you want to apply them?")); + mBox.setText(Tr::tr("The current ClangFormat (C++ > Code Style > ClangFormat) settings are not " + "valid. Are you sure you want to apply them?")); mBox.setStandardButtons(QMessageBox::No | QMessageBox::Yes); mBox.setDefaultButton(QMessageBox::No); if (mBox.exec() == QMessageBox::Yes) -- cgit v1.2.3 From 5e5c86fecbb51763cf655bd9e22aa195e636018e Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 27 Feb 2024 16:08:30 +0100 Subject: Doc: Update Axivion docs You can now view and filter issues from selected results. Task-number: QTCREATORBUG-30209 Change-Id: I175f71589755af3bd75813eea237487128f36c42 Reviewed-by: Christian Stenger --- doc/qtcreator/images/icons/axivion-av.png | Bin 0 -> 153 bytes doc/qtcreator/images/icons/axivion-cl.png | Bin 0 -> 315 bytes doc/qtcreator/images/icons/axivion-cy.png | Bin 0 -> 306 bytes doc/qtcreator/images/icons/axivion-de.png | Bin 0 -> 377 bytes doc/qtcreator/images/icons/axivion-mv.png | Bin 0 -> 253 bytes doc/qtcreator/images/icons/axivion-sv.png | Bin 0 -> 300 bytes .../images/qtcreator-axivion-annotation.webp | Bin 4890 -> 11880 bytes .../images/qtcreator-axivion-issue-search.webp | Bin 0 -> 13232 bytes .../images/qtcreator-axivion-view-rule.webp | Bin 2544 -> 4010 bytes doc/qtcreator/images/qtcreator-axivion-view.webp | Bin 4270 -> 4184 bytes .../qtcreator-edit-dashboard-configuration.webp | Bin 3790 -> 3772 bytes .../images/qtcreator-preferences-axivion.webp | Bin 2470 -> 2156 bytes doc/qtcreator/src/analyze/creator-analyze.qdoc | 2 +- doc/qtcreator/src/analyze/creator-axivion.qdoc | 192 +++++++++++++++------ .../creator-projects-settings-overview.qdoc | 1 + doc/qtcreator/src/qtcreator-toc.qdoc | 1 - 16 files changed, 145 insertions(+), 51 deletions(-) create mode 100644 doc/qtcreator/images/icons/axivion-av.png create mode 100644 doc/qtcreator/images/icons/axivion-cl.png create mode 100644 doc/qtcreator/images/icons/axivion-cy.png create mode 100644 doc/qtcreator/images/icons/axivion-de.png create mode 100644 doc/qtcreator/images/icons/axivion-mv.png create mode 100644 doc/qtcreator/images/icons/axivion-sv.png create mode 100644 doc/qtcreator/images/qtcreator-axivion-issue-search.webp diff --git a/doc/qtcreator/images/icons/axivion-av.png b/doc/qtcreator/images/icons/axivion-av.png new file mode 100644 index 0000000000..54dcd301ea Binary files /dev/null and b/doc/qtcreator/images/icons/axivion-av.png differ diff --git a/doc/qtcreator/images/icons/axivion-cl.png b/doc/qtcreator/images/icons/axivion-cl.png new file mode 100644 index 0000000000..0e2de82f18 Binary files /dev/null and b/doc/qtcreator/images/icons/axivion-cl.png differ diff --git a/doc/qtcreator/images/icons/axivion-cy.png b/doc/qtcreator/images/icons/axivion-cy.png new file mode 100644 index 0000000000..11bddb048e Binary files /dev/null and b/doc/qtcreator/images/icons/axivion-cy.png differ diff --git a/doc/qtcreator/images/icons/axivion-de.png b/doc/qtcreator/images/icons/axivion-de.png new file mode 100644 index 0000000000..9c00fd42b4 Binary files /dev/null and b/doc/qtcreator/images/icons/axivion-de.png differ diff --git a/doc/qtcreator/images/icons/axivion-mv.png b/doc/qtcreator/images/icons/axivion-mv.png new file mode 100644 index 0000000000..c34272c414 Binary files /dev/null and b/doc/qtcreator/images/icons/axivion-mv.png differ diff --git a/doc/qtcreator/images/icons/axivion-sv.png b/doc/qtcreator/images/icons/axivion-sv.png new file mode 100644 index 0000000000..e8e0eb70ef Binary files /dev/null and b/doc/qtcreator/images/icons/axivion-sv.png differ diff --git a/doc/qtcreator/images/qtcreator-axivion-annotation.webp b/doc/qtcreator/images/qtcreator-axivion-annotation.webp index 5879a1c19f..9cfd1407e3 100644 Binary files a/doc/qtcreator/images/qtcreator-axivion-annotation.webp and b/doc/qtcreator/images/qtcreator-axivion-annotation.webp differ diff --git a/doc/qtcreator/images/qtcreator-axivion-issue-search.webp b/doc/qtcreator/images/qtcreator-axivion-issue-search.webp new file mode 100644 index 0000000000..b7f13e5035 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-axivion-issue-search.webp differ diff --git a/doc/qtcreator/images/qtcreator-axivion-view-rule.webp b/doc/qtcreator/images/qtcreator-axivion-view-rule.webp index 30a5427885..9bbca00d9e 100644 Binary files a/doc/qtcreator/images/qtcreator-axivion-view-rule.webp and b/doc/qtcreator/images/qtcreator-axivion-view-rule.webp differ diff --git a/doc/qtcreator/images/qtcreator-axivion-view.webp b/doc/qtcreator/images/qtcreator-axivion-view.webp index c019284503..0d1614b4eb 100644 Binary files a/doc/qtcreator/images/qtcreator-axivion-view.webp and b/doc/qtcreator/images/qtcreator-axivion-view.webp differ diff --git a/doc/qtcreator/images/qtcreator-edit-dashboard-configuration.webp b/doc/qtcreator/images/qtcreator-edit-dashboard-configuration.webp index 3f76b4427a..43d997ec42 100644 Binary files a/doc/qtcreator/images/qtcreator-edit-dashboard-configuration.webp and b/doc/qtcreator/images/qtcreator-edit-dashboard-configuration.webp differ diff --git a/doc/qtcreator/images/qtcreator-preferences-axivion.webp b/doc/qtcreator/images/qtcreator-preferences-axivion.webp index f884259a54..a6b69dd1ff 100644 Binary files a/doc/qtcreator/images/qtcreator-preferences-axivion.webp and b/doc/qtcreator/images/qtcreator-preferences-axivion.webp differ diff --git a/doc/qtcreator/src/analyze/creator-analyze.qdoc b/doc/qtcreator/src/analyze/creator-analyze.qdoc index 7438249701..a29ab10015 100644 --- a/doc/qtcreator/src/analyze/creator-analyze.qdoc +++ b/doc/qtcreator/src/analyze/creator-analyze.qdoc @@ -44,7 +44,7 @@ example, and use the results to make the tests more efficient and complete. - \li \l{Static Code Analysis}{Axivion} + \li \l{Prevent code erosion}{Axivion} Do static code analysis and architecture analysis to detect and eliminate unnecessary complexity of code. diff --git a/doc/qtcreator/src/analyze/creator-axivion.qdoc b/doc/qtcreator/src/analyze/creator-axivion.qdoc index f188c84151..b45d1f5fb1 100644 --- a/doc/qtcreator/src/analyze/creator-axivion.qdoc +++ b/doc/qtcreator/src/analyze/creator-axivion.qdoc @@ -1,16 +1,17 @@ -// Copyright (C) 2023 The Qt Company Ltd. +// Copyright (C) 2024 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only /*! - \previouspage creator-coco.html \page creator-axivion.html - \nextpage creator-valgrind-overview.html + \previouspage creator-how-tos.html - \title Static Code Analysis + \ingroup creator-how-to-analyze + + \title Prevent code erosion \l{https://www.axivion.com/en/products/axivion-suite/}{Axivion Suite} is - a tool suite for protecting software from erosion. Static code analysis, - architecture analysis, and code-smells-detection enable you to: + a tool suite for protecting software from erosion. With static code analysis, + architecture analysis, and code-smells-detection, you can: \list \li Check the source code for potential runtime errors. @@ -22,50 +23,164 @@ \li Detect unreachable code. \endlist - The experimental Axivion plugin integrates the Axivion dashboard server into - \QC. + Connect to an Axivion dashboard server from \QC to view results of code + analysis. \note Enable the Axivion plugin to use it. To use the plugin, you must set up a project in the Axivion dashboard - server and link to it from \QC. You can then see style violations in the - \uicontrol Edit mode and descriptions and issue counts in the - \uicontrol Axivion view. + server and link to it from \QC. You can then see found issues in the + \uicontrol Edit mode, issues in the \uicontrol Axivion dashboard, and + issue details in the \uicontrol Axivion sidebar view. - The editor shows style violations as inline annotations. Hover the mouse over + The editor shows found issues as inline annotations. Hover the mouse over an annotation to bring up a tool tip with a short description of the issue. \image qtcreator-axivion-annotation.webp {Annotation popup} - Select the \inlineimage icons/info.png - button to view detailed information about the issue in the \uicontrol Axivion - view. + Select \inlineimage icons/info.png to view detailed information about the + issue in the \uicontrol Axivion sidebar view. + + \image qtcreator-axivion-view-rule.webp {Axivion sidebar view} - \image qtcreator-axivion-view-rule.webp {Axivion view} + \section1 View issue counts To view the issue counts, select \inlineimage icons/home.png - (\uicontrol {Show Dashboard}). + (\uicontrol {Show Dashboard}) in the \uicontrol Axivion dashboard. + + \image qtcreator-axivion-view.webp {Axivion dashboard} + + The \uicontrol Axivion dashboard lists the numbers of the following types of + issues that Axivion found in the linked project: + + \table + \header + \li Icon + \li Type + \li Description + \row + \li \inlineimage icons/axivion-av.png + \li \uicontrol AV + \li Architecture violations, such as hidden dependencies. + \row + \li \inlineimage icons/axivion-cl.png + \li \uicontrol CL + \li Clones, such as duplicates and similar pieces of code. + \row + \li \inlineimage icons/axivion-cy.png + \li \uicontrol CY + \li Cyclic dependencies, such as call, component, and include cycles. + \row + \li \inlineimage icons/axivion-de.png + \li \uicontrol DE + \li Dead entities are callable entities in the source code that cannot + be reached from the entry points of the system under analysis. + \row + \li \inlineimage icons/axivion-mv.png + \li \uicontrol MV + \li Violations of metrics based on lines and tokens, + nesting, cyclomatic complexity, control flow, and so on. + \row + \li \inlineimage icons/axivion-sv.png + \li \uicontrol SV + \li Style violations, such as deviations from the naming + or coding conventions. + \endtable + + To clear the view, select \inlineimage icons/clean_pane_small.png + (\uicontrol Clear). + + To view issues, select \inlineimage icons/zoom.png + (\uicontrol {Search for Issues}). + + \section1 Filter issues + + \image qtcreator-axivion-issue-search.webp {Issues in Axivion view} + + To filter issues, select: + + \list + \li The icon of an issue type. + \li Two analyzed versions to compare. Select \uicontrol EMPTY to see + issues from the version you select in the right-side version box. + \li \inlineimage icons/arrowup.png to see only added issues. + \li \inlineimage icons/arrowdown.png to see only removed issues. + \li The owner of the issue. Select \uicontrol ANYBODY to see all issues, + \uicontrol NOBODY to see issues that are not associated with a user, + or a user name to see issues owned by a particular user. + \li Path patterns to show issues in the files in the directories that + match the pattern. + \endlist + + The information you see depends on the issue type. Double-click an issue + to see more information about it in the \uicontrol Axivion sidebar view. + + \section1 Jump to issues in the editor + + Typically, the details for cycles and clones show several paths. To view the + issues in the editor: + + \list + \li Click in a location column (that shows a file or line) to open the + respective location (if it can be found). + \li Click in other columns to open the first link in the issue details. + Usually, it leads to the \uicontrol {Left location} or + \uicontrol {Source location}. + \endlist + + The easiest way to jump to the \uicontrol {Right location} is to + select the link in the details or in the \uicontrol {Right Path} + or \uicontrol {Target Path} column. + + \sa {Enable and disable plugins}, {Link projects to Axivion dashboards}, + {Axivion} +*/ + +/*! + \page creator-preferences-axivion.html + \previouspage creator-reference.html + + \ingroup creator-reference-preferences + + \title Axivion + + \brief Create a connection to an Axivion dashboard server. + + Set preferences for the Axivion static code analysis tool in + \preferences > \uicontrol Axivion. - \section1 Connecting to Axivion Dashboard Servers + \image qtcreator-preferences-axivion.webp {General tab in Axivion Preferences} - To connect to Axivion: + To connect to an Axivion dashboard server: \list 1 - \li Select \preferences > \uicontrol Axivion. - \image qtcreator-preferences-axivion.webp {General tab in Axivion Preferences} \li Select \uicontrol Edit to create a connection to the Axivion dashboard server. \image qtcreator-edit-dashboard-configuration.webp {Edit Dashboard Configuration dialog} \li In \uicontrol {Dashboard URL}, enter the URL of the server. - \li In \uicontrol Description, enter a free-text description of the - server. - \li In \uicontrol {Access token}, enter the IDE application token that - you created in the server, in user preferences. + \li In \uicontrol Username, enter the username to access the server. \endlist - \section1 Linking to Dashboards + The first time you access the server, you must enter the password that + matches the username. It is stored safely in your keychain that is provided + by the OS for later use. + + Select \uicontrol {Highlight marks} to highlight found issues on the + scrollbar in the editor. + + \sa {Enable and disable plugins}, {Link projects to Axivion dashboards}, + {Prevent code erosion} +*/ + +/*! + \page creator-link-axivion-dashboards.html + \previouspage creator-how-tos.html + + \ingroup creator-how-to-projects-configure - To link a project to a dashboard: + \title Link projects to Axivion dashboards + + To link a project to an Axivion dashboard: \list 1 \li \uicontrol Projects > \uicontrol {Project Settings} > @@ -78,26 +193,5 @@ To unlink a project, select \uicontrol {Unlink Project}. - \section1 Viewing Issue Counts - - \image qtcreator-axivion-view.webp {Axivion view} - - The \uicontrol Axivion view lists the numbers of the following types of - issues that Axivion found in the linked project: - - \list - \li \uicontrol AV - architecture violations, such as hidden dependencies - \li \uicontrol CL - duplicates and similar pieces of code - \li \uicontrol CY - call, component, and include cycles - \li \uicontrol DE - dead code - \li \uicontrol MV - violations of metrics based on lines and tokens, - nesting, cyclomatic complexity, control flow, and so on. - \li \uicontrol SV - style violations, such as deviations from the naming - or coding conventions - \endlist - - To clear the view, select \inlineimage icons/clean_pane_small.png - (\uicontrol Clear). - - \sa {Enable and disable plugins} + \sa {Enable and disable plugins}, {Prevent code erosion}, {Axivion} */ diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc index 27ff2fccff..7902f21938 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc @@ -79,6 +79,7 @@ the project: \list + \li \l{Link projects to Axivion dashboards}{Axivion} \li \l{Specify clangd settings}{Clangd} \li \l{Speficy Clang tools settings}{Clang Tools} \li \l{Specify code style}{C++ Code Style} diff --git a/doc/qtcreator/src/qtcreator-toc.qdoc b/doc/qtcreator/src/qtcreator-toc.qdoc index 933fadb3a0..c1b310e6c9 100644 --- a/doc/qtcreator/src/qtcreator-toc.qdoc +++ b/doc/qtcreator/src/qtcreator-toc.qdoc @@ -102,7 +102,6 @@ \list \li \l{Profiling QML Applications} \li \l{Checking Code Coverage} - \li \l{Static Code Analysis} \li \l{Using Valgrind Code Analysis Tools} \list \li \l{Detecting Memory Leaks with Memcheck} -- cgit v1.2.3 From bb15322af84fb3b13cd79f3c73fc33b5f03c5492 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 1 Mar 2024 12:17:11 +0100 Subject: Update qbs submodule to HEAD of 2.3 branch Change-Id: I3c4dd9307c74e3fef12bccdc54c13f96dd252e97 Reviewed-by: Reviewed-by: Christian Stenger --- src/shared/qbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/qbs b/src/shared/qbs index 60a18f09fa..75aca0dca1 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit 60a18f09fa547af064fb851e72b816ee25bf71a3 +Subproject commit 75aca0dca12c6c94109e65ee035b6b533b33a3c5 -- cgit v1.2.3 From 217b6eae033d178ed33a2cbcdfbb0671d46545ee Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 26 Feb 2024 13:53:56 +0100 Subject: Doc: Describe using junction points on Windows Task-number: QTCREATORBUG-30209 Change-Id: If6692b697e92a6d3fdffaaddc268cab82f50afd4 Reviewed-by: Cristian Adam --- .../images/qtcreator-preferences-cmake-general.webp | Bin 3406 -> 3816 bytes .../src/cmake/creator-projects-cmake-building.qdoc | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/doc/qtcreator/images/qtcreator-preferences-cmake-general.webp b/doc/qtcreator/images/qtcreator-preferences-cmake-general.webp index e6b7de61f3..fb3b61eff0 100644 Binary files a/doc/qtcreator/images/qtcreator-preferences-cmake-general.webp and b/doc/qtcreator/images/qtcreator-preferences-cmake-general.webp differ diff --git a/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc b/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc index c8da5117fb..6f5508312f 100644 --- a/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc +++ b/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc @@ -200,6 +200,26 @@ \image qtcreator-build-configuration-set-clicolor-force.webp {Build Environment with CLICOLOR_FORCE set} + \section1 Using Junction Points on Windows + + To overcome issues with long paths on Windows, create and use + \l{https://learn.microsoft.com/en-us/sysinternals/downloads/junction} + {junction points} for the source and build directories. At a junction point, + a directory serves as an alias to another directory on the computer. + + To use the junction points for CMake configure, build, and install + operations, go to \preferences > \uicontrol CMake > \uicontrol General and + select \uicontrol {Use junctions for CMake configuration and build operations}. + + \image qtcreator-preferences-cmake-general.webp {CMake General preferences} + + \QC stores junction points in \c {C:\ProgramData\QtCreator\Links}. To use + another path, set it as the value of the \c QTC_CMAKE_JUNCTIONS_DIR + environment variable. + + Set the \c QTC_CMAKE_JUNCTIONS_HASH_LENGTH environment variable to shorten + the MD5 hash key length from the default length value of 32. + \section1 CMake Build Steps \QC builds CMake projects by running \c {cmake . --build}, which then runs -- cgit v1.2.3 From 51ca09c2d7128308c10371beb0691761df702e07 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 23 Feb 2024 17:00:33 +0100 Subject: Doc: Describe the "Edit Checks as String" option for Clazy Task-number: QTCREATORBUG-30209 Change-Id: I56d2f9d9a18f474ab0228c9c64bbde2101d49429 Reviewed-by: Alessandro Portale --- dist/changelog/changes-13.0.0.md | 2 +- doc/qtcreator/images/qtcreator-clazy.png | Bin 22558 -> 0 bytes doc/qtcreator/images/qtcreator-clazy.webp | Bin 0 -> 14428 bytes .../src/analyze/creator-clang-static-analyzer.qdoc | 10 +++++++--- 4 files changed, 8 insertions(+), 4 deletions(-) delete mode 100644 doc/qtcreator/images/qtcreator-clazy.png create mode 100644 doc/qtcreator/images/qtcreator-clazy.webp diff --git a/dist/changelog/changes-13.0.0.md b/dist/changelog/changes-13.0.0.md index 82530d2976..163b25914c 100644 --- a/dist/changelog/changes-13.0.0.md +++ b/dist/changelog/changes-13.0.0.md @@ -210,7 +210,7 @@ Analyzer ### Clang -* Added `Edit Checks as Strings` for Clazy +* Added `Edit Checks as String` for Clazy ([QTCREATORBUG-24846](https://bugreports.qt.io/browse/QTCREATORBUG-24846)) ### Axivion diff --git a/doc/qtcreator/images/qtcreator-clazy.png b/doc/qtcreator/images/qtcreator-clazy.png deleted file mode 100644 index 15dfb0aeb6..0000000000 Binary files a/doc/qtcreator/images/qtcreator-clazy.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-clazy.webp b/doc/qtcreator/images/qtcreator-clazy.webp new file mode 100644 index 0000000000..1a7243b781 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-clazy.webp differ diff --git a/doc/qtcreator/src/analyze/creator-clang-static-analyzer.qdoc b/doc/qtcreator/src/analyze/creator-clang-static-analyzer.qdoc index c13e626edc..b1b1cd9a8f 100644 --- a/doc/qtcreator/src/analyze/creator-clang-static-analyzer.qdoc +++ b/doc/qtcreator/src/analyze/creator-clang-static-analyzer.qdoc @@ -247,20 +247,24 @@ \l{https://clang-analyzer.llvm.org/available_checks.html} {Clang Static Analyzer documentation}. - \li To edit the selected check as plain text, select + \li To edit the selected checks as plain text, select \uicontrol {Edit Checks as String}. \li In the \uicontrol {Clazy Checks} tab, select the level of Clazy checks to perform. - \image qtcreator-clazy.png {Clazy Checks tab} + \image qtcreator-clazy.webp {Clazy Checks tab} + + \li To edit the selected checks as plain text, select + \uicontrol {Edit Checks as String}. + \li In the \uicontrol Filters field, select topics to view only checks related to those areas in the \uicontrol Checks field. To filter the checks in the selected areas, enter a string in the \uicontrol {Filter by name} field. - \li To view all checks again, select \uicontrol {Reset Filter}. + \li To view all checks again, select \uicontrol {Reset Topic Filter}. \li To view more information about the checks online, select the \uicontrol {Web Page} links next to them. -- cgit v1.2.3 From 642c4beac1afed0ed2906865140b3b8da212ccab Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 19 Feb 2024 11:32:11 +0100 Subject: Doc: Split up Refactoring into how-to topics - Move info about viewing search results to the Search Results View reference topic - Remove the Refactoring top-level topic (the general info is now in the Overview topic) Task-number: QTCREATORBUG-29361 Change-Id: I4072e628368905ed1d5006ececae1b9eaa02fa10 Reviewed-by: Eike Ziller --- .../src/editors/creator-code-refactoring.qdoc | 111 +++++---------------- doc/qtcreator/src/editors/creator-coding.qdoc | 9 +- .../creator-only/creator-clang-codemodel.qdoc | 4 +- .../creator-only/creator-cpp-quick-fixes.qdoc | 12 +-- .../creator-only/creator-how-to-find-symbols.qdoc | 60 +++++++++++ .../creator-only/creator-language-server.qdoc | 4 +- doc/qtcreator/src/editors/creator-quick-fixes.qdoc | 23 +++-- doc/qtcreator/src/editors/creator-search.qdoc | 2 +- doc/qtcreator/src/qtcreator-toc.qdoc | 1 - doc/qtcreator/src/qtcreator.qdoc | 1 - .../creator-open-documents-view.qdoc | 8 +- .../creator-reference-output-views.qdoc | 6 ++ .../src/developers/studio-jump-to-the-code.qdoc | 2 +- .../src/overviews/studio-finding.qdoc | 4 + doc/qtdesignstudio/src/qtdesignstudio-faq.qdoc | 2 +- doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc | 4 +- .../src/views/qtquick-text-editor.qdoc | 25 ++++- 17 files changed, 155 insertions(+), 123 deletions(-) create mode 100644 doc/qtcreator/src/editors/creator-only/creator-how-to-find-symbols.qdoc diff --git a/doc/qtcreator/src/editors/creator-code-refactoring.qdoc b/doc/qtcreator/src/editors/creator-code-refactoring.qdoc index 413ffe9ef5..5a94f1c08d 100644 --- a/doc/qtcreator/src/editors/creator-code-refactoring.qdoc +++ b/doc/qtcreator/src/editors/creator-code-refactoring.qdoc @@ -2,100 +2,35 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only /*! - \page creator-editor-refactoring.html - \previouspage creator-jump-to-the-code.html - \nextpage creator-editor-options.html - - \title Refactoring - - To quickly and conveniently apply actions to refactor your - code, \l{Apply quick fixes}{select quick fixes in a context menu}. - - By default, the refactored files are saved automatically. To disable - this feature, deselect \preferences > \uicontrol Environment > - \uicontrol System > \uicontrol {Auto-save files after refactoring}. - - \if defined(qtcreator) - \section1 Finding Symbols - - To find instances of a specific symbol in your Qt C++ project, place the - cursor on the symbol in the editor and select \uicontrol Tools > - \uicontrol {C++} > \uicontrol {Find References to Symbol Under Cursor} or - press \key {Ctrl+Shift+U}. - - \image qtcreator-find-references-to-symbol-under-cursor.png {Search results for finding references to symbols} - - To view the same results color-coded according to the access type, such as - read, write, or declaration, select \uicontrol Tools > \uicontrol {C++} > - \uicontrol {Find References with Access Type}. - - \note Select \uicontrol Edit > \uicontrol {Find/Replace} > - \uicontrol {Advanced Find} > \uicontrol {C++ Symbols} to search for - classes, functions, enums, and declarations (including type aliases) either - from files listed as part of the project or from all files that are used by - the code, such as include files. - \image qtcreator-search-cpp-symbols.png - \endif - - \section1 Viewing Search Results - - \QC searches from the following locations: - - \list - \li Files listed as a part of the project - \li Files directly used by the project files (for example, generated - files) - \if defined(qtcreator) - \li Header files of used frameworks and libraries - \endif - \endlist - - \l{Search Results View} shows the location and number of search hits in the - current project. - - \if defined(qtcreator) - \image qtcreator-refactoring-find.png + \page creator-how-to-rename-symbols.html + \if defined(qtdesignstudio) + \previouspage studio-finding.html \else - \image qml-find-usages.png + \previouspage creator-how-tos.html \endif - Browse the search results in the following ways: - - \list - \li To go directly to an instance, double-click the instance in - \uicontrol {Search Results}. - \li To move between instances, click the \inlineimage icons/next.png - (\uicontrol {Next Item}) button and \inlineimage icons/prev.png - (\uicontrol {Previous Item}) button in \uicontrol {Search Results}. - \li To expand and collapse the list of all instances, click the - \inlineimage icons/qtcreator-expand.png - (\uicontrol {Expand All}) button. - \li To filter the search results for the usage of symbols according to - access type, such as read, write, or declaration, click the - \inlineimage icons/filtericon.png - (\uicontrol {Filter Tree}) button and select the access type. - \li To clear the search results, click the - \inlineimage icons/clean_pane_small.png - (\uicontrol Clear) button. - \li To start a new search, click the - \inlineimage icons/qtcreator-new-search-icon.png - (\uicontrol {New Search}) button. - \endlist + \ingroup creator-how-to-search - \section1 Renaming Symbols + \title Rename symbols You can rename symbols in all files in a project. + \if defined(qtcreator) When you rename a class, you can also change filenames that match the class name. - To rename a C++ symbol in a project, place the cursor - on it and select \uicontrol Tools > \uicontrol {C++} > - \uicontrol {Rename Symbol Under Cursor} or press \key {Ctrl+Shift+R}. - Use the keyboard shortcut to rename Python symbols. + To rename a C++ symbol in a project: + + \list 1 + \li Place the cursor on the symbol in the editor. + \li Go to \uicontrol Tools > \uicontrol {C++} > + \uicontrol {Rename Symbol Under Cursor}, or press \key {Ctrl+Shift+R}. + + Use the keyboard shortcut to rename Python symbols. + \endlist \endif - To rename a QML type in a project, select \uicontrol Tools > + To rename a QML type in a project, go to \uicontrol Tools > \uicontrol {QML/JS} > \uicontrol {Rename Symbol Under Cursor} or press \key {Ctrl+Shift+R}. @@ -109,23 +44,23 @@ \endif To replace all selected instances, enter the name of the new symbol - in the \uicontrol {Replace with} text box, and select \uicontrol Replace. - To omit an instance, deselect the check box next to the instance. + in \uicontrol {Replace with}, and select \uicontrol Replace. + To omit an instance, clear the check box next to the instance. \note This action replaces all selected instances of the symbol in all files listed in \uicontrol {Search Results}. You cannot undo this action. \if defined(qtcreator) - If the symbol is a class, select the \uicontrol {Rename files} check - box to also change the filenames that match the class name. + If the symbol is a class, select \uicontrol {Rename files} to also change + the filenames that match the class name. \note Renaming local symbols does not open \uicontrol {Search Results}. The instances of the symbol are highlighted in code, and you can edit the symbol. All instances of the local symbol are changed as you type. - \sa {Specify settings for quick fixes}, {Quick Fixes}, {C++ Quick Fixes} - + \sa {Find symbols}, {Specify settings for quick fixes}, {Quick Fixes}, + {C++ Quick Fixes} \endif \sa {Apply quick fixes}, {QML Quick Fixes} diff --git a/doc/qtcreator/src/editors/creator-coding.qdoc b/doc/qtcreator/src/editors/creator-coding.qdoc index 38c6f3f596..5df03c90cc 100644 --- a/doc/qtcreator/src/editors/creator-coding.qdoc +++ b/doc/qtcreator/src/editors/creator-coding.qdoc @@ -46,13 +46,6 @@ and file systems. \endif - \li \l{Refactoring} - - Code refactoring is the process of improving and simplifying code - without modifying the existing functionality of an application. You - can easily find and rename symbols and apply predefined actions to - refactor code. - \li \l{Configuring the Editor} You can change the fonts, colors, highlighting, and indentation. @@ -65,5 +58,7 @@ \if defined(qtcreator) \sa {Using GitHub Copilot} + \else + \sa {Apply quick fixes} \endif */ diff --git a/doc/qtcreator/src/editors/creator-only/creator-clang-codemodel.qdoc b/doc/qtcreator/src/editors/creator-only/creator-clang-codemodel.qdoc index 1bc7cd48bc..b958f83655 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-clang-codemodel.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-clang-codemodel.qdoc @@ -38,7 +38,9 @@ \li \l{View function tooltips}{Tooltips} - \li \l{Finding Symbols}{Finding and renaming symbols} + \li \l{Find symbols}{Finding symbols} + + \li \l{Rename symbols}{Renaming symbols} \li \l{Apply quick fixes}{Quick fixes} diff --git a/doc/qtcreator/src/editors/creator-only/creator-cpp-quick-fixes.qdoc b/doc/qtcreator/src/editors/creator-only/creator-cpp-quick-fixes.qdoc index 7df63851dc..44cc63bbf6 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-cpp-quick-fixes.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-cpp-quick-fixes.qdoc @@ -70,8 +70,8 @@ To return non-trivial objects by using a \c const reference, select the \uicontrol {Return non-value types by const reference} check box. - \sa {Apply quick fixes}, {Specify settings for quick fixes}, - {C++ Quick Fixes}, {QML Quick Fixes}, {Refactoring} + \sa {Apply quick fixes}, {Find symbols}, {Rename symbols}, + {Specify settings for quick fixes}, {C++ Quick Fixes}, {QML Quick Fixes} */ /*! @@ -786,8 +786,8 @@ \li Documentation comment for a function \endtable - \sa {Apply quick fixes}, {Specify settings for quick fixes}, - {QML Quick Fixes}, {Quick Fixes}, {Refactoring} + \sa {Apply quick fixes}, {Find symbols}, {Rename symbols}, + {Specify settings for quick fixes}, {QML Quick Fixes}, {Quick Fixes} */ /*! @@ -811,6 +811,6 @@ delete the custom settings, select \uicontrol {Use global settings}, and then select \uicontrol {Delete Custom Settings File}. - \sa {Apply quick fixes}, {C++ Quick Fixes}, {QML Quick Fixes}, {Quick Fixes}, - {Configuring Projects}, {Refactoring} + \sa {Apply quick fixes}, {Find symbols}, {Rename symbols}, + {C++ Quick Fixes}, {QML Quick Fixes}, {Quick Fixes}, {Configuring Projects} */ diff --git a/doc/qtcreator/src/editors/creator-only/creator-how-to-find-symbols.qdoc b/doc/qtcreator/src/editors/creator-only/creator-how-to-find-symbols.qdoc new file mode 100644 index 0000000000..b377f8c7da --- /dev/null +++ b/doc/qtcreator/src/editors/creator-only/creator-how-to-find-symbols.qdoc @@ -0,0 +1,60 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only + +/*! + \page creator-editor-how-to-find-symbols.html + \previouspage creator-how-tos.html + + \ingroup creator-how-to-search + + \title Find symbols + + You can search for references to a particular symbol or search for symbols + with a name that matches a pattern. + + \section1 Find references to a symbol + + To find instances of a particular symbol in your Qt C++ project: + + \list 1 + \li Place the cursor on the symbol in the editor. + \li Go to \uicontrol Tools > \uicontrol {C++} > + \uicontrol {Find References to Symbol Under Cursor}, + or press \key {Ctrl+Shift+U}. + \image qtcreator-find-references-to-symbol-under-cursor.png {Search results for finding references to symbols} + \endlist + + \section2 Color-code access type + + To view the same results color-coded according to the access type, such as + read, write, or declaration, go to \uicontrol Tools > \uicontrol {C++} > + \uicontrol {Find References with Access Type}. + + \section1 Find symbols that match search criteria + + Go to \uicontrol Edit > \uicontrol {Find/Replace} > + \uicontrol {Advanced Find} and select \uicontrol {C++ Symbols} to search for + classes, functions, enums, and declarations (including type aliases) either + from files listed as part of the project or from all files that are used by + the code, such as include files. + + \image qtcreator-search-cpp-symbols.png + + \QC searches from the following locations: + + \list + \li Files listed as a part of the project + \li Files directly used by the project files (for example, generated + files) + \li Header files of used frameworks and libraries + \endlist + + \section1 View found symbols + + \l{Search Results View} shows the location and number of search hits in the + current project. + + \image qtcreator-refactoring-find.png + + \sa {Search}{How To: Search}, {Search Results View} +*/ diff --git a/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc b/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc index a89ca3c7ef..7572451a83 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc @@ -36,8 +36,8 @@ \l{Outline} view or in the \uicontrol Symbols list on the \l{Edit Mode}{editor toolbar} \li \l{Call Hierarchy}{Viewing the callers and callees of a function} - \li \l{Finding Symbols}{Finding references to symbols} - \li \l{Renaming Symbols}{Renaming the symbol under cursor} + \li \l{Find references to a symbol}{Finding references to symbols} + \li \l{Rename symbols}{Renaming the symbol under the cursor} \li Code actions \li Displaying diagnostics from the language server as tooltips. You can also select a code range to display diagnostics for. diff --git a/doc/qtcreator/src/editors/creator-quick-fixes.qdoc b/doc/qtcreator/src/editors/creator-quick-fixes.qdoc index af49d65612..a2db91d761 100644 --- a/doc/qtcreator/src/editors/creator-quick-fixes.qdoc +++ b/doc/qtcreator/src/editors/creator-quick-fixes.qdoc @@ -4,12 +4,14 @@ /*! \page creator-editor-quick-fixes.html \if defined(qtdesignstudio) - \previouspage creator-editor-refactoring.html + \previouspage creator-jump-to-the-code.html + \nextpage creator-reference-qml-quick-fixes.html \else \previouspage creator-how-tos.html \endif \ingroup creator-how-to-edit + \ingroup studio-code-view \title Apply quick fixes @@ -35,6 +37,10 @@ Or, press \key {Alt+Enter} to open a context menu that has quick fixes available in the current cursor position. + By default, the refactored files are saved automatically. To turn off + this feature, go to \preferences > \uicontrol Environment > + \uicontrol System and select \uicontrol {Auto-save files after refactoring}. + \if defined(qtcreator) \section1 Create functions @@ -85,21 +91,24 @@ \image qtcreator-refactoring-constructor.png "Constructor dialog" - \sa {Specify settings for quick fixes}, {Quick Fixes}, {C++ Quick Fixes} + \sa {Find symbols}, {Specify settings for quick fixes}, {Quick Fixes}, + {C++ Quick Fixes} \endif - \sa {QML Quick Fixes}, {Refactoring} + \sa {Rename symbols}, {QML Quick Fixes} */ /*! \page creator-reference-qml-quick-fixes.html \if defined(qtdesignstudio) - \previouspage creator-editor-refactoring.html + \previouspage creator-editor-quick-fixes.html + \nextpage creator-editor-options.html \else \previouspage creator-reference.html \endif \ingroup creator-reference + \ingroup studio-code-view \title QML Quick Fixes @@ -168,10 +177,10 @@ \endtable - \sa {Apply quick fixes}, {Refactoring} + \sa {Apply quick fixes}, {Rename symbols} \if defined(qtcreator) - \sa {Exclude files from to-do lists}, {Specify settings for quick fixes}, - {Quick Fixes}, {C++ Quick Fixes} + \sa {Exclude files from to-do lists}, {Find symbols}, + {Specify settings for quick fixes}, {Quick Fixes}, {C++ Quick Fixes} \endif */ diff --git a/doc/qtcreator/src/editors/creator-search.qdoc b/doc/qtcreator/src/editors/creator-search.qdoc index 42ca482a5f..e47957f48e 100644 --- a/doc/qtcreator/src/editors/creator-search.qdoc +++ b/doc/qtcreator/src/editors/creator-search.qdoc @@ -215,7 +215,7 @@ \l {Preserve case when replacing} apply here as well. \if defined(qtcreator) - \sa {Search}{How To: Search}, {Finding Symbols}, {Turn on Silver Searcher} + \sa {Search}{How To: Search}, {Find symbols}, {Turn on Silver Searcher} \else \sa {Search in current file} \endif diff --git a/doc/qtcreator/src/qtcreator-toc.qdoc b/doc/qtcreator/src/qtcreator-toc.qdoc index c1b310e6c9..1f5acccca5 100644 --- a/doc/qtcreator/src/qtcreator-toc.qdoc +++ b/doc/qtcreator/src/qtcreator-toc.qdoc @@ -36,7 +36,6 @@ \li \l{Using Text Editing Macros} \li \l{Comparing Files} \endlist - \li \l{Refactoring} \li \l{Configuring the Editor} \li \l{Using GitHub Copilot} \endlist diff --git a/doc/qtcreator/src/qtcreator.qdoc b/doc/qtcreator/src/qtcreator.qdoc index eaceebf177..f828eb6995 100644 --- a/doc/qtcreator/src/qtcreator.qdoc +++ b/doc/qtcreator/src/qtcreator.qdoc @@ -50,7 +50,6 @@ \li \b {\l{Coding}} \list \li \l{Writing Code} - \li \l{Refactoring} \li \l{Configuring the Editor} \endlist \li \b {\l{Building and Running}} diff --git a/doc/qtcreator/src/user-interface/creator-open-documents-view.qdoc b/doc/qtcreator/src/user-interface/creator-open-documents-view.qdoc index 3eb7a3c2d4..87760c448c 100644 --- a/doc/qtcreator/src/user-interface/creator-open-documents-view.qdoc +++ b/doc/qtcreator/src/user-interface/creator-open-documents-view.qdoc @@ -49,7 +49,7 @@ automatically save changed files at the intervals specified in the \uicontrol Interval field. \li Select the \uicontrol {Auto-save files after refactoring} check - box to automatically save \l{Refactoring}{refactored files}. + box to automatically save refactored files. \li Select the \uicontrol {Auto-suspend unmodified files} check box to automatically free the resources of open files after prolonged inactivity. The files are still listed in the @@ -62,4 +62,10 @@ field, set the number of recently opened files listed in \uicontrol File > \uicontrol {Recent Files}. \endlist + + \sa {Apply quick fixes}, {Rename symbols} + + \if defined(qtcreator) + \sa {Find symbols} + \endif */ diff --git a/doc/qtcreator/src/user-interface/creator-reference-output-views.qdoc b/doc/qtcreator/src/user-interface/creator-reference-output-views.qdoc index 60b8b72d5a..0381320085 100644 --- a/doc/qtcreator/src/user-interface/creator-reference-output-views.qdoc +++ b/doc/qtcreator/src/user-interface/creator-reference-output-views.qdoc @@ -142,8 +142,14 @@ \list \li To clear the search results, select \inlineimage icons/clean_pane_small.png (\uicontrol Clear). + \li To move between instances, select \inlineimage icons/next.png + (\uicontrol {Next Item}) and \inlineimage icons/prev.png + (\uicontrol {Previous Item}). \li To expand and collapse the search results, select \inlineimage icons/qtcreator-expand.png (\uicontrol {Expand All}). + \li To filter the search results for the usage of symbols according to + access type, such as read, write, or declaration, select + \inlineimage icons/filtericon.png (\uicontrol {Filter Tree}). \li To start a new search, select \inlineimage icons/qtcreator-new-search-icon.png (\uicontrol {New Search}). diff --git a/doc/qtdesignstudio/src/developers/studio-jump-to-the-code.qdoc b/doc/qtdesignstudio/src/developers/studio-jump-to-the-code.qdoc index d5a83080bf..f5e9425e00 100644 --- a/doc/qtdesignstudio/src/developers/studio-jump-to-the-code.qdoc +++ b/doc/qtdesignstudio/src/developers/studio-jump-to-the-code.qdoc @@ -4,7 +4,7 @@ /*! \previouspage creator-editor-locator.html \page creator-jump-to-the-code.html - \nextpage creator-editor-refactoring.html + \nextpage creator-editor-quick-fixes.html \title Jump to the Code diff --git a/doc/qtdesignstudio/src/overviews/studio-finding.qdoc b/doc/qtdesignstudio/src/overviews/studio-finding.qdoc index bd1e24a505..188c7a6cc6 100644 --- a/doc/qtdesignstudio/src/overviews/studio-finding.qdoc +++ b/doc/qtdesignstudio/src/overviews/studio-finding.qdoc @@ -20,6 +20,10 @@ With advanced search, you can search in currently open projects or files on the file system. + \li \l{Rename symbols} + + Search for QML types and rename them in all files in a project. + \li \l{Searching with the Locator} Use the locator to browse diff --git a/doc/qtdesignstudio/src/qtdesignstudio-faq.qdoc b/doc/qtdesignstudio/src/qtdesignstudio-faq.qdoc index f7dec4de03..8f7267e0d3 100644 --- a/doc/qtdesignstudio/src/qtdesignstudio-faq.qdoc +++ b/doc/qtdesignstudio/src/qtdesignstudio-faq.qdoc @@ -109,7 +109,7 @@ However, you can rename symbols in all files within a project. To rename a QML type in a project, select \uicontrol Tools > \uicontrol QML/JS > \uicontrol {Rename Symbol Under Cursor} or press \key Ctrl+Shift+R. For more - information, see \l {Renaming Symbols}. + information, see \l {Rename symbols}. \section2 How can I add .qml files to my project in Qt Creator? diff --git a/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc b/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc index f18a71fb65..5c34bad6e8 100644 --- a/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc +++ b/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc @@ -213,10 +213,12 @@ \list \li \l{Search in current file} \li \l{Search in projects or file systems} + \li \l{Rename symbols} \li \l{Searching with the Locator} \li \l{Jump to the Code} \endlist - \li \l{Refactoring} + \li \l{Apply quick fixes} + \li \l{QML quick fixes} \li \l{Configuring the Editor} \list \li \l{Font & Colors} diff --git a/doc/qtdesignstudio/src/views/qtquick-text-editor.qdoc b/doc/qtdesignstudio/src/views/qtquick-text-editor.qdoc index f2f5a80ade..f6666daa50 100644 --- a/doc/qtdesignstudio/src/views/qtquick-text-editor.qdoc +++ b/doc/qtdesignstudio/src/views/qtquick-text-editor.qdoc @@ -1,4 +1,4 @@ -// Copyright (C) 2021 The Qt Company Ltd. +// Copyright (C) 2024 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only /*! @@ -17,10 +17,6 @@ You can also view and modify other types of text files. - To open the search dialog in the \uicontrol {Code} view, go to - \uicontrol Edit > \uicontrol {Find/Replace} > \uicontrol {Find/Replace}. - You can also select \key Ctrl + \key {F}. - The view offers the following features: \list @@ -30,4 +26,23 @@ \li \l{Indent text or code} \li \l{Using Qt Quick Toolbars} \endlist + + \section1 Refactoring Code + + Code refactoring is the process of improving and simplifying code without + modifying the existing functionality of an application. You can easily find + and rename symbols and apply quick fixes in the \uicontrol Code view to + refactor code. + + \section1 Searching in Code + + To open the search dialog in the \uicontrol {Code} view: + + \list + \li Go to \uicontrol Edit > \uicontrol {Find/Replace} > + \uicontrol {Find/Replace}. + \li Select \key Ctrl + \key {F} (or \key Cmd + \key F on \macos). + \endlist + + \sa {Finding}, {Apply quick fixes}, {QML Quick Fixes} */ -- cgit v1.2.3 From 44b6dea74048a7a860795d299b89c84588e8b7b4 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Fri, 1 Mar 2024 14:42:29 +0100 Subject: CompilerExplorer: Use volatile Currently the user can't change the Url. This is for the future. Change-Id: I7854c1dc0e680c9aa4bbb41d44dbcb9540a3b34b Reviewed-by: Cristian Adam --- src/plugins/compilerexplorer/compilerexplorersettings.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/compilerexplorer/compilerexplorersettings.h b/src/plugins/compilerexplorer/compilerexplorersettings.h index 4b3ac849a2..cd8c953363 100644 --- a/src/plugins/compilerexplorer/compilerexplorersettings.h +++ b/src/plugins/compilerexplorer/compilerexplorersettings.h @@ -39,7 +39,8 @@ public: Api::Config apiConfig() const { - return Api::Config(Utils::NetworkAccessManager::instance(), compilerExplorerUrl()); + return Api::Config(Utils::NetworkAccessManager::instance(), + compilerExplorerUrl.volatileValue()); } }; -- cgit v1.2.3 From 5d41ab126f84dccf9351deaeb296751aeb6ed8e3 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 29 Feb 2024 17:22:57 +0100 Subject: ProjectExplorer: Expand selected details widgets in target setup page Rationale: - Selecting and unselecting should behave symmetrically. - The user is informed of and can easily change the set of pre-configured build configurations. Fixes: QTCREATORBUG-30412 Change-Id: I86e6a41c3baed280df9a694d6cf6eb631cb537f9 Reviewed-by: Qt CI Bot Reviewed-by: Reviewed-by: Marcus Tillmanns --- src/plugins/projectexplorer/targetsetupwidget.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/plugins/projectexplorer/targetsetupwidget.cpp b/src/plugins/projectexplorer/targetsetupwidget.cpp index 3ccf02b38d..0e2127706f 100644 --- a/src/plugins/projectexplorer/targetsetupwidget.cpp +++ b/src/plugins/projectexplorer/targetsetupwidget.cpp @@ -103,6 +103,7 @@ void TargetSetupWidget::setKitSelected(bool b) b &= hasSelectedBuildConfigurations(); const GuardLocker locker(m_ignoreChanges); m_detailsWidget->setChecked(b); + m_detailsWidget->setState(b ? DetailsWidget::Expanded : DetailsWidget::Collapsed); m_detailsWidget->widget()->setEnabled(b); } @@ -168,12 +169,7 @@ void TargetSetupWidget::targetCheckBoxToggled(bool b) if (m_ignoreChanges.isLocked()) return; m_detailsWidget->widget()->setEnabled(b); - if (b && (contains(m_infoStore, &BuildInfoStore::hasIssues) - || !contains(m_infoStore, &BuildInfoStore::isEnabled))) { - m_detailsWidget->setState(DetailsWidget::Expanded); - } else if (!b) { - m_detailsWidget->setState(DetailsWidget::Collapsed); - } + m_detailsWidget->setState(b ? DetailsWidget::Expanded : DetailsWidget::Collapsed); emit selectedToggled(); } -- cgit v1.2.3 From 832fde9e0e359c5b6a7ce8d2f3441028acd03206 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 15 Feb 2024 10:33:27 +0100 Subject: CMake: Exclude non-project CMake files from search All the CMake files the belong to packages found with `find_package` are part of the project tree, but we shouldn't include them when searching through "files in the project". Set listInProjects to false for these files. Fixes: QTCREATORBUG-30372 Change-Id: If39d477f14dc3207f4e2dd66b2f3969811dbd863 Reviewed-by: Cristian Adam Reviewed-by: --- src/plugins/cmakeprojectmanager/projecttreehelper.cpp | 16 ++++++++++------ src/plugins/cmakeprojectmanager/projecttreehelper.h | 3 ++- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/projecttreehelper.cpp b/src/plugins/cmakeprojectmanager/projecttreehelper.cpp index fb7ca30166..e17505095a 100644 --- a/src/plugins/cmakeprojectmanager/projecttreehelper.cpp +++ b/src/plugins/cmakeprojectmanager/projecttreehelper.cpp @@ -35,7 +35,8 @@ void addCMakeVFolder(FolderNode *base, int priority, const QString &displayName, std::vector> &&files, - bool sourcesOrHeaders) + bool sourcesOrHeaders, + bool listInProject) { if (files.size() == 0) return; @@ -45,6 +46,10 @@ void addCMakeVFolder(FolderNode *base, folder = newFolder.get(); base->addNode(std::move(newFolder)); } + if (!listInProject) { + for (auto it = files.begin(); it != files.end(); ++it) + (*it)->setListInProject(false); + } folder->addNestedNodes(std::move(files)); folder->forEachFolderNode([] (FolderNode *fn) { fn->compress(); }); } @@ -68,10 +73,7 @@ void addCMakeInputs(FolderNode *root, std::unique_ptr cmakeVFolder = std::make_unique(root->filePath()); QSet knownFiles; - root->forEachGenericNode([&knownFiles](const Node *n) { - if (n->listInProject()) - knownFiles.insert(n->filePath()); - }); + root->forEachGenericNode([&knownFiles](const Node *n) { knownFiles.insert(n->filePath()); }); addCMakeVFolder(cmakeVFolder.get(), sourceDir, @@ -87,7 +89,9 @@ void addCMakeInputs(FolderNode *root, Utils::FilePath(), 10, Tr::tr(""), - removeKnownNodes(knownFiles, std::move(rootInputs))); + removeKnownNodes(knownFiles, std::move(rootInputs)), + /*sourcesOrHeaders=*/false, + /*listInProject=*/false); root->addNode(std::move(cmakeVFolder)); } diff --git a/src/plugins/cmakeprojectmanager/projecttreehelper.h b/src/plugins/cmakeprojectmanager/projecttreehelper.h index 08707360ed..bcd5500db9 100644 --- a/src/plugins/cmakeprojectmanager/projecttreehelper.h +++ b/src/plugins/cmakeprojectmanager/projecttreehelper.h @@ -21,7 +21,8 @@ void addCMakeVFolder(ProjectExplorer::FolderNode *base, int priority, const QString &displayName, std::vector> &&files, - bool sourcesOrHeaders = false); + bool sourcesOrHeaders = false, + bool listInProject = true); std::vector> &&removeKnownNodes( const QSet &knownFiles, -- cgit v1.2.3 From 36c7d971c36b966560a42e453175a5077b3ec6ab Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Mon, 4 Mar 2024 09:34:11 +0100 Subject: LSP: Fix missing icons in call hierarchy Change-Id: I8b10392ac28689ce80dc818cba5ff58f21becb81 Reviewed-by: David Schulz --- src/libs/languageserverprotocol/callhierarchy.cpp | 2 +- src/libs/languageserverprotocol/callhierarchy.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/libs/languageserverprotocol/callhierarchy.cpp b/src/libs/languageserverprotocol/callhierarchy.cpp index fc61faf664..4b19d71fa8 100644 --- a/src/libs/languageserverprotocol/callhierarchy.cpp +++ b/src/libs/languageserverprotocol/callhierarchy.cpp @@ -7,7 +7,7 @@ namespace LanguageServerProtocol { bool CallHierarchyItem::isValid() const { - return contains(nameKey) && contains(symbolKindKey) && contains(rangeKey) && contains(uriKey) + return contains(nameKey) && contains(kindKey) && contains(rangeKey) && contains(uriKey) && contains(selectionRangeKey); } diff --git a/src/libs/languageserverprotocol/callhierarchy.h b/src/libs/languageserverprotocol/callhierarchy.h index a284611a12..1cc022d6d1 100644 --- a/src/libs/languageserverprotocol/callhierarchy.h +++ b/src/libs/languageserverprotocol/callhierarchy.h @@ -15,8 +15,8 @@ public: QString name() const { return typedValue(nameKey); } void setName(const QString &name) { insert(nameKey, name); } - SymbolKind symbolKind() const { return SymbolKind(typedValue(symbolKindKey)); } - void setSymbolKind(const SymbolKind &symbolKind) { insert(symbolKindKey, int(symbolKind)); } + SymbolKind symbolKind() const { return SymbolKind(typedValue(kindKey)); } + void setSymbolKind(const SymbolKind &symbolKind) { insert(kindKey, int(symbolKind)); } Range range() const { return typedValue(rangeKey); } void setRange(const Range &range) { insert(rangeKey, range); } -- cgit v1.2.3 From add834577b45af4416e62e6ebd2cda9bd733c7ed Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 1 Mar 2024 14:58:22 +0100 Subject: Doc: Update info about autotests - Split the topic up into how-to and reference topics - Add and remove descriptions of preferences - Move general information to the overview - Describe qdt locator filter Task-number: QTCREATORBUG-30209 Task-number: QTCREATORBUG-29361 Change-Id: Idb29eebaeb2f77326ebbb5e6b5654c135473f329 Reviewed-by: Christian Stenger --- .../images/qtcreator-autotests-project-qt-test.png | Bin 9867 -> 0 bytes .../qtcreator-autotests-project-qtquick-test.png | Bin 9287 -> 0 bytes .../images/qtcreator-new-file-test-case.webp | Bin 0 -> 6308 bytes .../images/qtcreator-new-project-boost-test.webp | Bin 0 -> 6572 bytes .../images/qtcreator-new-project-catch2-test.webp | Bin 0 -> 6958 bytes .../images/qtcreator-new-project-google-test.webp | Bin 0 -> 6694 bytes .../images/qtcreator-new-project-qt-test.webp | Bin 0 -> 5602 bytes .../images/qtcreator-new-project-qtquick-test.webp | Bin 0 -> 5368 bytes .../qtcreator-preferences-testing-qttest.webp | Bin 4594 -> 4690 bytes .../qtcreator-projects-settings-testing.webp | Bin 0 -> 3032 bytes doc/qtcreator/images/qtcreator-test-results.webp | Bin 0 -> 5048 bytes .../src/howto/creator-only/creator-autotest.qdoc | 906 ++++++++++++--------- .../src/howto/creator-only/creator-how-tos.qdoc | 12 + .../overview/creator-only/creator-overview.qdoc | 59 +- .../overview/creator-only/creator-reference.qdoc | 2 +- .../src/overview/creator-only/creator-testing.qdoc | 7 +- .../creator-only/creator-files-creating.qdoc | 4 +- .../creator-only/creator-projects-creating.qdoc | 4 +- .../src/projects/creator-projects-running.qdoc | 2 +- doc/qtcreator/src/qtcreator-toc.qdoc | 5 +- doc/qtcreator/src/qtcreator.qdoc | 7 +- 21 files changed, 604 insertions(+), 404 deletions(-) delete mode 100644 doc/qtcreator/images/qtcreator-autotests-project-qt-test.png delete mode 100644 doc/qtcreator/images/qtcreator-autotests-project-qtquick-test.png create mode 100644 doc/qtcreator/images/qtcreator-new-file-test-case.webp create mode 100644 doc/qtcreator/images/qtcreator-new-project-boost-test.webp create mode 100644 doc/qtcreator/images/qtcreator-new-project-catch2-test.webp create mode 100644 doc/qtcreator/images/qtcreator-new-project-google-test.webp create mode 100644 doc/qtcreator/images/qtcreator-new-project-qt-test.webp create mode 100644 doc/qtcreator/images/qtcreator-new-project-qtquick-test.webp create mode 100644 doc/qtcreator/images/qtcreator-projects-settings-testing.webp create mode 100644 doc/qtcreator/images/qtcreator-test-results.webp diff --git a/doc/qtcreator/images/qtcreator-autotests-project-qt-test.png b/doc/qtcreator/images/qtcreator-autotests-project-qt-test.png deleted file mode 100644 index aa5bee758c..0000000000 Binary files a/doc/qtcreator/images/qtcreator-autotests-project-qt-test.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-autotests-project-qtquick-test.png b/doc/qtcreator/images/qtcreator-autotests-project-qtquick-test.png deleted file mode 100644 index 24d61b245a..0000000000 Binary files a/doc/qtcreator/images/qtcreator-autotests-project-qtquick-test.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-new-file-test-case.webp b/doc/qtcreator/images/qtcreator-new-file-test-case.webp new file mode 100644 index 0000000000..157396ce8f Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-file-test-case.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-boost-test.webp b/doc/qtcreator/images/qtcreator-new-project-boost-test.webp new file mode 100644 index 0000000000..4fb27029e4 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-project-boost-test.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-catch2-test.webp b/doc/qtcreator/images/qtcreator-new-project-catch2-test.webp new file mode 100644 index 0000000000..040f2a586b Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-project-catch2-test.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-google-test.webp b/doc/qtcreator/images/qtcreator-new-project-google-test.webp new file mode 100644 index 0000000000..eca2110f03 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-project-google-test.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-qt-test.webp b/doc/qtcreator/images/qtcreator-new-project-qt-test.webp new file mode 100644 index 0000000000..1838a4c1cf Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-project-qt-test.webp differ diff --git a/doc/qtcreator/images/qtcreator-new-project-qtquick-test.webp b/doc/qtcreator/images/qtcreator-new-project-qtquick-test.webp new file mode 100644 index 0000000000..82124b958d Binary files /dev/null and b/doc/qtcreator/images/qtcreator-new-project-qtquick-test.webp differ diff --git a/doc/qtcreator/images/qtcreator-preferences-testing-qttest.webp b/doc/qtcreator/images/qtcreator-preferences-testing-qttest.webp index f6df07907e..b4cb5a5db1 100644 Binary files a/doc/qtcreator/images/qtcreator-preferences-testing-qttest.webp and b/doc/qtcreator/images/qtcreator-preferences-testing-qttest.webp differ diff --git a/doc/qtcreator/images/qtcreator-projects-settings-testing.webp b/doc/qtcreator/images/qtcreator-projects-settings-testing.webp new file mode 100644 index 0000000000..6f8fe53a22 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-projects-settings-testing.webp differ diff --git a/doc/qtcreator/images/qtcreator-test-results.webp b/doc/qtcreator/images/qtcreator-test-results.webp new file mode 100644 index 0000000000..409c897096 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-test-results.webp differ diff --git a/doc/qtcreator/src/howto/creator-only/creator-autotest.qdoc b/doc/qtcreator/src/howto/creator-only/creator-autotest.qdoc index b7fc37ddb5..f05c16181a 100644 --- a/doc/qtcreator/src/howto/creator-only/creator-autotest.qdoc +++ b/doc/qtcreator/src/howto/creator-only/creator-autotest.qdoc @@ -1,167 +1,157 @@ -// Copyright (C) 2023 The Qt Company Ltd. +// Copyright (C) 2024 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only -/*! - \previouspage creator-ctf-visualizer.html - \page creator-autotest.html - \nextpage creator-squish.html - - \title Running Autotests - \QC supports both \e {code based tests} and \e {build system based tests}. - Code based testing offers special handling for particular testing - frameworks that strongly ties to the underlying code models or - specialized parsers. Build system based testing is independent from any - testing frameworks. It retrieves information directly from the underlying - build system and uses it or even the build system as such to execute the - respective tests. +/*! + \page creator-how-to-create-qt-tests.html + \previouspage creator-how-tos.html - \QC integrates the following testing frameworks for unit testing - applications and libraries: + \ingroup creator-how-to-test - \list - \li \l{https://www.boost.org/doc/libs/1_81_0/libs/test/doc/html/index.html} - {Boost.Test} - \li \l{https://github.com/catchorg/Catch2}{Catch2 test framework} - \li \l{https://github.com/google/googletest}{Google C++ Testing Framework} - \li \l{Qt Test} framework - \endlist + \title Create Qt tests - In addition, \QC offers build system based support for - \l{https://cmake.org/cmake/help/latest/manual/ctest.1.html}{CTest}. + \QC integrates the \l{Qt Test} framework for unit testing Qt applications and + libraries. - You can use \QC to create, build, and run code based tests for your - projects. + To create a Qt test: - \image qtcreator-autotests.png + \list 1 + \li Go to \uicontrol File > \uicontrol {New Project} > + \uicontrol {Test Project}. + \li Select \uicontrol {Qt Test Project} > \uicontrol Choose. + \li In the \uicontrol {Project and Test Information} dialog, specify + settings for the project and test. + \image qtcreator-new-project-qt-test.webp {Project and Test Information - Qt Test} + \li In \uicontrol {Test case name}, enter a name for the test case. + \li Select \uicontrol {Requires \QApplication} to add the include + statement for QApplication to the main.cpp file of the project. + \li Select \uicontrol {GUI Application} to create a Qt application. + \li Select \uicontrol {Generate initialization and cleanup code} + to add functions to your test that the testing framework + executes to initialize and clean up the test. + \li In \uicontrol {Build system}, select the build system to use + for building the project: CMake, qmake, or Qbs. + \endlist - \section1 Build System Based Tests + \QC creates the test in the specified project directory. Edit the .cpp file + to add private slots for each test function in your test. - By default, \QC does not handle build system based tests to avoid - interference with code based parsers. To enable build system based tests, - select the respective test tool in \preferences > \uicontrol Testing - > \uicontrol General. + For more information about creating Qt tests, see \l{Creating a Test}. - The detection of tests is usually much faster for build system based - tests as this normally does not involve scanning or parsing. - The information in the tests tree is usually more detailed - when using code based tests. + \sa {Test}{How To: Test}, {Select the build system}, {Testing}, + {Test Results} +*/ - If you enable both code based and build system based tests, you - may duplicate tests inside the tests tree. See also \l {Selecting Tests to Run}. +/*! + \page creator-how-to-create-qtquick-tests.html + \previouspage creator-how-tos.html - \section1 Creating Tests + \ingroup creator-how-to-test - Use a wizard to create projects that have tests. + \title Create Qt Quick tests - \section2 Creating Qt and Qt Quick Tests + \QC integrates the \l{Qt Quick Test} unit test framework for Qt Quick + applications, where you write test cases as JavaScript functions. - To create a Qt or Qt Quick test: + To create a Qt Quick test: \list 1 - \li Select \uicontrol File > \uicontrol {New Project} > - \uicontrol {Test Project} > \uicontrol {Qt Test Project} > - \uicontrol Choose to create a project with boilerplate code for a - Qt test, or \uicontrol File > \uicontrol {New Project} > - \uicontrol {Test Project} > \uicontrol {Qt Quick Test Project} > - \uicontrol Choose to create a Qt Quick test. - + \li Go to \uicontrol File > \uicontrol {New Project} > + \uicontrol {Test Project}. + \li Select \uicontrol {Qt Quick Test Project} > \uicontrol Choose. \li In the \uicontrol {Project and Test Information} dialog, specify - settings for the project and test: - - \list 1 - - \li For a Qt test, select the \uicontrol {GUI Application} check - box to create a Qt application. - - \image qtcreator-autotests-project-qt-test.png {Autotest project wizard - Qt Test} - - \li In the \uicontrol {Test case name} field, enter a name for - the test case. - - \li For a Qt test, select the \uicontrol {Requires \QApplication} - check box to add the include statement for QApplication to - the main.cpp file of the project. - - \li For a Qt Quick test, select the - \uicontrol {Generate setup code} check box to execute C++ - code before running any of the QML tests. The testing - framework will call slots and invocable functions, as - described in \l{Executing C++ Before QML Tests}. - - \image qtcreator-autotests-project-qtquick-test.png {Autotest project wizard - Qt Quick Test} - - \li Select the \uicontrol {Generate initialization and cleanup - code} checkbox to add functions to your test that the - testing framework executes to initialize and clean - up the test. + settings for the project and test. + \image qtcreator-new-project-qtquick-test.webp {Project and Test Information - Qt Quick Test} + \li In \uicontrol {Test case name}, enter a name for the test case. + \li Select \uicontrol {Generate setup code} to execute C++ + code before running any of the QML tests. The testing + framework will call slots and invocable functions, as + described in \l{Executing C++ Before QML Tests}. + \li Select \uicontrol {Generate initialization and cleanup code} + to add functions to your test that the testing framework + executes to initialize and clean up the test. + \li In \uicontrol {Build system}, select the build system to use + for building the project: CMake, qmake, or Qbs. + \endlist - \li In the \uicontrol {Build system} field, select the build - system to use for building the project: qmake, CMake, or - Qbs. + \QC creates the test in the specified project directory. Edit the .cpp file + to add private slots for each test function in your test. - \endlist + \sa {Test}{How To: Test}, {Select the build system}, {Testing}, + {Test Results} +*/ - \endlist +/*! + \page creator-how-to-create-google-tests.html + \previouspage creator-how-tos.html - \QC creates the test in the specified project directory. Edit the .cpp file - to add private slots for each test function in your test. For more information - about creating Qt tests, see \l{Creating a Test}. + \ingroup creator-how-to-test - \section2 Creating Google Tests + \title Create Google tests To create a Google test: \list 1 - \li Select \uicontrol File > \uicontrol {New Project} > - \uicontrol {Test Project} > \uicontrol {Google Test Project} > - \uicontrol Choose to create a project with boilerplate code for a - Google test. + \li Go to \uicontrol File > \uicontrol {New Project} > + \uicontrol {Test Project}. + + \li Select \uicontrol {Google Test Project} > \uicontrol Choose to create + a project with boilerplate code for a Google test. \li In the \uicontrol {Project and Test Information} dialog, specify settings for the project and test: + \image qtcreator-new-project-google-test.webp {Project and Test Information - Google test} + \list 1 - \li In the \uicontrol {Test framework} field, select + \li In \uicontrol {Test framework}, select \uicontrol {Google Test (shared libraries)} to link against - Google Test, or \uicontrol {Google Test (headers only)} to + Google Test or \uicontrol {Google Test (headers only)} to include necessary Google Test sources into the project. - \li In the \uicontrol {Test suite name} field, enter a name for + \li In \uicontrol {Test suite name}, enter a name for the test suite. - \li In the \uicontrol {Test case name} field, enter a name for + \li In \uicontrol {Test case name}, enter a name for the test case. - \li Select the \uicontrol {Enable C++ 11} check box to - support C++ 11 features in the test. - - \li In the \uicontrol {Google test repository} field, select - a directory that has a clone of the googletest - repository. + \li For a shared library test, you can set the path to a + Google C++ testing framework installation in + \uicontrol {Googletest install directory (optional)}. - To use an installed Google C++ Testing framework instead, - see \l{Setting Up the Google C++ Testing Framework}. + \li For a header-only test, you can set the path to + a googletest repository clone in + \uicontrol {Googletest source directory (optional)}. - \li In the \uicontrol {Build system} field, select the build - system to use for building the project: qmake, CMake, or - Qbs. + \li In \uicontrol {Build system}, select the build system to use + for building the project: CMake, qmake, or Qbs. \endlist \endlist \QC creates the test in the specified project directory. + For more information about creating Google tests, see the \l{https://github.com/google/googletest/blob/master/docs/primer.md} {Google Test Primer}. - \section2 Creating Boost Tests + \sa {Test}{How To: Test}, {Select the build system}, {Testing}, + {Test Results} +*/ + +/*! + \page creator-how-to-create-boost-tests.html + \previouspage creator-how-tos.html + + \ingroup creator-how-to-test - To build and run Boost tests, you must have the Boost.Test installed on the - development host. Typically, the Boost installation includes it. You can - download Boost from \l{https://www.boost.org/}{Boost.org}. + \title Create Boost tests + + To build and run Boost tests, install Boost.Test on the computer. + Typically, the Boost installation includes it. Download Boost from + \l{https://www.boost.org/}{Boost.org}. If the compiler and build system can find the Boost libraries, you do not need to specify the include directory when creating the test. @@ -169,37 +159,49 @@ To create a Boost test: \list 1 - \li Select \uicontrol File > \uicontrol {New Project} > - \uicontrol {Test Project} > \uicontrol {Boost Test Project} > + \li Go to \uicontrol File > \uicontrol {New Project} > + \uicontrol {Test Project}. + \li Select \uicontrol {Boost Test Project} > \uicontrol Choose to create a project with boilerplate code for a Boost test. \li In the \uicontrol {Project and Test Information} dialog, specify settings for the project and test: + \image qtcreator-new-project-boost-test.webp {Project and Test Information - Boost test} \list 1 - \li In the \uicontrol {Test framework} field, select - \uicontrol {Boost Test (headers only)} to include needed + \li In \uicontrol {Test framework}, select + \uicontrol {Boost Test (header only)} to include needed headers, or \uicontrol {Boost Test (shared libraries)} to link against Boost Test. - \li In the \uicontrol {Test suite name} field, enter a name for + \li In \uicontrol {Test suite name}, enter a name for the test suite. - \li In the \uicontrol {Test case name} field, enter a name for + \li In \uicontrol {Test case name}, enter a name for the test case. - \li In the \uicontrol {Boost include dir (optional)} field, + \li In \uicontrol {Boost include directory (optional)}, enter the path to the directory that has files needed by Boost.Test, such as \e version.hpp and the \e test subfolder that contains the test header files. - \li In the \uicontrol {Build system} field, select the build - system to use for building the project: qmake, CMake, or - Qbs. + \li In \uicontrol {Build system}, select the build + system to use for building the project: CMake, qmake, or Qbs. \endlist \endlist \QC creates the test in the project directory. + For more information about creating Boost tests, see \l{https://www.boost.org/doc/libs/1_81_0/libs/test/doc/html/index.html} {Boost.Test}. - \section2 Creating Catch2 Tests + \sa {Test}{How To: Test}, {Select the build system}, {Testing}, + {Test Results} +*/ + +/*! + \page creator-how-to-create-catch2-tests.html + \previouspage creator-how-tos.html + + \ingroup creator-how-to-test + + \title Create Catch2 tests To build and run Catch2 tests, you can either install Catch2 libraries and headers or use the single include header file in the @@ -211,38 +213,50 @@ To create a basic Catch2 test: \list 1 - \li Select \uicontrol File > \uicontrol {New Project} > - \uicontrol {Test Project} > \uicontrol {Catch2 Test Project} > - \uicontrol Choose to create a project with boilerplate code for a - Catch2 test. + \li Go to \uicontrol File > \uicontrol {New Project} > + \uicontrol {Test Project}. + \li Select \uicontrol {Catch2 Test Project} > \uicontrol Choose to create + a project with boilerplate code for a Catch2 test. \li In the \uicontrol {Project and Test Information} dialog, specify settings for the project and test: + \image qtcreator-new-project-catch2-test.webp {Project and Test Information dialog - Catch2 test} \list 1 - \li In the \uicontrol {Test framework} field, select + \li In \uicontrol {Test framework}, select \uicontrol {Catch2 v3 (shared libraries)} to link against Catch2 (recommended for version 3), or \uicontrol {Catch2 v2 (header only)} to use a single header include (recommended for version 2). - \li In the \uicontrol {Test case name} field, specify a name + \li In \uicontrol {Test case name}, specify a name for the test case file. - \li Select the \uicontrol {Use Qt libraries} check box - to use a self-defined main function and set up the project - to use Qt features. - \li In the \uicontrol {Catch2 include directory (optional)} field, - you may enter a path to the directory that has the + \li In \uicontrol {Catch2 install directory (optional)}, + you can enter a path to the directory that has the Catch2 header files. - \li In the \uicontrol {Build system} field, select the build - system to use for building the project: qmake, CMake, or - Qbs. + \li Select \uicontrol {Use own main} to use a self-defined + main function. + \li Select \uicontrol {Use Qt libraries} set up the project to + use Qt features. + \li In \uicontrol {Build system}, select the build + system to use for building the project: CMake, qmake, or Qbs. \endlist \endlist \QC creates the test in the project directory. + For more information about creating Catch2 tests, see \l{https://github.com/catchorg/Catch2/blob/master/docs/Readme.md} {Catch2}. - \section2 Creating CTest Based Tests + \sa {Test}{How To: Test}, {Select the build system}, {Testing}, + {Test Results} +*/ + +/*! + \page creator-how-to-create-ctests.html + \previouspage creator-how-tos.html + + \ingroup creator-how-to-test + + \title Create CTest Based Tests CTest can execute tests for CMake based projects regardless of the test framework. You configure tests in the project file, usually, CMakeLists.txt. @@ -256,75 +270,52 @@ Add \c test_example as an executable before trying to register it as test. It may be any executable command including arguments. - For detailed information on how to use CTest see + + For more information about how to use CTest, see \l{https://gitlab.kitware.com/cmake/community/-/wikis/doc/ctest/Testing-With-CTest} {Testing with CTest}. - \section1 Adding Tests To Existing Test Projects - - Use a wizard to add a new file containing additional tests for projects - containing a test project. - - Select \uicontrol File > \uicontrol {New File} > \uicontrol {Test Case} > - \uicontrol Choose to add a new test case. - - \note This is only supported for code based test frameworks except for - Qt Tests. There is no official support for having multiple test cases - inside a single Qt test application and it is better to create - a separate test sub project for each test case. - - In \uicontrol {Test framework}, select the test framework in use. - This has to match the test framework you are using inside the project - you want to add this file to. + \sa {Test}{How To: Test}, {Select the build system}, {Testing}, + {Test Results} +*/ - Depending on the chosen test framework, you can specify the test case - name, test suite name, the used filename, or further options. For a - detailed explanation, see the general information provided for each - test framework on its own in \l {Creating Tests}. +/*! + \page creator-how-to-add-tests-to-projects.html + \previouspage creator-how-tos.html - \section1 Setting Up the Google C++ Testing Framework + \ingroup creator-how-to-test - To build and run Google tests, install and configure the Google C++ Testing - framework on the development host. You can either clone it from Git Hub or - install it from an installation package. + \title Add tests to existing test projects - To configure a project to use a cloned Google testing framework, edit the - \c INCLUDEPATH variable in the project file (.pro) to include the source - and \c include folders of Google Test's \c googletest and \c googlemock. - Usually, you need to add the following subfolders: + To add a new file that has test cases to a project that contains a test + project: - \list - \li \c googletest - \li \c googlemock - \li \c googletest/include - \li \c googlemock/include + \list 1 + \li Go to \uicontrol File > \uicontrol {New File}. + \li Select \uicontrol {Test Case} > \uicontrol Choose. + \li In \uicontrol {Test framework}, select the test framework in use. + This has to match the test framework you are using inside the project + you want to add this file to. + \image qtcreator-new-file-test-case.webp {Test Information dialog} \endlist - Also, add the necessary files to the \c SOURCES variable. For example: + The settings to specify depend on the selected test framework. - \list - \li \c googletest/src/gtest-all.cc - \li \c googlemock/src/gmock-all.cc - \endlist - - To configure a project to use an installed Google testing framework package, - add the following include paths to the .pro file: + \note This is only supported for code based test frameworks, except for + Qt Tests. There is no official support for having multiple test cases + inside a single Qt test application, and it is better to create + a separate test sub project for each test case. - \list - \li \c /include/gtest - \li \c /include/gmock - \endlist + \sa {Test}{How To: Test}, {Testing}, {Test Results} +*/ - Then add linker options to be able to find the libraries and to link against - them. For example, for qmake based projects, you typically need to add the - following values to the .pro file: +/*! + \page creator-how-to-build-and-run-tests.html + \previouspage creator-how-tos.html - \list - \li \c {LIBS += -lgtest -L} - \li \c {LIBS += -lgmock -L} - \endlist + \ingroup creator-how-to-test - \section1 Building and Running Tests + \title Build and run tests To build and run tests: @@ -334,7 +325,7 @@ \li In the \uicontrol Tests view, select the tests to run. - \li In the \uicontrol {Test Results}, select: + \li In the \uicontrol {Test Results} view, select: \list \li \inlineimage icons/run_small.png @@ -359,20 +350,20 @@ To run the selected tests without deployment, select \uicontrol {Run Selected Tests Without Deployment}. - The functions to run tests are also available in the context menu in the - \uicontrol Tests view and in \uicontrol Tools > \uicontrol Tests. + You can run tests also from the context menu in the \uicontrol Tests view or + by going to \uicontrol Tools > \uicontrol Tests. \note If you enable both build system based and code based tests, - you may run tests twice when using \uicontrol {Run All Tests} or + you may run tests twice when selecting \uicontrol {Run All Tests} or \uicontrol {Run Selected Tests}. This happens if the tests can be found by the code based test frameworks and are registered as test with the build system. If a test takes more than a minute to execute, the default timeout might - stop the test execution. To increase the timeout, select \preferences > + stop the test execution. To increase the timeout, go to \preferences > \uicontrol {Testing} > \uicontrol General. - \section2 Selecting Tests to Run + \section1 Select tests to run The \uicontrol Tests view shows all the tests found for the currently active test frameworks in the current project. Select the test cases to run. @@ -398,10 +389,10 @@ select \inlineimage icons/leafsort.png (\uicontrol {Sort Naturally}). - \section2 Running and Debugging Tests from Code Editor + \section1 Run and debug tests from code editor You can run and debug tests in the file currently open in the code editor. - To run all tests in the open file, select \uicontrol Tools > + To run all tests in the open file, go to \uicontrol Tools > \uicontrol Tests > \uicontrol {Run Tests for Current File}. \note Available only for code based test frameworks. @@ -414,230 +405,395 @@ \note Availability for build system based tests depends on the build system tool's abilities. - \section1 Specifying Test Settings + \section1 Turn on build system based tests - To customize the handling of tests, test frameworks, and test tools, select - \preferences > \uicontrol {Testing} > \uicontrol General. + By default, \QC does not handle build system based tests to avoid + interference with code based parsers. To turn on build system based tests, + select the respective test tool in \preferences > \uicontrol Testing + > \uicontrol General. - \image qtcreator-preferences-testing-general.webp {General tab in Testing preferences} + The detection of tests is usually much faster for build system based + tests as this normally does not involve scanning or parsing. + The information in the tests tree is usually more detailed + when using code based tests. - You can customize some settings at project level. To change settings - for the current project instead of globally, select \uicontrol Projects > - \uicontrol {Project Settings} > \uicontrol {Testing}. + If you turn on both code based and build system based tests, you + may duplicate tests inside the tests tree. + + \section1 Locate Qt Test data tags + + To locate Qt Test data tags: + + \list 1 + \li Press \key {Ctrl+K} (\key {Cmd+K} on \macos) to activate the locator. + \li Enter \c qdt, followed by a space. + \endlist - In the \uicontrol {Active Test Frameworks} list, select tests for \QC to - handle. To improve the performance of full scans for tests, disable - test frameworks you do not use. + \sa {Test}{How To: Test}, {Select the build system}, {Testing}, + {Test Results} +*/ - To group related test cases for an active test framework, select the - \uicontrol Group check box next to the framework name in the - \uicontrol {Active Test Frameworks} list. - By default, \QC groups tests that are in the same directory. +/*! + \page creator-preferences-testing.html + \previouspage creator-reference.html - By default, \QC uses a quarter of the available logical CPUs when - scanning for tests. You can set the amount of worker threads used - in \uicontrol {Scan threads}. + \ingroup creator-reference-preferences - \QC omits internal messages and run configuration warnings for - deduced configurations by default. To view them, deselect the - \uicontrol {Omit internal messages} and - \uicontrol {Omit run configuration warnings} check boxes. + \title Testing - By default, test result output shows a maximum of 100,000 characters. The - view automatically scrolls to show the latest results. To display - full results, deselect the \uicontrol {Limit result output} check box. - To disable automatic scrolling, deselect the - \uicontrol {Automatically scroll results} check box. + \brief Customize the handling of tests, test frameworks, and test tools. - Set the maximum number of lines in the test result tooltip and description - in \uicontrol {Limit result description}. + To set preferences for handling tests, go to + \preferences > \uicontrol {Testing} > \uicontrol General. - To group test results by the executable path that you use to run the - tests, select \uicontrol {Group results by application}. This is useful - if you have multiple test executables and run them all at once. + \image qtcreator-preferences-testing-general.webp {General tab in Testing preferences} - To automatically run tests after successfully building the current project, - select them in \uicontrol {Automatically run}. + The following table summarizes the general testing preferences. - Sometimes, \QC cannot deduce which executable or run configuration to use. - If \QC repeatedly asks you to select the tests to run when trying to execute - tests, you can let it cache your choices and use them where appropriate. \QC - clears the cache when you switch to another project, close the current one, - or select \uicontrol {Reset Cached Choices}. + \table + \header + \li Setting + \li Value + \row + \li \uicontrol {Scan threads} + \li Set the amount of worker threads used when scanning for tests. + By default, \QC uses a quarter of the available logical CPUs. + \row + \li \uicontrol {Omit internal messages} + \li Omit internal messages. + \row + \li \uicontrol {Omit run configuration warnings} + \li Omit run configuration warnings for deduced configurations. + \row + \li \uicontrol {Limit result output} + \li By default, test result output shows a maximum of 100,000 characters. + \row + \li \uicontrol {Limit result description} + \li Set the maximum number of lines in the test result tooltip and + description. + \row + \li \uicontrol {Open results when tests start} + \li Show test results automatically when testing starts. + \row + \li \uicontrol {Open results when tests finish} + \li Show test results automatically when testing ends. + \row + \li \uicontrol {Open results only for unsuccesfull test runs} + \li Show test results only if thy contain failed, fatal, or + unexpectedly passed tests. + \row + \li \uicontrol {Automatically scroll results} + \li The view automatically scrolls to show the latest results. + \row + \li \uicontrol {Group results by application} + \li Group test results by the executable path that you use to run the + tests. This is useful if you have multiple test executables and run + them all at once. + \row + \li \uicontrol {Process arguments} + \li Pass arguments to the test executable that you specify in the + \l {Configure projects for running}{run configuration}. This is an + experimental feature that might cause the execution of the test + executable to fail. + \row + \li \uicontrol {Automatically run} + \li Automatically run all or selected tests after successfully building + the current project. + \row + \li \uicontrol {Timeout} + \li The maximum time in seconds to execute a test case. + \row + \li \uicontrol {Reset Cached Choices} + \li Sometimes, \QC cannot deduce which executable or run configuration to + use. If it repeatedly asks you to select the tests to run when trying + to execute tests, you can let it cache your choices and use them where + appropriate. \QC clears the cache when you switch to another project, + close the current one, or select this setting. + \row + \li \uicontrol {Active Test Frameworks} + \li Select tests for \QC to handle. To improve the performance of full + scans for tests, disable test frameworks you do not use. + \row + \li \uicontrol {Group} + \li Group related test cases for an active test framework. + By default, \QC groups tests that are in the same directory. + \endtable - Select the \uicontrol {Process arguments} check box to pass arguments to the - test executable that you specify in the \l {Configure projects for running} - {run configuration}. This is an experimental feature that might cause the - execution of the test executable to fail. + To select the testing framework for the current project, go to + \uicontrol Projects > \uicontrol {Project Settings} > \uicontrol {Testing}. - \section2 Specifying Settings for Running Qt Tests + \section1 Qt Tests - The code inside a benchmark test is measured, and possibly also repeated - several times in order to get an accurate measurement. This depends on the - measurement back-end that you can select in the - \uicontrol {Benchmark Metrics} group in \preferences > \uicontrol {Testing} > - \uicontrol {Qt Test}: - walltime, CPU tick counter, event counter, Valgrind Callgrind, and Linux - Perf. For more information, see \l{Creating a Benchmark}. + To set preference for Qt tests, go to \preferences > \uicontrol {Testing} > + \uicontrol {Qt Test}. \image qtcreator-preferences-testing-qttest.webp {Qt Tests tab in Testing preferences} - To receive verbose output when running benchmarks, select the - \uicontrol {Verbose benchmarks} check box. - - To allow the debugger to interrupt Qt tests on assertions, select the - \uicontrol {Disable crash handler while debugging} check box. + The code inside a benchmark test is measured, and possibly also repeated + several times in order to get an accurate measurement. This depends on the + measurement back-end that you select in \uicontrol {Benchmark Metrics}: - To record information about signals and slots in the test log, select the - \uicontrol {Log signals and slots} check box. + \list + \li Walltime + \li CPU tick counter + \li Event counter + \li Valgrind Callgrind + \li Linux Perf + \endlist - To explicitly limit the maximum number of warnings in the test log, select - the \uicontrol {Limit warnings} check box and set the limit. Set it to 0 if - you want no limit at all. The default number is 2000. + For more information, see \l{Creating a Benchmark}. - To check for Qt Quick Tests that are derived from TestCase, select the - \uicontrol {Check for derived Qt Quick tests} check box. + The following table summarizes the other Qt test preferences. - \note This feature is rather expensive and increases the - scan time significantly. + \table + \header + \li Setting + \li Value + \row + \li \uicontrol {Disable crash handler while debugging} + \li Allow the debugger to interrupt Qt tests on assertions. + \row + \li \uicontrol {Use XML output} + \li XML output avoids parsing issues, but plain text is more human + readable. + \note Plain text misses some information, such as duration. + \row + \li \uicontrol {Verbose benchmarks} + \li Receive verbose output when running benchmarks. + \row + \li \uicontrol {Log signals and slots} + \li Record information about signals and slots in the test log. + \row + \li \uicontrol {Limit warnings} + \li Explicitly limit the maximum number of warnings in the test log. + Set the limit to 0 if you want no limit at all. The default limit + is 2000. + \row + \li \uicontrol {Check for derived Qt Quick tests} + \li Check for Qt Quick Tests that are derived from TestCase. + \note This feature is rather expensive and increases the scan time + significantly. + \row + \li \uicontrol {Find user-defined locations} + \li Parse messages for the following pattern and use it as location + information: \c {file://filepath:line} + + where \":line\" is optional. + + \note If the patterns are used in code, the location information + for debug messages and other messages might improve, at the risk + of some incorrect locations and lower performance. + \endtable - \section2 Specifying Settings for Running Google Tests + \section1 Google Tests - To specify settings for running Google tests, select \preferences > + To specify settings for running Google tests, go to \preferences > \uicontrol {Testing} > \uicontrol {Google Test}. \image qtcreator-preferences-testing-googletest.webp {Gooble Test tab in Testing preferences} - To run disabled tests, select the \uicontrol {Run disabled tests} check box. + The following table summarizes the Google test preferences. - To turn assertion failures into C++ exceptions, select the - \uicontrol {Throw on failure} check box. + \table + \header + \li Setting + \li Value + \row + \li \uicontrol {Run disabled tests} + \li Execute disabled tests during a test run. + \row + \li \uicontrol {Throw on failure} + \li Turn assertion failures into C++ exceptions. + \row + \li \uicontrol {Break on failure while debugging} + \li Turn failures into debugger breakpoints. + \row + \li \uicontrol {Repeat tests} + \li Run several iterations of the tests. + \row + \li \uicontrol Iterations + \li The number of times to run the tests. + \row + \li \uicontrol {Shuffle tests} + \li Make sure that the tests are independent and repeatable by running + them in a different order each time. + \row + \li \uicontrol Seed + \li The seed for initializing the randomizer. The value 0 generates + a seed based on the current timestamp. + \row + \li \uicontrol {Group mode} + \li Group Google tests by using a \uicontrol {GTest Filter}. + \row + \li \uicontrol {Active filter} + \li The GTest filter to use. + \endtable - To turn failures into debugger breakpoints, select the - \uicontrol {Break on failure while debugging} check box. + For more information about GTest filters, see + \l{https://github.com/google/googletest/blob/master/docs/advanced.md#running-a-subset-of-the-tests} + {Running a Subset of the Tests}. - To run several iterations of the tests, select the \uicontrol {Repeat tests} - check box and enter the number of times to run the tests in the - \uicontrol Iterations field. To make sure that the tests are independent and - repeatable, run them in a different order each time by selecting the - \uicontrol {Shuffle tests} check box. Set the seed for initializing the - randomizer in the \uicontrol Seed field. The value 0 generates a seed - based on the current timestamp. + \section1 Boost Tests + To specify settings for running Boost tests, go to \preferences > + \uicontrol {Testing} > \uicontrol {Boost Test}. - To group Google tests by using a GTest filter, select - \uicontrol {GTest Filter} in the \uicontrol {Group mode} field, - and specify the filter in the \uicontrol {Active filter} - field. For more information about GTest filters, see - \l{https://github.com/google/googletest/blob/master/docs/advanced.md#running-a-subset-of-the-tests} - {Running a Subset of the Tests}. + \image qtcreator-preferences-testing-boosttest.webp {Boost Test tab in Testing preferences} - \section2 Specifying Settings for Running Boost Tests + The following table summarizes the Boost test preferences. - \list 1 - \li To specify settings for running Boost tests, select \preferences > - \uicontrol {Testing} > \uicontrol {Boost Test}. - \image qtcreator-preferences-testing-boosttest.webp {Boost Test tab in Testing preferences} - \li In the \uicontrol {Log format} field, select the error report - format to specify the type of events to record in the - test report. - \li In the \uicontrol {Report level} field, select the verbosity level - of the test result report. Select \uicontrol No if you do not want - a report. - \li Select the \uicontrol Randomize check box to execute the tests in - a random order, using the seed specified in the \uicontrol Seed - field for initializing the randomizer. The value 0 means no + \table + \header + \li Setting + \li Value + \row + \li \uicontrol {Log format} + \li The type of events to record in the test report. + \row + \li \uicontrol {Report level} + \li The verbosity level of the test result report. Select \uicontrol No + if you do not want a report. + \row + \li \uicontrol Randomize + \li Execute the tests in a random order. + \row + \li \uicontrol Seed + \li The seed for initializing the randomizer. The value 0 means no randomization, the value 1 uses the current time, and any other value generates a random seed. - \li Select the \uicontrol {Catch system errors} check box to catch - system errors. - \li Select the \uicontrol {Floating point exceptions} check box to - detect floating point exceptions. - \li Select the \uicontrol {Detect memory leaks} check box to detect - memory leaks. - \endlist + \row + \li \uicontrol {Catch system errors} + \li Catch or ignore system errors. + \row + \li \uicontrol {Floating point exceptions} + \li Detect floating point exception traps. + \row + \li \uicontrol {Detect memory leaks} + \li Detect memory leaks. + \endtable - \section2 Specifying Settings for Running Catch2 Tests - \list 1 - \li To specify settings for running Catch2 tests, select - \preferences > \uicontrol {Testing} > \uicontrol {Catch Test}. - \image qtcreator-preferences-testing-catchtest.webp {Catch Test tab in Testing preferences} - \li Select the \uicontrol {Show success} check box to show succeeding - expressions as well. By default Catch2 will print only fails. - \li Select the \uicontrol {Break on failure while debugging} check box - to turn failures into debugger breakpoints. - \li Select the \uicontrol {Skip throwing assertions} check box to skip - any assertion that test for throwing an exception. - \li Select the \uicontrol {Visualize whitespace} check box to turn - whitespace into escape sequences. - \li Select the \uicontrol {Warn on empty tests} check box to get a - warning when a test case does not check any assertion. - \li Select the \uicontrol {Abort after} check box to abort the test - after the number of failures specified inside the spin box. - \li Select the \uicontrol {Benchmark samples} check box to specify - the number of samples to collect while running benchmarks. - \li Select the \uicontrol {Benchmark resamples} check box to specify - the number of resamples to use for statistical bootstrapping after + \section1 Catch2 Tests + + To specify settings for running Catch2 tests, go to \preferences > + \uicontrol {Testing} > \uicontrol {Catch Test}. + + \image qtcreator-preferences-testing-catchtest.webp {Catch Test tab in Testing preferences} + + The following table summarizes the Catch2 test preferences. + + \table + \header + \li Setting + \li Value + \row + \li \uicontrol {Show success} + \li Show succeeding expressions as well. By default Catch2 prints only + failed expressions. + \row + \li \uicontrol {Break on failure while debugging} + \li Turn failures into debugger breakpoints. + \row + \li \uicontrol {Skip throwing assertions} + \li Skip assertions that test for thrown exceptions. + \row + \li \uicontrol {Visualize whitespace} + \li Turn whitespace into escape sequences. + \row + \li \uicontrol {Abort after} + \li Abort the test after the number of failures specified inside the box. + \row + \li \uicontrol {Benchmark samples} + \li The number of samples to collect while running benchmarks. + \row + \li \uicontrol {Benchmark resamples} + \li The number of resamples to use for statistical bootstrapping after benchmarking. - \li Select the \uicontrol {Benchmark confidence interval} check box - to specify the confidence interval for statistical bootstrapping. - \li Select the \uicontrol {Benchmark warmup time} check box to specify - the warmup time for each test before benchmarking starts. - \li Select the \uicontrol {Disable analysis} check box to disable - statistical analysis and bootstrapping. - \endlist + \row + \li \uicontrol {Benchmark confidence interval} + \li The confidence interval for statistical bootstrapping. + \row + \li \uicontrol {Benchmark warmup time} + \li The warmup time for each test before benchmarking starts. + \row + \li \uicontrol {Disable analysis} + \li Disable statistical analysis and bootstrapping. + \endtable \section2 Specifying Settings for Running CTest-Based Tests - \list 1 - \li To specify settings for running CTest-based tests, select - \preferences > \uicontrol {Testing} > \uicontrol {CTest}. - \image qtcreator-preferences-testing-ctest.webp {CTest tab in Testing preferences} - \li Select the \uicontrol {Output on failure} check box to show test - specific output if a test fails. Contrary to the CTest default - this is enabled by default. - \li Select \uicontrol {Schedule random} to execute the tests in - random order. - \li Select \uicontrol {Stop on failure} to automatically stop the - test execution on the first failing test. - \li In the \uicontrol {Output mode} field, select the verbosity level - of the CTest output. - \note This only influences the output on the text display. - \li Select \uicontrol {Repeat tests} if you want to re-run tests - under certain circumstances. - \li In the \uicontrol {Repetition mode} field, select the mode for - re-running tests. Set the maximum count for repeating a test in - the \uicontrol {Count} field. - \li Select \uicontrol {Run in parallel} to run the tests in parallel - using the specified number of \uicontrol {Jobs}. - \li Select \uicontrol {Test load} to limit the parallel + + To specify settings for running CTest-based tests, go to \preferences > + \uicontrol {Testing} > \uicontrol {CTest}. + + \image qtcreator-preferences-testing-ctest.webp {CTest tab in Testing preferences} + + The following table summarizes the CTest preferences. + + \table + \header + \li Setting + \li Value + \row + \li \uicontrol {Output on failure} + \li Show test specific output if a test fails. Contrary to the + CTest default this setting is on by default. + \row + \li \uicontrol {Schedule random} + \li Execute the tests in random order. + \row + \li \uicontrol {Stop on failure} + \li Automatically stop the test execution on the first failing test. + \row + \li \uicontrol {Output mode}, + \li The verbosity level of the CTest output. + \note This setting only influences the output on the text display. + \row + \li \uicontrol {Repeat tests} + \li Re-run tests, as determined by \uicontrol {Repetition mode}. Set the + maximum number of times for repeating a test in \uicontrol {Count}. + \row + \li \uicontrol {Run in parallel} + \li Run the tests in parallel using the specified number of + \uicontrol {Jobs}. In \uicontrol {Test load}, limit the parallel execution. CTest will not start a new test if it would cause the CPU load to pass the threshold set in \uicontrol {Threshold}. - \endlist + \endtable + + \sa {Test}{How To: Test}, {Test Results} +*/ - \section1 Viewing Test Output +/*! + \page creator-test-results.html + \previouspage creator-reference.html - The \l{View output}{Test Results} view shows Qt and Qt Quick test results - in XML format and other test results in plain text format. + \ingroup creator-reference-output-views + + \title Test Results + + \brief View test results. - \section2 Qt Test Output + View and filter test results in the \uicontrol{Test Results} view. + + \image qtcreator-test-results.webp {Visual display in the Test Results view} + + \section1 Qt Test Output + + The \uicontrol{Test Results} view shows Qt and Qt Quick test results + in XML format and other test results in plain text format. XML can be parsed more easily and reliably than plain text. However, if a Qt or Qt Quick test crashes, it might not produce complete XML code that can be parsed, which might lead to information loss. You might see the lost information when viewing the results as plain text. - To view the - results of Qt and Qt Quick tests as plain text, select \preferences > - \uicontrol {Testing} > \uicontrol {Qt Test}, and - then deselect the \uicontrol {Use XML output} check box. Then select the - \inlineimage icons/text.png - (\uicontrol {Switch Between Visual and Text Display}) button in + To view the results of Qt and Qt Quick tests as plain text, go to + \preferences > \uicontrol {Testing} > \uicontrol {Qt Test} and then clear + \uicontrol {Use XML output}. Then select \inlineimage icons/text.png + (\uicontrol {Switch Between Visual and Text Display}) in \uicontrol {Test Results} to switch to the text display. - \section2 Summary of Messages + \section1 Summary of Messages - The following table lists the messages that \uicontrol {Test Results} - displays: + The following table lists the messages that \uicontrol {Test Results} shows. \table \header @@ -685,11 +841,17 @@ \endtable + \section1 Filtering Test Results + To view only messages of a particular type, select - \inlineimage icons/filtericon.png - (\uicontrol {Filter Test Results}), and then select the types of messages to - show. To show all messages, select \uicontrol {Check All Filters}. To - deselect all message types, select \uicontrol {Uncheck All Filters}. + \inlineimage icons/filtericon.png (\uicontrol {Filter Test Results}) and + then select the types of messages to show. + + To show all messages, select \uicontrol {Check All Filters}. + + To deselect all message types, select \uicontrol {Uncheck All Filters}. + + \section1 Blacklisting Tests Since Qt 5.4, you can add a BLACKLIST file for tests. It is mainly used internally by the Qt CI system. @@ -712,4 +874,6 @@ \li Blacklisted test case passed even though it was expected to fail. \endtable + + \sa {Test}{How To: Test}, {Test Results} */ diff --git a/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc b/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc index 3696b29263..a715f171cb 100644 --- a/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc +++ b/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc @@ -93,6 +93,18 @@ \generatelist creator-how-to-get-help + \section1 Test + + \QC supports both \e {code based tests} and \e {build system based tests}. + Code based testing offers special handling for particular testing + frameworks that strongly ties to the underlying code models or + specialized parsers. Build system based testing is independent from any + testing frameworks. It retrieves information directly from the underlying + build system and uses it or even the build system as such to execute the + respective tests. + + \generatelist creator-how-to-test + \section1 Use \QC \generatelist creator-how-to-use diff --git a/doc/qtcreator/src/overview/creator-only/creator-overview.qdoc b/doc/qtcreator/src/overview/creator-only/creator-overview.qdoc index eb0bcf8ec3..3a74a671e2 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-overview.qdoc +++ b/doc/qtcreator/src/overview/creator-only/creator-overview.qdoc @@ -27,7 +27,7 @@ \image qt-app-dev-flow.webp {Application development life-cycle} \caption Application development life-cycle - \section1 Projects + \section1 Managing Projects First, you need a \e project. \QC relies on a separate build system, such as CMake, qmake, or Qbs for building the project. From the build system, \QC @@ -63,12 +63,12 @@ For more information, see \l{Manage Projects}{How To: Manage Projects}. - \section1 User Interfaces + \section1 Designing User Interfaces \image heartgame-start.webp {Heart Rate Game} - To create intuitive, modern-looking, fluid user interfaces, use \l{Qt Quick} - and \l{Qt Design Studio Manual}{\QDS}: + To create intuitive, modern-looking, fluid user interfaces (UI), use + \l{Qt Quick} and \l{Qt Design Studio Manual}{\QDS}: \list \li \l {\QMLD} @@ -101,7 +101,7 @@ For more information, see \l{Design UIs}{How To: Design UIs} and \l{UI Design}. - \section1 Code + \section1 Editing Code Writing, editing, and navigating in source code are core tasks in application development. Therefore, the code editor is one of the key components of \QC. @@ -116,13 +116,13 @@ such as Python, for which a \e {language server} is available that provides information about the code to IDEs. - \section2 Find + \section2 Finding Use the incremental and advanced search to search in currently open projects or files on the file system or use the locator to browse through projects, files, classes, functions, documentation, and file systems. - \section2 Refactor + \section2 Refactoring Code \e {Code refactoring} is the process of improving and simplifying code without modifying the existing functionality of an application. Find @@ -137,7 +137,7 @@ \li Simplify code structure \endlist - \section2 Configure the Editor + \section2 Configuring the Text Editor Configure the text editor to suit your specific needs. Change the fonts, colors, highlighting, and indentation. @@ -147,7 +147,7 @@ For more information, see \l{Edit Code}{How To: Edit Code} and \l{Editors}. - \section1 Build, Deploy, and Run + \section1 Building, Deploying, and Running Applications Run and deploy Qt applications that you build for different target platforms or with different compilers, debuggers, or Qt versions. @@ -182,7 +182,7 @@ For more information, see \l{Connecting Devices} and \l{Deploying to Devices}. - \section2 Preview QML + \section2 Previewing QML Use the QML live preview to preview a QML file or an entire Qt Quick application on the desktop, as well as on Android and embedded Linux @@ -191,7 +191,7 @@ For more information, see \l{Validating with Target Hardware}. - \section1 Debug + \section1 Debugging Applications A debugger lets you see what happens \e inside an application while it runs or when it crashes. A debugger can do the following to help you find errors @@ -214,7 +214,7 @@ For more information, see \l{Debugging}. - \section1 Analyze + \section1 Analyzing Source Code Devices have limited memory and CPU power, so you should use them carefully. \QC integrates code analysis tools for detecting memory leaks, profiling @@ -227,17 +227,42 @@ For more information, see \l{Analyzing Code}. - \section1 Autotest + \section1 Running Tests - Create, build and run Qt tests, Qt Quick tests, Google tests, and Boost tests - to unit test applications and libraries. + \QC supports both \e {code based tests} and \e {build system based tests}. + Code based testing offers special handling for particular testing + frameworks that strongly ties to the underlying code models or + specialized parsers. Build system based testing is independent from any + testing frameworks. It retrieves information directly from the underlying + build system and uses it or even the build system as such to execute the + respective tests. + + \QC integrates the following testing frameworks for unit testing + applications and libraries: + + \list + \li \l{https://www.boost.org/doc/libs/1_81_0/libs/test/doc/html/index.html} + {Boost.Test} + \li \l{https://github.com/catchorg/Catch2}{Catch2 test framework} + \li \l{https://github.com/google/googletest}{Google C++ Testing Framework} + \li \l{Qt Quick Test} framework + \li \l{Qt Test} framework + \endlist + + In addition, \QC offers build system based support for + \l{https://cmake.org/cmake/help/latest/manual/ctest.1.html}{CTest}. + + You can use \QC to create, build, and run code based tests for your + projects. + + \image qtcreator-autotests.png Map AUTs (Application Under Test) to \QC and run Squish test suites and cases from it. - For more information, see \l{Running Autotests} and \l{Using Squish}. + For more information, see \l{Test}{How To: Test} and \l{Using Squish}. - \section1 Publish + \section1 Publishing Applications Create installation packages for mobile devices that you publish to application stores and other channels. You must make sure that the diff --git a/doc/qtcreator/src/overview/creator-only/creator-reference.qdoc b/doc/qtcreator/src/overview/creator-only/creator-reference.qdoc index c26df6eb3e..1fe8e41e28 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-reference.qdoc +++ b/doc/qtcreator/src/overview/creator-only/creator-reference.qdoc @@ -37,7 +37,7 @@ \section1 Preferences - Set prefecerences that apply globally to all projects. + Set preferences that apply globally to all projects. \annotatedlist creator-reference-preferences diff --git a/doc/qtcreator/src/overview/creator-only/creator-testing.qdoc b/doc/qtcreator/src/overview/creator-only/creator-testing.qdoc index 26ef6701d6..34297d34fa 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-testing.qdoc +++ b/doc/qtcreator/src/overview/creator-only/creator-testing.qdoc @@ -12,7 +12,7 @@ \page creator-testing.html \nextpage creator-debugging.html - \title Testing + \title Debugging and Analyzing \image front-testing.png @@ -35,11 +35,6 @@ from \QC. However, the QML Profiler is installed as part of \QC for profiling Qt Quick applications. - \li \l{Running Autotests} - - Create, build and run Qt tests, Qt Quick tests, Google - tests, and Boost tests using \QC. - \li \l{Using Squish} Map AUTs to \QC and run Squish test suites and cases from it. diff --git a/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc b/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc index d03263d462..084bc90c1a 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc @@ -74,8 +74,8 @@ \li Empty Nim source and script files. \endtable - \sa {Add Files}{How To: Add Files}, {Create UML-style models}, - {Use project wizards} + \sa {Add Files}{How To: Add Files}, {Add tests to existing test projects}, + {Create UML-style models}, {Use project wizards} */ /*! diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc index 60fb9686fd..914516417a 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc @@ -168,8 +168,8 @@ \uicontrol Impl there. \sa {Assign keyboard shortcuts}, {Activate kits for a project}, - {Create files}, {Create Projects}{How To: Create Projects}, - {Creating Projects} + {Create files}, {Test}{How To: Test}, + {Create Projects}{How To: Create Projects}, {Creating Projects} */ /*! diff --git a/doc/qtcreator/src/projects/creator-projects-running.qdoc b/doc/qtcreator/src/projects/creator-projects-running.qdoc index 43d80f08c8..0b39d0d707 100644 --- a/doc/qtcreator/src/projects/creator-projects-running.qdoc +++ b/doc/qtcreator/src/projects/creator-projects-running.qdoc @@ -49,7 +49,7 @@ \section1 Select run targets If your project has several run targets defined, such as - \l{Running Autotests}{tests}, you can select them in the kit selector. + \l{Build and run tests}{tests}, you can select them in the kit selector. \image qtcreator-kit-selector-run-targets.png {Run targets in the kit selector} diff --git a/doc/qtcreator/src/qtcreator-toc.qdoc b/doc/qtcreator/src/qtcreator-toc.qdoc index 1f5acccca5..c38beb825d 100644 --- a/doc/qtcreator/src/qtcreator-toc.qdoc +++ b/doc/qtcreator/src/qtcreator-toc.qdoc @@ -68,7 +68,7 @@ \li \l{Building Applications for the Web} \endlist \endlist - \li \l{Testing} + \li \l{Debugging and Analyzing} \list \li \l{Debugging} \list @@ -112,7 +112,6 @@ \li \l{Analyzing Code with Cppcheck} \li \l{Visualizing Chrome Trace Events} \endlist - \li \l{Running Autotests} \li \l{Using Squish} \endlist \li \l{How To} @@ -157,6 +156,8 @@ \endlist \li Read Documentation \generatelist creator-how-to-get-help + \li Test + \generatelist creator-how-to-test \li Use \QC \generatelist creator-how-to-use \li Use the UI diff --git a/doc/qtcreator/src/qtcreator.qdoc b/doc/qtcreator/src/qtcreator.qdoc index f828eb6995..ddc9b74cca 100644 --- a/doc/qtcreator/src/qtcreator.qdoc +++ b/doc/qtcreator/src/qtcreator.qdoc @@ -64,11 +64,10 @@ \li \inlineimage front-help.png \li \inlineimage front-advanced.png \row - \li \b {\l{Testing}} + \li \b {\l{Debugging and Analyzing}} \list \li \l{Debugging} \li \l{Analyzing Code} - \li \l{Running Autotests} \li \l{Using Squish} \endlist \li \b {\l{How To}} @@ -79,6 +78,10 @@ \li \l{Design UIs} \li \l{Edit Code} \li \l{Manage Projects} + \li \l{Read Documentation} + \li \l{Test} + \li \l{Use \QC} + \li \l{Use the UI} \li \l{How To}{See More...} \endlist \li \b {\l{Reference}} -- cgit v1.2.3 From cf8a8974eda296ba82925bb3f2c0d2cfa1a4bc1b Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Mon, 4 Mar 2024 10:10:14 +0100 Subject: CMakePM: Suppress error message for valid build preset Fixes: QTCREATORBUG-30373 Change-Id: I2e2ec83c0b14d188096ace61468435ccbd36d84b Reviewed-by: Alessandro Portale --- src/plugins/cmakeprojectmanager/cmakeproject.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeproject.cpp b/src/plugins/cmakeprojectmanager/cmakeproject.cpp index 25352f0b5d..23c68a6e64 100644 --- a/src/plugins/cmakeprojectmanager/cmakeproject.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeproject.cpp @@ -210,7 +210,7 @@ void CMakeProject::setupBuildPresets(Internal::PresetsData &presetsData) { for (auto &buildPreset : presetsData.buildPresets) { if (buildPreset.inheritConfigureEnvironment) { - if (!buildPreset.configurePreset) { + if (!buildPreset.configurePreset && !buildPreset.hidden) { TaskHub::addTask(BuildSystemTask( Task::TaskType::Error, Tr::tr("Build preset %1 is missing a corresponding configure preset.") -- cgit v1.2.3 From f56fd04c8dbbfead7800a1612fb0d1fd05ceeca6 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 1 Mar 2024 13:43:27 +0100 Subject: Revert "Clangd: Avoid client restart after modifying open documents" The whole point of tracking external changes to files is to use the open files as a sentinel to indicate that non-open files (on which we don't have a watch) have likely also been changed. This reverts commit cff26d813a8805c34588536ca19453852b946643. Change-Id: I5a8b3e6709eda881b912916cf0838b45d1ff4fa4 Reviewed-by: David Schulz Reviewed-by: Reviewed-by: Qt CI Bot --- src/plugins/clangcodemodel/clangmodelmanagersupport.cpp | 5 ----- src/plugins/clangcodemodel/test/clangdtests.cpp | 10 ++++++++-- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp index 477ab9104b..3cf94e19c7 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp @@ -796,11 +796,6 @@ void ClangModelManagerSupport::watchForExternalChanges() if (!LanguageClientManager::hasClients()) return; for (const FilePath &file : files) { - if (TextEditor::TextDocument::textDocumentForFilePath(file)) { - // if we have a document for that file we should receive the content - // change via the document signals - continue; - } const ProjectFile::Kind kind = ProjectFile::classify(file.toString()); if (!ProjectFile::isSource(kind) && !ProjectFile::isHeader(kind)) continue; diff --git a/src/plugins/clangcodemodel/test/clangdtests.cpp b/src/plugins/clangcodemodel/test/clangdtests.cpp index 1edec4c290..bfe7ea9536 100644 --- a/src/plugins/clangcodemodel/test/clangdtests.cpp +++ b/src/plugins/clangcodemodel/test/clangdtests.cpp @@ -2207,15 +2207,21 @@ void ClangdTestExternalChanges::test() QVERIFY(curDoc->marks().isEmpty()); // Now trigger an external change in an open, but not currently visible file and - // verify that we get diagnostics in the current editor. + // verify that we get a new client and diagnostics in the current editor. TextDocument * const docToChange = document("mainwindow.cpp"); docToChange->setSilentReload(); QFile otherSource(filePath("mainwindow.cpp").toString()); QVERIFY(otherSource.open(QIODevice::WriteOnly)); otherSource.write("blubb"); otherSource.close(); + QVERIFY(waitForSignalOrTimeout(LanguageClientManager::instance(), + &LanguageClientManager::clientAdded, timeOutInMs())); + ClangdClient * const newClient = ClangModelManagerSupport::clientForProject(project()); + QVERIFY(newClient); + QVERIFY(newClient != oldClient); + newClient->enableTesting(); if (curDoc->marks().isEmpty()) - QVERIFY(waitForSignalOrTimeout(client(), &ClangdClient::textMarkCreated, timeOutInMs())); + QVERIFY(waitForSignalOrTimeout(newClient, &ClangdClient::textMarkCreated, timeOutInMs())); } -- cgit v1.2.3 From fbe244fd4684121ae4b60519f0b2fcd37646e584 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Mon, 4 Mar 2024 10:52:15 +0100 Subject: Cpp Editor: Fix serializing clangd settings A "store with default operation" makes no sense on the level of the map itself, as it does not have knowledge about the current on-disk settings. This reverts commit a4fbc5f00dddde39871c25bca652de7842baa1dd. Change-Id: I008b0b5c24428c71182dac5d1f151d25cf4f7467 Reviewed-by: Marcus Tillmanns Reviewed-by: David Schulz Reviewed-by: Reviewed-by: Qt CI Bot --- src/libs/utils/store.cpp | 16 +++++ src/libs/utils/store.h | 25 ++----- src/plugins/cppeditor/cppcodemodelsettings.cpp | 99 +++++++++----------------- src/plugins/cppeditor/cppcodemodelsettings.h | 29 +++----- 4 files changed, 63 insertions(+), 106 deletions(-) diff --git a/src/libs/utils/store.cpp b/src/libs/utils/store.cpp index 37f939f5a8..fa8d4232c0 100644 --- a/src/libs/utils/store.cpp +++ b/src/libs/utils/store.cpp @@ -190,4 +190,20 @@ void storeToSettings(const Key &groupKey, QtcSettings *s, const Store &store) s->endGroup(); } +void storeToSettingsWithDefault(const Key &groupKey, + QtcSettings *s, + const Store &store, + const Store &defaultStore) +{ + QTC_ASSERT(store.size() == defaultStore.size(), storeToSettings(groupKey, s, store); return); + + s->beginGroup(groupKey); + for (auto it = store.begin(), defaultIt = defaultStore.begin(), end = store.end(); it != end; + ++it, ++defaultIt) + s->setValueWithDefault(it.key(), + mapEntryFromStoreEntry(it.value()), + mapEntryFromStoreEntry(defaultIt.value())); + s->endGroup(); +} + } // Utils diff --git a/src/libs/utils/store.h b/src/libs/utils/store.h index 97e71b0eec..c538f34c5f 100644 --- a/src/libs/utils/store.h +++ b/src/libs/utils/store.h @@ -15,26 +15,7 @@ class QtcSettings; using KeyList = QList; -class Store : public QMap -{ -public: - using QMap::QMap; - - template - void insertValueWithDefault(const Key &key, const T &val, const T &defaultValue) - { - if (val != defaultValue) - insert(key, val); - } - - template - void insertValueWithDefault(const Key &key, const T &val) - { - if (val != T()) - insert(key, val); - } -}; - +using Store = QMap; using OldStore = QMap; QTCREATOR_UTILS_EXPORT KeyList keysFromStrings(const QStringList &list); @@ -60,6 +41,10 @@ QTCREATOR_UTILS_EXPORT QVariant mapEntryFromStoreEntry(const QVariant &value); // Don't use in new code. QTCREATOR_UTILS_EXPORT Store storeFromSettings(const Key &groupKey, QtcSettings *s); QTCREATOR_UTILS_EXPORT void storeToSettings(const Key &groupKey, QtcSettings *s, const Store &store); +QTCREATOR_UTILS_EXPORT void storeToSettingsWithDefault(const Key &groupKey, + QtcSettings *s, + const Store &store, + const Store &defaultStore); } // Utils diff --git a/src/plugins/cppeditor/cppcodemodelsettings.cpp b/src/plugins/cppeditor/cppcodemodelsettings.cpp index 29516c6218..82cca5752b 100644 --- a/src/plugins/cppeditor/cppcodemodelsettings.cpp +++ b/src/plugins/cppeditor/cppcodemodelsettings.cpp @@ -445,7 +445,11 @@ void ClangdSettings::loadSettings() void ClangdSettings::saveSettings() { const auto settings = Core::ICore::settings(); - Utils::storeToSettings(clangdSettingsKey(), settings, m_data.toMap()); + const ClangdSettings::Data defaultData; + Utils::storeToSettingsWithDefault(clangdSettingsKey(), + settings, + m_data.toMap(), + defaultData.toMap()); settings->beginGroup(Constants::CPPEDITOR_SETTINGSGROUP); diagnosticConfigsToSettings(settings, m_data.customDiagnosticConfigs); settings->endGroup(); @@ -546,81 +550,44 @@ void ClangdProjectSettings::saveSettings() Store ClangdSettings::Data::toMap() const { Store map; - - map.insertValueWithDefault(useClangdKey(), useClangd, DefaultUseClangd); - - const QString clangdPath = executableFilePath != fallbackClangdFilePath() - ? executableFilePath.toString() - : QString(); - - map.insertValueWithDefault(clangdPathKey(), clangdPath); - - map.insertValueWithDefault(clangdIndexingKey(), indexingPriority != IndexingPriority::Off, true); - map.insertValueWithDefault(clangdIndexingPriorityKey(), - int(indexingPriority), - int(DefaultIndexingPriority)); - - map.insertValueWithDefault(clangdHeaderSourceSwitchModeKey(), - int(headerSourceSwitchMode), - int(DefaultHeaderSourceSwitchMode)); - - map.insertValueWithDefault(clangdCompletionRankingModelKey(), - int(completionRankingModel), - int(DefaultCompletionRankingModel)); - - map.insertValueWithDefault(clangdHeaderInsertionKey(), - autoIncludeHeaders, - DefaultAutoIncludeHeaders); - - map.insertValueWithDefault(clangdThreadLimitKey(), workerThreadLimit, DefaultWorkerThreadLimit); - - map.insertValueWithDefault(clangdDocumentThresholdKey(), - documentUpdateThreshold, - DefaultDocumentUpdateThreshold); - - map.insertValueWithDefault(clangdSizeThresholdEnabledKey(), - sizeThresholdEnabled, - DefaultSizeThresholdEnabled); - - map.insertValueWithDefault(clangdSizeThresholdKey(), - sizeThresholdInKb, - DefaultSizeThresholdInKb); - - map.insertValueWithDefault(sessionsWithOneClangdKey(), sessionsWithOneClangd); - - map.insertValueWithDefault(diagnosticConfigIdKey(), - diagnosticConfigId.toSetting(), - initialClangDiagnosticConfigId().toSetting()); - - if (haveCheckedHardwareReqirements != false) - map.insert(checkedHardwareKey(), true); - - map.insertValueWithDefault(completionResultsKey(), - completionResults, - defaultCompletionResults()); + map.insert(useClangdKey(), useClangd); + map.insert(clangdPathKey(), + executableFilePath != fallbackClangdFilePath() ? executableFilePath.toString() + : QString()); + map.insert(clangdIndexingKey(), indexingPriority != IndexingPriority::Off); + map.insert(clangdIndexingPriorityKey(), int(indexingPriority)); + map.insert(clangdHeaderSourceSwitchModeKey(), int(headerSourceSwitchMode)); + map.insert(clangdCompletionRankingModelKey(), int(completionRankingModel)); + map.insert(clangdHeaderInsertionKey(), autoIncludeHeaders); + map.insert(clangdThreadLimitKey(), workerThreadLimit); + map.insert(clangdDocumentThresholdKey(), documentUpdateThreshold); + map.insert(clangdSizeThresholdEnabledKey(), sizeThresholdEnabled); + map.insert(clangdSizeThresholdKey(), sizeThresholdInKb); + map.insert(sessionsWithOneClangdKey(), sessionsWithOneClangd); + map.insert(diagnosticConfigIdKey(), diagnosticConfigId.toSetting()); + map.insert(checkedHardwareKey(), true); + map.insert(completionResultsKey(), completionResults); return map; } void ClangdSettings::Data::fromMap(const Store &map) { - useClangd = map.value(useClangdKey(), DefaultUseClangd).toBool(); + useClangd = map.value(useClangdKey(), true).toBool(); executableFilePath = FilePath::fromString(map.value(clangdPathKey()).toString()); indexingPriority = IndexingPriority( - map.value(clangdIndexingPriorityKey(), int(DefaultIndexingPriority)).toInt()); + map.value(clangdIndexingPriorityKey(), int(this->indexingPriority)).toInt()); const auto it = map.find(clangdIndexingKey()); if (it != map.end() && !it->toBool()) indexingPriority = IndexingPriority::Off; - headerSourceSwitchMode = HeaderSourceSwitchMode( - map.value(clangdHeaderSourceSwitchModeKey(), int(DefaultHeaderSourceSwitchMode)).toInt()); - completionRankingModel = CompletionRankingModel( - map.value(clangdCompletionRankingModelKey(), int(DefaultCompletionRankingModel)).toInt()); - autoIncludeHeaders = map.value(clangdHeaderInsertionKey(), DefaultAutoIncludeHeaders).toBool(); - workerThreadLimit = map.value(clangdThreadLimitKey(), DefaultWorkerThreadLimit).toInt(); - documentUpdateThreshold - = map.value(clangdDocumentThresholdKey(), DefaultDocumentUpdateThreshold).toInt(); - sizeThresholdEnabled - = map.value(clangdSizeThresholdEnabledKey(), DefaultSizeThresholdEnabled).toBool(); - sizeThresholdInKb = map.value(clangdSizeThresholdKey(), DefaultSizeThresholdInKb).toLongLong(); + headerSourceSwitchMode = HeaderSourceSwitchMode(map.value(clangdHeaderSourceSwitchModeKey(), + int(headerSourceSwitchMode)).toInt()); + completionRankingModel = CompletionRankingModel(map.value(clangdCompletionRankingModelKey(), + int(completionRankingModel)).toInt()); + autoIncludeHeaders = map.value(clangdHeaderInsertionKey(), false).toBool(); + workerThreadLimit = map.value(clangdThreadLimitKey(), 0).toInt(); + documentUpdateThreshold = map.value(clangdDocumentThresholdKey(), 500).toInt(); + sizeThresholdEnabled = map.value(clangdSizeThresholdEnabledKey(), false).toBool(); + sizeThresholdInKb = map.value(clangdSizeThresholdKey(), 1024).toLongLong(); sessionsWithOneClangd = map.value(sessionsWithOneClangdKey()).toStringList(); diagnosticConfigId = Id::fromSetting(map.value(diagnosticConfigIdKey(), initialClangDiagnosticConfigId().toSetting())); diff --git a/src/plugins/cppeditor/cppcodemodelsettings.h b/src/plugins/cppeditor/cppcodemodelsettings.h index 6b49185510..fe2e625c07 100644 --- a/src/plugins/cppeditor/cppcodemodelsettings.h +++ b/src/plugins/cppeditor/cppcodemodelsettings.h @@ -125,26 +125,15 @@ public: QStringList sessionsWithOneClangd; ClangDiagnosticConfigs customDiagnosticConfigs; Utils::Id diagnosticConfigId; - - static constexpr auto DefaultWorkerThreadLimit = 0; - static constexpr auto DefaultDocumentUpdateThreshold = 500; - static constexpr auto DefaultSizeThresholdInKb = 1024ll; - static constexpr auto DefaultUseClangd = true; - static constexpr auto DefaultIndexingPriority = ClangdSettings::IndexingPriority::Low; - static constexpr auto DefaultHeaderSourceSwitchMode = HeaderSourceSwitchMode::Both; - static constexpr auto DefaultCompletionRankingModel = CompletionRankingModel::Default; - static constexpr auto DefaultAutoIncludeHeaders = false; - static constexpr auto DefaultSizeThresholdEnabled = false; - - int workerThreadLimit = DefaultWorkerThreadLimit; - int documentUpdateThreshold = DefaultDocumentUpdateThreshold; - qint64 sizeThresholdInKb = DefaultSizeThresholdInKb; - bool useClangd = DefaultUseClangd; - IndexingPriority indexingPriority = DefaultIndexingPriority; - HeaderSourceSwitchMode headerSourceSwitchMode = DefaultHeaderSourceSwitchMode; - CompletionRankingModel completionRankingModel = DefaultCompletionRankingModel; - bool autoIncludeHeaders = DefaultAutoIncludeHeaders; - bool sizeThresholdEnabled = DefaultSizeThresholdEnabled; + int workerThreadLimit = 0; + int documentUpdateThreshold = 500; + qint64 sizeThresholdInKb = 1024; + bool useClangd = true; + IndexingPriority indexingPriority = IndexingPriority::Low; + HeaderSourceSwitchMode headerSourceSwitchMode = HeaderSourceSwitchMode::Both; + CompletionRankingModel completionRankingModel = CompletionRankingModel::Default; + bool autoIncludeHeaders = false; + bool sizeThresholdEnabled = false; bool haveCheckedHardwareReqirements = false; int completionResults = defaultCompletionResults(); }; -- cgit v1.2.3 From 50c404659385fa1b991e18e84329bf0c25bd8190 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 4 Mar 2024 12:00:43 +0100 Subject: Deploy qtplugininfo It is useful for inspecting Qt Creator plugins and doesn't hurt. Change-Id: Ifefb3b17193e16b0f592b854477374dbcb5ab1b4 Reviewed-by: Alessandro Portale Reviewed-by: Reviewed-by: Qt CI Bot --- scripts/deploy.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scripts/deploy.py b/scripts/deploy.py index 20ade283d2..8df90f1ac1 100755 --- a/scripts/deploy.py +++ b/scripts/deploy.py @@ -236,7 +236,7 @@ def deploy_qt_conf_files(qtc_binary_path): if common.is_linux_platform(): qt_prefix_path = os.path.join(qtc_binary_path, '..', 'lib', 'Qt') add_qt_conf(os.path.join(qtc_binary_path, '..', 'libexec', 'qtcreator'), qt_prefix_path) - add_qt_conf(os.path.join(qtc_binary_path, '..', 'lib', 'Qt', 'bin'), qt_prefix_path) # qtdiag + add_qt_conf(os.path.join(qtc_binary_path, '..', 'lib', 'Qt', 'bin'), qt_prefix_path) # qtdiag etc add_qt_conf(qtc_binary_path, qt_prefix_path) # QtC itself if common.is_windows_platform(): add_qt_conf(qtc_binary_path, qtc_binary_path) # QtC itself, libexec, and qtdiag etc @@ -409,8 +409,9 @@ def deploy_qt_mac(qtc_binary_path, qt_install): puppets = glob(os.path.join(libexec_path, 'qml2puppet*')) for puppet in puppets: additional_paths.append(puppet) - # qtdiag + # qtdiag, qtplugininfo additional_paths.append(os.path.join(bin_path, 'qtdiag')) + additional_paths.append(os.path.join(bin_path, 'qtplugininfo')) # other libexec additional_paths.append(os.path.join(libexec_path, 'sdktool')) additional_paths.append(os.path.join(libexec_path, 'qtpromaker')) @@ -470,6 +471,7 @@ def main(): else os.path.dirname(args.qtcreator_binary)) deploy_binary('qtdiag', qtcreator_binary_path, qt_install) + deploy_binary('qtplugininfo', qtcreator_binary_path, qt_install) deploy_binary('qsb', qtcreator_binary_path, qt_install) deploy_plugins(qtcreator_binary_path, qt_install) deploy_imports(qtcreator_binary_path, qt_install) -- cgit v1.2.3 From 6d6ec00cdbb6d110411ed8b731790ab676417d41 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 4 Mar 2024 14:50:27 +0100 Subject: Core: Wrap moribund dialogs into QPointer There's no guarantee that items in the collected list don't die for other reasons before it's their turn in the loop. Change-Id: I5e81a25c3c205646eece30d6dd1a95f4b97eda05 Reviewed-by: Eike Ziller --- src/plugins/coreplugin/icore.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp index 54462f3051..1834a79560 100644 --- a/src/plugins/coreplugin/icore.cpp +++ b/src/plugins/coreplugin/icore.cpp @@ -2189,15 +2189,17 @@ void ICorePrivate::openFileFromDevice() static void acceptModalDialogs() { const QWidgetList topLevels = QApplication::topLevelWidgets(); - QList dialogsToClose; + QList> dialogsToClose; for (QWidget *topLevel : topLevels) { if (auto dialog = qobject_cast(topLevel)) { if (dialog->isModal()) dialogsToClose.append(dialog); } } - for (QDialog *dialog : dialogsToClose) - dialog->accept(); + for (QDialog *dialog : dialogsToClose) { + if (dialog) + dialog->accept(); + } } } // Internal -- cgit v1.2.3 From 58f6a3a459a8e77fe3b31b31d51a3ba428cc9afc Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 26 Feb 2024 14:17:08 +0100 Subject: COIN/GitHub: Use Qt 6.6.2 Change-Id: Ib9303ea53eb8b14851c670c144ed6a3261c2d6cb Reviewed-by: Qt CI Bot Reviewed-by: David Schulz --- .github/workflows/build_cmake.yml | 6 +++--- coin/instructions/common_environment.yaml | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build_cmake.yml b/.github/workflows/build_cmake.yml index 6ac4564da1..794b38c6c1 100644 --- a/.github/workflows/build_cmake.yml +++ b/.github/workflows/build_cmake.yml @@ -7,7 +7,7 @@ on: - 'doc/**' env: - QT_VERSION: 6.6.0 + QT_VERSION: 6.6.2 MACOS_DEPLOYMENT_TARGET: 11.0 CLANG_VERSION: 17.0.1 ELFUTILS_VERSION: 0.175 @@ -202,12 +202,12 @@ jobs: set(url_os "linux_x64") set(qt_package_arch_suffix "gcc_64") set(qt_dir_prefix "${qt_version}/gcc_64") - set(qt_package_suffix "-Linux-RHEL_8_6-GCC-Linux-RHEL_8_6-X86_64") + set(qt_package_suffix "-Linux-RHEL_8_8-GCC-Linux-RHEL_8_8-X86_64") elseif ("${{ runner.os }}" STREQUAL "macOS") set(url_os "mac_x64") set(qt_package_arch_suffix "clang_64") set(qt_dir_prefix "${qt_version}/macos") - set(qt_package_suffix "-MacOS-MacOS_12-Clang-MacOS-MacOS_12-X86_64-ARM64") + set(qt_package_suffix "-MacOS-MacOS_13-Clang-MacOS-MacOS_13-X86_64-ARM64") endif() set(qt_base_url "https://\${qt_mirror}/online/qtsdkrepository/${url_os}/desktop/qt6_${qt_version_dotless}") diff --git a/coin/instructions/common_environment.yaml b/coin/instructions/common_environment.yaml index 6d4fe73802..e2d1190118 100644 --- a/coin/instructions/common_environment.yaml +++ b/coin/instructions/common_environment.yaml @@ -10,13 +10,13 @@ instructions: variableValue: https://ci-files02-hki.ci.qt.io/packages/jenkins/qtcreator_libclang/libclang-release_17.0.1-based - type: EnvironmentVariable variableName: QTC_QT_BASE_URL - variableValue: "https://ci-files02-hki.ci.qt.io/packages/jenkins/archive/qt/6.6/6.6.0-released/Qt" + variableValue: "https://ci-files02-hki.ci.qt.io/packages/jenkins/archive/qt/6.6/6.6.2-released/Qt" - type: EnvironmentVariable variableName: QTC_QT_MODULES variableValue: "qt5compat qtbase qtdeclarative qtimageformats qtquick3d qtquicktimeline qtserialport qtshadertools qtsvg qttools qttranslations qtwebengine" - type: EnvironmentVariable variableName: MACOSX_DEPLOYMENT_TARGET - variableValue: 10.15 + variableValue: 11.0 - type: EnvironmentVariable variableName: SDKTOOL_MACOSX_DEPLOYMENT_TARGET variableValue: 10.14 @@ -39,7 +39,7 @@ instructions: instructions: - type: EnvironmentVariable variableName: QTC_QT_POSTFIX - variableValue: "-Linux-RHEL_8_6-GCC-Linux-RHEL_8_6-X86_64.7z" + variableValue: "-Linux-RHEL_8_8-GCC-Linux-RHEL_8_8-X86_64.7z" - type: EnvironmentVariable variableName: QTC_SDKTOOL_QT_EXT variableValue: ".tar.xz" @@ -51,7 +51,7 @@ instructions: instructions: - type: EnvironmentVariable variableName: QTC_QT_POSTFIX - variableValue: "-MacOS-MacOS_12-Clang-MacOS-MacOS_12-X86_64-ARM64.7z" + variableValue: "-MacOS-MacOS_13-Clang-MacOS-MacOS_13-X86_64-ARM64.7z" - type: EnvironmentVariable variableName: QTC_SDKTOOL_QT_EXT variableValue: ".tar.xz" -- cgit v1.2.3 From 568118af8b48b56fe567b8b8c19ff229f5a87e9e Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Tue, 5 Mar 2024 09:41:55 +0100 Subject: Terminal: Fix copying Japanese text MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously if you tried to copy text such as "惣流・アスカ・ラングレー" an invalid char would be added after each character. This patch fixes the code so that "-1" cells are ignored. They are created because the previous cell had a width of 2. Change-Id: Iff8e60d3a4080068e188b08ded13a8c78df952f2 Reviewed-by: Cristian Adam --- src/libs/solutions/terminal/terminalsurface.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/libs/solutions/terminal/terminalsurface.cpp b/src/libs/solutions/terminal/terminalsurface.cpp index e51c09d894..00f26ce188 100644 --- a/src/libs/solutions/terminal/terminalsurface.cpp +++ b/src/libs/solutions/terminal/terminalsurface.cpp @@ -456,6 +456,9 @@ std::u32string::value_type TerminalSurface::fetchCharAt(int x, int y) const if (cell->width == 0) return 0; + if (cell->chars[0] == 0xffffffff) + return 0; + QString s = QString::fromUcs4(cell->chars, 6).normalized(QString::NormalizationForm_C); const QList ucs4 = s.toUcs4(); return std::u32string(ucs4.begin(), ucs4.end()).front(); -- cgit v1.2.3 From 369105376008101ef710130bf17ebda84d24cbb7 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 5 Mar 2024 09:24:42 +0100 Subject: TextEditor: fix finding whole words '_' was handled as a word separator, in contrast the global search did not. So the user received different results when using find toolbar or the advanced search while searching with the same option and pattern. Fixes: QTCREATORBUG-10276 Change-Id: Ie07303fbaa35475bb98bdb813358169474c3ba1d Reviewed-by: Marcus Tillmanns --- src/plugins/texteditor/texteditor.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index 054e65193f..3256ee91b7 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -4154,10 +4154,17 @@ void TextEditorWidgetPrivate::highlightSearchResults(const QTextBlock &block, co l = match.capturedLength(); if (l == 0) break; - if ((m_findFlags & FindWholeWords) - && ((idx && text.at(idx-1).isLetterOrNumber()) - || (idx + l < text.length() && text.at(idx + l).isLetterOrNumber()))) - continue; + if (m_findFlags & FindWholeWords) { + auto posAtWordSeparator = [](const QString &text, int idx) { + if (idx < 0 || idx >= text.length()) + return false; + const QChar c = text.at(idx); + return !c.isLetterOrNumber() && c != QLatin1Char('_'); + }; + if (!posAtWordSeparator(text, idx - 1) || !posAtWordSeparator(text, idx + l)) + continue; + } + const int start = blockPosition + idx; const int end = start + l; -- cgit v1.2.3 From feeb72d78cb85c914b0bc17f95a7b9a00a84f22b Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 5 Mar 2024 09:00:52 +0100 Subject: Debugger: Rework timeout handling Extend the range to start with 10sec, but default to 40secs. Change-Id: Iede37afca0da2c9ba8fc0bb3fda65d403b8d0bcc Reviewed-by: Christian Stenger Reviewed-by: --- src/plugins/debugger/gdb/gdbengine.cpp | 10 ++-------- src/plugins/debugger/gdb/gdbengine.h | 1 - src/plugins/debugger/gdb/gdbsettings.cpp | 4 ++-- 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/plugins/debugger/gdb/gdbengine.cpp b/src/plugins/debugger/gdb/gdbengine.cpp index 919ee6c753..0f4fe9d772 100644 --- a/src/plugins/debugger/gdb/gdbengine.cpp +++ b/src/plugins/debugger/gdb/gdbengine.cpp @@ -784,8 +784,8 @@ void GdbEngine::runCommand(const DebuggerCommand &command) } // Start Watchdog. - if (m_commandTimer.interval() <= 20000) - m_commandTimer.setInterval(commandTimeoutTime()); + const int watchDogMilliSecs = settings().gdbWatchdogTimeout() * 1000; + m_commandTimer.setInterval(watchDogMilliSecs); // The process can die for external reason between the "-gdb-exit" was // sent and a response could be retrieved. We don't want the watchdog // to bark in that case since the only possible outcome is a dead @@ -798,12 +798,6 @@ void GdbEngine::runCommand(const DebuggerCommand &command) } } -int GdbEngine::commandTimeoutTime() const -{ - const int time = settings().gdbWatchdogTimeout(); - return 1000 * qMax(20, time); -} - void GdbEngine::commandTimeout() { const QList keys = Utils::sorted(m_commandForToken.keys()); diff --git a/src/plugins/debugger/gdb/gdbengine.h b/src/plugins/debugger/gdb/gdbengine.h index c7efe0cbaf..a396ad5507 100644 --- a/src/plugins/debugger/gdb/gdbengine.h +++ b/src/plugins/debugger/gdb/gdbengine.h @@ -116,7 +116,6 @@ private: ////////// General Interface ////////// QHash m_commandForToken; QHash m_flagsForToken; - int commandTimeoutTime() const; QTimer m_commandTimer; QString m_pendingConsoleStreamOutput; diff --git a/src/plugins/debugger/gdb/gdbsettings.cpp b/src/plugins/debugger/gdb/gdbsettings.cpp index eef19df971..04688b5483 100644 --- a/src/plugins/debugger/gdb/gdbsettings.cpp +++ b/src/plugins/debugger/gdb/gdbsettings.cpp @@ -187,9 +187,9 @@ GdbSettings::GdbSettings() "calls and is very likely to destroy your debugging session.

")); gdbWatchdogTimeout.setSettingsKey("WatchdogTimeout"); - gdbWatchdogTimeout.setDefaultValue(20); + gdbWatchdogTimeout.setDefaultValue(40); gdbWatchdogTimeout.setSuffix(Tr::tr("sec")); - gdbWatchdogTimeout.setRange(20, 1000000); + gdbWatchdogTimeout.setRange(10, 1000000); gdbWatchdogTimeout.setLabelText(Tr::tr("GDB timeout:")); gdbWatchdogTimeout.setToolTip(Tr::tr( "The number of seconds before a non-responsive GDB process is terminated.\n" -- cgit v1.2.3 From ac67df7e7318456f3616e414caec20543764de9d Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 4 Mar 2024 11:51:58 +0100 Subject: main: Fix leaking of a QtcSettings object Amends b619f24396ab5d446f39d2d53904829254c19a80 Change-Id: Ic93d33a09eb2b49dd899470ba88f3a7d71f5400d Reviewed-by: Reviewed-by: hjk --- src/app/main.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/app/main.cpp b/src/app/main.cpp index b875850722..6c5fb9a306 100644 --- a/src/app/main.cpp +++ b/src/app/main.cpp @@ -414,9 +414,8 @@ QStringList lastSessionArgument() QString crashReportsPath() { std::unique_ptr settings(createUserSettings()); - QFileInfo(settings->fileName()).path() + "/crashpad_reports"; if (Utils::HostOsInfo::isMacHost()) - return QFileInfo(createUserSettings()->fileName()).path() + "/crashpad_reports"; + return QFileInfo(settings->fileName()).path() + "/crashpad_reports"; else return QCoreApplication::applicationDirPath() + '/' + RELATIVE_LIBEXEC_PATH + "crashpad_reports"; -- cgit v1.2.3 From 25c0fc9c45658509f4199d254646148b517c5d81 Mon Sep 17 00:00:00 2001 From: Artem Sokolovskii Date: Tue, 5 Mar 2024 13:37:17 +0100 Subject: Android: Add output about JDK path issues Change-Id: Ib72c5e8e2e23aa1f24d5181a060c72aaa2006d37 Reviewed-by: Marcus Tillmanns --- src/plugins/android/androidsettingswidget.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/android/androidsettingswidget.cpp b/src/plugins/android/androidsettingswidget.cpp index c75ba299c5..1e086daa9f 100644 --- a/src/plugins/android/androidsettingswidget.cpp +++ b/src/plugins/android/androidsettingswidget.cpp @@ -10,6 +10,7 @@ #include "androidtr.h" #include +#include #include @@ -361,8 +362,10 @@ AndroidSettingsWidget::AndroidSettingsWidget() m_openJdkLocationPathChooser->setValidationFunction([](const QString &s) { return Utils::asyncRun([s]() -> expected_str { expected_str test = testJavaC(FilePath::fromUserInput(s)); - if (!test) + if (!test) { + Core::MessageManager::writeSilently(test.error()); return make_unexpected(test.error()); + } return s; }); }); -- cgit v1.2.3 From 911c486ff07a8314d3c6186c3a86888f84dd7817 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 1 Mar 2024 10:15:05 +0100 Subject: Qt/Help: Fix the "Highest Version Only" setting for the online installer The Qt support has the option to only register the documentation for "the highest Qt version", which is enabled by default. That is based on finding the help files for registered Qt versions and only registering the right set depending on the settings. Unfortunately the online installer additionally registers the Qt documentation path as a separate documentation set in the install settings. (This was originally introduced to support documentation for components that are not directly related to a Qt version.) The Help plugin that handles this setting doesn't know that the Qt support explicitly doesn't want the documentation of some Qt versions registered. Let the Qt support explicitly tell the Help plugin about documentation files that should not be registered, even if they appear in the separate install setting. Change-Id: I0512adc0dfe9969481ce83094f5349a49aae5d9f Reviewed-by: Christian Kandeler Reviewed-by: Reviewed-by: Marcus Tillmanns --- src/plugins/coreplugin/helpmanager.cpp | 6 +++ src/plugins/coreplugin/helpmanager.h | 1 + .../coreplugin/helpmanager_implementation.h | 1 + src/plugins/help/helpmanager.cpp | 13 ++++++ src/plugins/help/helpmanager.h | 1 + src/plugins/qtsupport/qtversionmanager.cpp | 49 ++++++++++++++++++---- 6 files changed, 64 insertions(+), 7 deletions(-) diff --git a/src/plugins/coreplugin/helpmanager.cpp b/src/plugins/coreplugin/helpmanager.cpp index 2fda96bf1e..01fc7eff47 100644 --- a/src/plugins/coreplugin/helpmanager.cpp +++ b/src/plugins/coreplugin/helpmanager.cpp @@ -97,5 +97,11 @@ void showHelpUrl(const QString &url, HelpViewerLocation location) showHelpUrl(QUrl(url), location); } +void setBlockedDocumentation(const QStringList &fileNames) +{ + if (checkInstance()) + m_instance->setBlockedDocumentation(fileNames); +} + } // HelpManager } // Core diff --git a/src/plugins/coreplugin/helpmanager.h b/src/plugins/coreplugin/helpmanager.h index 845b508015..55d449e696 100644 --- a/src/plugins/coreplugin/helpmanager.h +++ b/src/plugins/coreplugin/helpmanager.h @@ -38,6 +38,7 @@ enum HelpViewerLocation { CORE_EXPORT QString documentationPath(); CORE_EXPORT void registerDocumentation(const QStringList &fileNames); +CORE_EXPORT void setBlockedDocumentation(const QStringList &fileNames); CORE_EXPORT void unregisterDocumentation(const QStringList &fileNames); CORE_EXPORT QMultiMap linksForIdentifier(const QString &id); diff --git a/src/plugins/coreplugin/helpmanager_implementation.h b/src/plugins/coreplugin/helpmanager_implementation.h index c0d2356340..798a5a340e 100644 --- a/src/plugins/coreplugin/helpmanager_implementation.h +++ b/src/plugins/coreplugin/helpmanager_implementation.h @@ -17,6 +17,7 @@ protected: public: virtual void registerDocumentation(const QStringList &fileNames) = 0; + virtual void setBlockedDocumentation(const QStringList &fileNames) = 0; virtual void unregisterDocumentation(const QStringList &fileNames) = 0; virtual QMultiMap linksForIdentifier(const QString &id) = 0; virtual QMultiMap linksForKeyword(const QString &keyword) = 0; diff --git a/src/plugins/help/helpmanager.cpp b/src/plugins/help/helpmanager.cpp index 6a232083bd..7ec80e700d 100644 --- a/src/plugins/help/helpmanager.cpp +++ b/src/plugins/help/helpmanager.cpp @@ -54,6 +54,7 @@ struct HelpManagerPrivate // data for delayed initialization QSet m_filesToRegister; + QSet m_blockedDocumentation; QSet m_filesToUnregister; QHash m_customValues; @@ -146,6 +147,12 @@ void HelpManager::registerDocumentation(const QStringList &files) ProgressManager::addTask(future, Tr::tr("Update Documentation"), kUpdateDocumentationTask); } +void HelpManager::setBlockedDocumentation(const QStringList &fileNames) +{ + for (const QString &filePath : fileNames) + d->m_blockedDocumentation.insert(filePath); +} + static void unregisterDocumentationNow(QPromise &promise, const QString collectionFilePath, const QStringList &files) @@ -334,6 +341,12 @@ void HelpManager::setupHelpManager() for (const QString &filePath : d->documentationFromInstaller()) d->m_filesToRegister.insert(filePath); + // The online installer registers documentation for Qt versions explicitly via an install + // setting, which defeats that we only register the Qt versions matching the setting. + // So the Qt support explicitly blocks the files that we do _not_ want to register, so the + // Help plugin knows about this. + d->m_filesToRegister -= d->m_blockedDocumentation; + d->cleanUpDocumentation(); if (!d->m_filesToUnregister.isEmpty()) { diff --git a/src/plugins/help/helpmanager.h b/src/plugins/help/helpmanager.h index 6a5874e7df..5f0efe5620 100644 --- a/src/plugins/help/helpmanager.h +++ b/src/plugins/help/helpmanager.h @@ -29,6 +29,7 @@ public: static QString collectionFilePath(); void registerDocumentation(const QStringList &fileNames) override; + void setBlockedDocumentation(const QStringList &fileNames) override; void unregisterDocumentation(const QStringList &fileNames) override; static void registerUserDocumentation(const QStringList &filePaths); diff --git a/src/plugins/qtsupport/qtversionmanager.cpp b/src/plugins/qtsupport/qtversionmanager.cpp index acdaba6282..063a130984 100644 --- a/src/plugins/qtsupport/qtversionmanager.cpp +++ b/src/plugins/qtsupport/qtversionmanager.cpp @@ -120,7 +120,8 @@ public: void updateDocumentation(const QtVersions &added, const QtVersions &removed, - const QtVersions &allNew); + const QtVersions &allNew, + bool updateBlockedDocumentation = false); void setNewQtVersions(const QtVersions &newVersions); QString qmakePath(const QString &qtchooser, const QString &version); @@ -174,7 +175,7 @@ void QtVersionManagerImpl::triggerQtVersionRestore() } // exists const QtVersions vs = QtVersionManager::versions(); - updateDocumentation(vs, {}, vs); + updateDocumentation(vs, {}, vs, /*updateBlockedDocumentation=*/true); } bool QtVersionManager::isLoaded() @@ -499,9 +500,13 @@ void QtVersionManager::registerExampleSet(const QString &displayName, using Path = QString; using FileName = QString; -static QList> documentationFiles(QtVersion *v) +using DocumentationFile = std::pair; +using DocumentationFiles = QList; +using AllDocumentationFiles = QHash; + +static DocumentationFiles allDocumentationFiles(QtVersion *v) { - QList> files; + DocumentationFiles files; const QStringList docPaths = QStringList( {v->docsPath().toString() + QChar('/'), v->docsPath().toString() + "/qch/"}); for (const QString &docPath : docPaths) { @@ -512,7 +517,17 @@ static QList> documentationFiles(QtVersion *v) return files; } -static QStringList documentationFiles(const QtVersions &vs, bool highestOnly = false) +static AllDocumentationFiles allDocumentationFiles(const QtVersions &versions) +{ + AllDocumentationFiles result; + for (QtVersion *v : versions) + result.insert(v, allDocumentationFiles(v)); + return result; +} + +static QStringList documentationFiles(const QtVersions &vs, + const AllDocumentationFiles &allDocumentationFiles, + bool highestOnly = false) { // if highestOnly is true, register each file only once per major Qt version, even if // multiple minor or patch releases of that major version are installed @@ -522,7 +537,8 @@ static QStringList documentationFiles(const QtVersions &vs, bool highestOnly = f for (QtVersion *v : versions) { const int majorVersion = v->qtVersion().majorVersion(); QSet &majorVersionFileNames = includedFileNames[majorVersion]; - for (const std::pair &file : documentationFiles(v)) { + const DocumentationFiles files = allDocumentationFiles.value(v); + for (const std::pair &file : files) { if (!highestOnly || !majorVersionFileNames.contains(file.second)) { filePaths.insert(file.first + file.second); majorVersionFileNames.insert(file.second); @@ -532,15 +548,23 @@ static QStringList documentationFiles(const QtVersions &vs, bool highestOnly = f return filePaths.values(); } +static QStringList documentationFiles(const QtVersions &vs) +{ + return documentationFiles(vs, allDocumentationFiles(vs)); +} + void QtVersionManagerImpl::updateDocumentation(const QtVersions &added, const QtVersions &removed, - const QtVersions &allNew) + const QtVersions &allNew, + bool updateBlockedDocumentation) { using DocumentationSetting = QtVersionManager::DocumentationSetting; const DocumentationSetting setting = QtVersionManager::documentationSetting(); + const AllDocumentationFiles allNewDocFiles = allDocumentationFiles(allNew); const QStringList docsOfAll = setting == DocumentationSetting::None ? QStringList() : documentationFiles(allNew, + allNewDocFiles, setting == DocumentationSetting::HighestOnly); const QStringList docsToRemove = Utils::filtered(documentationFiles(removed), @@ -551,6 +575,17 @@ void QtVersionManagerImpl::updateDocumentation(const QtVersions &added, [&docsOfAll](const QString &f) { return docsOfAll.contains(f); }); + + if (updateBlockedDocumentation) { + // The online installer registers documentation for Qt versions explicitly via an install + // setting, which defeats that we only register the Qt versions matching the setting. + // So the Qt support explicitly blocks the files that we do _not_ want to register, so the + // Help plugin knows about this. + const QSet reallyAllFiles = toSet(documentationFiles(allNew, allNewDocFiles)); + const QSet toBlock = reallyAllFiles - toSet(docsOfAll); + Core::HelpManager::setBlockedDocumentation(toList(toBlock)); + } + Core::HelpManager::unregisterDocumentation(docsToRemove); Core::HelpManager::registerDocumentation(docsToAdd); } -- cgit v1.2.3 From 118e39cae2eac020c0f649f2902fd9359fea4fbd Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 4 Mar 2024 05:50:06 +0100 Subject: LSP: fix placeholder key see https://microsoft.github.io/language-server-protocol/specifications/ lsp/3.17/specification/#textDocument_prepareRename This fixes the empty replacement input field when renaming a global symbol with current clangd from the llvm main branch. Change-Id: I6539a17c6172e7c96088645ab7234d9b0213170c Reviewed-by: Christian Kandeler --- src/libs/languageserverprotocol/jsonkeys.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/languageserverprotocol/jsonkeys.h b/src/libs/languageserverprotocol/jsonkeys.h index f9ef7b4bed..236d28bfda 100644 --- a/src/libs/languageserverprotocol/jsonkeys.h +++ b/src/libs/languageserverprotocol/jsonkeys.h @@ -143,7 +143,7 @@ constexpr Key parametersKey{"parameters"}; constexpr Key paramsKey{"params"}; constexpr Key patternKey{"pattern"}; constexpr Key percentageKey{"percentage"}; -constexpr Key placeHolderKey{"placeHolder"}; +constexpr Key placeHolderKey{"placeholder"}; constexpr Key positionKey{"position"}; constexpr Key prepareProviderKey{"prepareProvider"}; constexpr Key prepareSupportKey{"prepareSupport"}; -- cgit v1.2.3 From 3517123ff48bc32a89edaf57600ca6be3c287253 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 5 Mar 2024 13:07:40 +0100 Subject: LanguageClient: fix assist provider leak on client destruction Change-Id: I2d932c2123f48a65be1c6406ed669feda03c93ea Reviewed-by: Christian Stenger --- src/plugins/languageclient/client.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp index 7095c45048..90120e3174 100644 --- a/src/plugins/languageclient/client.cpp +++ b/src/plugins/languageclient/client.cpp @@ -207,6 +207,9 @@ public: // do not handle messages while shutting down disconnect(m_clientInterface, &InterfaceController::messageReceived, q, &Client::handleMessage); + delete m_clientProviders.completionAssistProvider; + delete m_clientProviders.functionHintProvider; + delete m_clientProviders.quickFixAssistProvider; delete m_diagnosticManager; delete m_clientInterface; } -- cgit v1.2.3 From 5a1e5ce0583ef9bf2cafb247d2af477abf3703b5 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 4 Mar 2024 10:47:24 +0100 Subject: Doc: Split up "Searching with the Locator" Hide the locator docs from the QDS Manual because the locator is not visible in the Code view. Task-number: QTCREATORBUG-29361 Change-Id: Iecbbaece78b0cd6a496289fd9a00acfdd054d41f Reviewed-by: Eike Ziller --- .../src/cmake/creator-projects-cmake.qdoc | 4 +- doc/qtcreator/src/editors/creator-locator.qdoc | 325 --------------------- .../creator-only/creator-clang-codemodel.qdoc | 2 +- .../creator-only/creator-coding-edit-mode.qdoc | 6 +- .../src/editors/creator-only/creator-copilot.qdoc | 2 +- .../creator-only/creator-language-server.qdoc | 2 +- .../src/editors/creator-only/creator-locator.qdoc | 265 +++++++++++++++++ .../creator-only/creator-text-editing-macros.qdoc | 2 +- doc/qtcreator/src/editors/creator-search.qdoc | 2 +- .../src/howto/creator-how-to-find-preferences.qdoc | 6 +- .../src/howto/creator-only/creator-how-tos.qdoc | 98 ++++++- doc/qtcreator/src/howto/creator-sessions.qdoc | 32 +- .../creator-only/creator-files-creating.qdoc | 10 +- .../creator-only/creator-projects-building.qdoc | 2 +- .../creator-only/creator-projects-creating.qdoc | 2 +- .../user-interface/creator-file-system-view.qdoc | 2 +- .../src/user-interface/creator-projects-view.qdoc | 2 +- doc/qtcreator/src/user-interface/creator-ui.qdoc | 2 +- .../src/developers/studio-jump-to-the-code.qdoc | 2 +- .../src/overviews/studio-finding.qdoc | 6 - doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc | 1 - 21 files changed, 408 insertions(+), 367 deletions(-) delete mode 100644 doc/qtcreator/src/editors/creator-locator.qdoc create mode 100644 doc/qtcreator/src/editors/creator-only/creator-locator.qdoc diff --git a/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc b/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc index f4abbfa86e..a1130b7a89 100644 --- a/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc +++ b/doc/qtcreator/src/cmake/creator-projects-cmake.qdoc @@ -198,8 +198,8 @@ \uicontrol Projects view and select \uicontrol {Open With} > \uicontrol {CMake Editor}. - You can also use the \c cmo filter in the \l {Searching with the Locator} - {locator} to open the CMakeLists.txt file for the current run configuration + You can also use the \c cmo filter in the \l {Navigate with locator}{locator} + to open the CMakeLists.txt file for the current run configuration in the editor. This is the same build target as when you select \uicontrol Build > \uicontrol {Build for Run Configuration}. diff --git a/doc/qtcreator/src/editors/creator-locator.qdoc b/doc/qtcreator/src/editors/creator-locator.qdoc deleted file mode 100644 index 292b35ff30..0000000000 --- a/doc/qtcreator/src/editors/creator-locator.qdoc +++ /dev/null @@ -1,325 +0,0 @@ -// Copyright (C) 2023 The Qt Company Ltd. -// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only - -/*! - \page creator-editor-locator.html - \previouspage creator-how-to-advanced-search.html - \if defined(qtdesignstudio) - \nextpage creator-jump-to-the-code.html - \else - \nextpage creator-how-tos.html - \endif - - \title Searching with the Locator - - The locator is the fastest way to find a particular project, file, class, or - function, or almost anything else in your project. - - By default, you can find the locator in the bottom left of the \QC window. - To open it as a centered popup, click \inlineimage icons/magnifier.png - (\uicontrol Options) in it and select \uicontrol {Open as Centered Popup}. - - \image qtcreator-locator.webp "List of locator filters" - - \section1 Activating the Locator - - To activate the locator: - - \list - - \li Press \key {Ctrl+K} (\key {Cmd+K} on \macos). - - \li Select \uicontrol Tools > \uicontrol Locate. - - \li Select \uicontrol Edit > \uicontrol {Go to Line}. - \if defined(qtcreator) - \li Click the line and column indicator on the - \l{Edit Mode}{editor toolbar}. - \endif - \endlist - - \section1 Using Locator Filters - - You can locate not only files, but any items defined by \e{locator filters}, - as well as trigger global actions and perform other tasks, such as build - projects or run external tools. - - The filters that are available depend on the file type. For more information - about what a particular locator filter does, see the tooltips that appear - when you hover over a filter in the locator. For longer descriptions of the - filters, select \uicontrol Configure to open the \uicontrol Locator - \l{Creating Locator Filters}{preferences}. - - To use a locator filter, type its prefix followed by \key Space. The prefix - is usually short, from one to three characters. Then type the search string - (for example, a filename or class name) or the command to execute. - - You can also double-click a locator filter in the filter list to use it. Use - the up and down arrow keys or the \key Ctrl+P and \key Ctrl+N - keyboard shortcuts to move up and down the list, and then press \key Enter - to use the selected filter. - - As you type a search string, - the locator shows the occurrences of that string regardless of where in the - name of an component it appears. Some locator filters, such as colon, \c m, - and \c t, support \e fuzzy matching, which means that you can enter the - uppercase letters to locate a symbol when using camel case or the letters - after the underscore when using snake case. - - To narrow down the search results, use the following wildcard characters: - - \list - - \li To match any number of any or no characters, enter \c{*}. - - \li To match a single instance of any character, enter \c{?}. - - \endlist - - \section2 Locating Lines and Columns - - To move directly to a particular line and column in the document when you - open the document, append the line and column number to the file name in - the locator, separated by plus signs (+) or colons (:). - - For example, to open \e HelloWorld.qml to line - 41 and column 2, enter: - - \code - HelloWorld.qml:41:2 - \endcode - - \section2 Creating Files and Directories from Locator - - To create a new file and open it in the editor, type \c f - followed by \key Space, followed by path and file name, and then press - \key Enter or select \uicontrol {Create and Open File}. To create a - directory, select \uicontrol {Create Directory}. - - \section2 Opening Sessions from Locator - - You can use the filter that triggers menu commands to open - \l{Manage sessions}{sessions}. Enter - \c {t yoursess} or \c {t sess yoursess} to trigger \uicontrol File > - \uicontrol Sessions > \e . - - \section2 Default Filters - - By default, you can use the following preset locator filters without a - prefix: - - \list - - \li Going to a line and column in the current file (\c {l}). - - \li Going to an open file (\c {o}). - - \li Going to a file in any open project (\c {a}). - - \endlist - - \section1 Changing Locator Filters - - You can change the preset locator filters to match your use case. For - example, you can change the filter prefix and restrict the search to - items that match the filter. - - \image qtcreator-locator-filter-edit-ai.webp {Filter Configuration dialog} - - To configure a locator filter: - - \list 1 - - \li In the locator, click \inlineimage icons/magnifier.png - (\uicontrol Options) and select \uicontrol Configure to open the - \uicontrol Locator preferences. - - \li Select a filter, and then select \uicontrol Edit. - - \li Specify the prefix string. - - \li To implicitly include the filter even when not typing a prefix as a - part of the search string, select \uicontrol {Include by default}. - - \li Set other available preferences. - - \endlist - - \section2 Adding Web Search Engines - - You can use the \uicontrol {Web Search (r)} locator filter to perform - web searches. URLs and search commands for Bing, Google, Yahoo! Search, - cplusplus.com, and Wikipedia are configured by default. - - To find out the format of the search command to use for your favorite - web search engine, perform a search in your browser and copy the resulting - URL to the locator filter configuration. Replace the search term with the - variable \c {%1}. - - To add URLs and search commands to the list: - - \list 1 - - \li Select \preferences > \uicontrol Environment > \uicontrol Locator > - \uicontrol {Web Search} > \uicontrol Edit. - - \li Select \uicontrol Add to add a new entry to the list. - - \image qtcreator-add-online-doc.webp "List of URLs in Filter Configuration dialog" - - \li Double-click the new entry to specify a URL and a search command. - For example, \c {http://www.google.com/search?q=%1}. - - \li Click \uicontrol OK. - - \endlist - - \section1 Creating Locator Filters - - You can create custom locator filters for searching in a directory structure - or on the web. - - To quickly access files not directly mentioned in your project, you can - create your own directory filters. That way you can locate files in a - directory structure you have defined. - - To create custom locator filters: - - \list 1 - - \li In the locator, select \uicontrol Options > - \uicontrol Configure to open the \uicontrol Locator preferences. - - \image qtcreator-locator-customize.webp "Locator preferences" - - \li Select \uicontrol Add > \uicontrol {Files in Directories} to add - a directory filter or \uicontrol {URL Template} to add a URL - filter. The settings to specify depend on the filter type. - - \image qtcreator-locator-generic-directory-filter.png "Filter Configuration dialog" - - \li In the \uicontrol Name field, enter a name for your filter. - - \li In the \uicontrol Directories field, select at least one - directory. The locator searches directories recursively. - - \li In the \uicontrol {File pattern} field, specify file patterns to - restrict the search to files that match the pattern. - Separate the patterns with commas. For example, to search for all - \c {.qml} and \c {.ui.qml} files, enter \c{*.qml,*.ui.qml} - - \li In the \uicontrol {Exclusion pattern} field, specify file - patterns to omit files from the search. - - \li In the \uicontrol Prefix field, specify the prefix string. - - To implicitly include the filter even when not typing a prefix - as a part of the search string, select - \uicontrol {Include by default}. - - \li Select \uicontrol OK. - - \endlist - - \section1 Configuring Locator Cache - - The locator searches the files matching your file pattern in the directories - you have selected and caches that information. \QC updates the cache for all - preset filters as you write code. By default, \QC updates your custom - filters once an hour. - - To update the cached information manually, select \uicontrol Options > - \uicontrol Refresh in the locator. - - To set a new cache update time: - - \list 1 - - \li Select \preferences > \uicontrol Environment > \uicontrol Locator. - - \li In \uicontrol {Refresh interval}, define new time in minutes. - - \endlist - - \section1 Executing JavaScript - - The locator has a JavaScript interpreter for performing calculations. - - Beside simple mathematical operations, like ((1 + 2) * 3), the following - built-in functions exist: - - \table - \header - \li Function - \li Purpose - \row - \li abs(x) - \li Returns the absolute value of x - \row - \li acos(x) - \li Returns the arccosine of x, in radians - \row - \li asin(x) - \li Returns the arcsine of x, in radians - \row - \li atan(x) - \li Returns the arctangent of x, in radians - \row - \li atan2(x, y) - \li Returns the arctangent of the quotient of its arguments - \row - \li bin(x) - \li Returns the binary representation of x - \row - \li ceil(x) - \li Returns the value of x rounded up to the next integer - \row - \li cos(x) - \li Returns the cosine of x (x is in radians) - \row - \li exp(x) - \li Returns the value of E to the power of x - \row - \li e() - \li Returns Euler's number E (2.71828...) - \row - \li floor(x) - \li Returns the value of x rounded down to the next integer - \row - \li hex(x) - \li Returns the hexadecimal representation of x - \row - \li log(x) - \li Returns the natural logarithm (base E) of x - \row - \li max([value1[, value2[, ...]]]) - \li Returns the highest value of the given numbers - \row - \li min([value1[, value2[, ...]]]) - \li Returns the lowest value of the given numbers - \row - \li oct(x) - \li Returns the octal representation of x - \row - \li pi() - \li Returns PI (3.14159...) - \row - \li pow(x, y) - \li Returns the value of x to the power of y - \row - \li random() - \li Returns a random number between 0 and 1 - \row - \li round(x) - \li Returns the value of x rounded to the next integer - \row - \li sin(x) - \li Returns the sine of x (x is in radians) - \row - \li sqrt(x) - \li Returns the square root of x - \row - \li tan(x) - \li Returns the tangent of x (x is in radians) - \endtable -*/ diff --git a/doc/qtcreator/src/editors/creator-only/creator-clang-codemodel.qdoc b/doc/qtcreator/src/editors/creator-only/creator-clang-codemodel.qdoc index b958f83655..e4706d6711 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-clang-codemodel.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-clang-codemodel.qdoc @@ -27,7 +27,7 @@ \li Syntactic and \l{Semantic Highlighting}{semantic highlighting} - \li Navigating in the code by using the \l{Searching with the Locator} + \li Navigating in the code by using the \l{Navigate with locator} {locator}, \l{Move to symbol definition or declaration} {following symbols}, and so on diff --git a/doc/qtcreator/src/editors/creator-only/creator-coding-edit-mode.qdoc b/doc/qtcreator/src/editors/creator-only/creator-coding-edit-mode.qdoc index 8e0105b18b..bb730e402a 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-coding-edit-mode.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-coding-edit-mode.qdoc @@ -173,7 +173,7 @@ \sa {Edit Code}{How To: Edit Code}, {Manage Language Servers}{How To: Manage Language Servers}, - {Searching with the Locator}, {Keyboard Shortcuts}, {Sidebar Views} + {Navigate with locator}, {Keyboard Shortcuts}, {Sidebar Views} */ /*! @@ -258,7 +258,7 @@ \endlist \sa {Edit Code}{How To: Edit Code}, {Edit Mode}, - {Searching with the Locator}, {File System}, {Projects} + {Navigate with locator}, {File System}, {Projects} */ /*! @@ -378,7 +378,7 @@ \image qtcreator-add-resource.png {Resource Browser} \sa {Edit Code}{How To: Edit Code}, {Edit Mode}, {Editing Keyboard Shortcuts}, - {Searching with the Locator} + {Navigate with locator} */ /*! diff --git a/doc/qtcreator/src/editors/creator-only/creator-copilot.qdoc b/doc/qtcreator/src/editors/creator-only/creator-copilot.qdoc index 8855d4017f..d2ca268130 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-copilot.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-copilot.qdoc @@ -78,7 +78,7 @@ To manually request a suggestion at the current editor's cursor position, enter \uicontrol {t} (\uicontrol {Request Copilot Suggestion}) in the - \l{Searching with the Locator}{locator}. + \l{Navigate with locator}{locator}. Hover the mouse over a suggestion to show a toolbar with \inlineimage icons/prev.png diff --git a/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc b/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc index 7572451a83..897facbe4a 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-language-server.qdoc @@ -29,7 +29,7 @@ \li \l{Semantic Highlighting}{Semantic highlighting}, as defined in \l{https://github.com/microsoft/vscode-languageserver-node/pull/367} {Proposal of the semantic highlighting protocol extension} - \li Navigating in the code by using the \l{Searching with the Locator} + \li Navigating in the code by using the \l{Navigate with locator} {locator} or \l{Move to symbol definition or declaration} {moving to the symbol definition} \li Inspecting code by viewing the document outline in the diff --git a/doc/qtcreator/src/editors/creator-only/creator-locator.qdoc b/doc/qtcreator/src/editors/creator-only/creator-locator.qdoc new file mode 100644 index 0000000000..af9f3a3d82 --- /dev/null +++ b/doc/qtcreator/src/editors/creator-only/creator-locator.qdoc @@ -0,0 +1,265 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only + +/*! + \page creator-editor-locator.html + \previouspage creator-how-tos.html + + \ingroup creator-how-to-search + + \title Navigate with locator + + Locate not only files, but any items defined by \e{locator filters}, + as well as trigger global actions and perform other tasks, such as build + projects or run external tools. + + \image qtcreator-locator.webp {List of locator filters} + + \section1 Go to the locator + + To activate the locator: + + \list + + \li Press \key {Ctrl+K} (\key {Cmd+K} on \macos). + + \li Go to \uicontrol Tools, and then select \uicontrol Locate. + + \li Go to \uicontrol Edit, and then select \uicontrol {Go to Line}. + + \li Click the line and column indicator on the + \l{Edit Mode}{editor toolbar}. + + \endlist + + By default, you can find the locator in the bottom left of the \QC window. + To open it as a centered popup, select \inlineimage icons/magnifier.png, and + then select \uicontrol {Open as Centered Popup}. + + \section1 Use locator filters + + The filters that are available depend on the file type. For more information + about what a particular locator filter does, see the tooltips that appear + when you hover over a filter in the locator. For longer descriptions of the + filters, select \inlineimage icons/magnifier.png > \uicontrol Configure to + open the \l{Locator} preferences. + + To use a locator filter: + + \list + \li Type the locator filter prefix followed by \key Space. The prefix + is usually short, from one to three characters. Then type the search + string (for example, a filename or class name) or the command to + execute. + + \li Double-click a locator filter in the filter list to use it. Press + the up and down arrow keys or press \key Ctrl+P and \key Ctrl+N + to move up and down the list, and then press \key Enter to use the + selected filter. + \endlist + + As you type a search string, + the locator shows the occurrences of that string regardless of where in the + name of an object it appears. Some locator filters, such as colon, \c m, + and \c t, support \e fuzzy matching, which means that you can enter the + uppercase letters to locate a symbol when using camel case or the letters + after the underscore when using snake case. + + \section2 Use wildcard characters in search strings + + To narrow down the search results, use the following wildcard characters: + + \list + + \li To match any number of any or no characters, enter \c{*}. + + \li To match a single instance of any character, enter \c{?}. + + \endlist + + \section1 Omit default filters + + By default, you can use the following preset locator filters without a + prefix: + + \list + + \li Going to a line and column in the current file (\c {l}). + + \li Going to an open file (\c {o}). + + \li Going to a file in any open project (\c {a}). + + \endlist + + \section1 Locate lines and columns + + To move directly to a particular line and column in the document when you + open the document, append the line and column number to the file name in + the locator, separated by plus signs (+) or colons (:). + + For example, to open \e HelloWorld.qml to line + 41 and column 2, enter: + + \code + HelloWorld.qml:41:2 + \endcode + + \section1 Search the web + + Use the \uicontrol {Web Search (r)} locator filter to perform web searches. + + URLs and search commands for Bing, Google, Yahoo! Search, cplusplus.com, and + Wikipedia are configured by default. Add search commands for other web search + engines in the locator preferences. + + \section1 Create files and directories from the locator + + To create a new file and open it in the editor: + + \list 1 + \li Type \c f followed by \key Space, followed by path and file name + \li Press \key Enter or select \uicontrol {Create and Open File}. + \endlist + + To create a directory, select \uicontrol {Create Directory}. + + \sa {Search}{How To: Search}, {Manage sessions}, {Perform calculations}, + {Locator} + +*/ + +/*! + \page creator-preferences-locator.html + \previouspage creator-reference.html + + \ingroup creator-reference-preferences + + \title Locator + + \brief Add and change locator filters. + + To set locator preferences, go to \preferences > \uicontrol Environment > + \uicontrol Locator. + + \image qtcreator-locator-customize.webp {Locator preferences} + + \section1 Changing Locator Filters + + You can change the preset locator filters to match your use case. For + example, change the filter prefix and restrict the search to + items that match the filter. + + To configure a locator filter: + + \list 1 + + \li Go to \preferences > \uicontrol Environment > \uicontrol Locator. + + \li Select a filter, and then select \uicontrol Edit. + + \li Specify the prefix string. + + \image qtcreator-locator-filter-edit-ai.webp {Filter Configuration dialog} + + \li To implicitly include the filter even when not typing a prefix as a + part of the search string, select \uicontrol {Include by default}. + + \endlist + + \section1 Adding Web Search Engines + + By default, the \uicontrol {Web Search (r)} locator filter includes the URLs + and search commands for Bing, Google, Yahoo! Search, cplusplus.com, and + Wikipedia. + + To find out the format of the search command to use for your favorite + web search engine, perform a search in your browser and copy the resulting + URL to the locator filter configuration. Replace the search term with the + variable \c {%1}. + + To add URLs and search commands to the list: + + \list 1 + + \li Go to \preferences > \uicontrol Environment > \uicontrol Locator. + + \li Select \uicontrol {Web Search} > \uicontrol Edit. + + \li Select \uicontrol Add to add a URL filter to the list. + + \image qtcreator-add-online-doc.webp {List of URLs in Filter Configuration dialog} + + \li Double-click the new entry to specify a URL and a search command. + For example, \c {http://www.google.com/search?q=%1}. + + \li Click \uicontrol OK. + + \endlist + + To add a new separate web search locator filter instead of updating the + default filter, select \uicontrol Add > \uicontrol {URL Template}. + + \section1 Creating Locator Filters + + To quickly access files not directly mentioned in your project, + create your own directory filters. That way you can locate files in a + directory structure you have defined. + + To create custom locator filters: + + \list 1 + + \li Go to \preferences > \uicontrol Environment > \uicontrol Locator. + + \li Select \uicontrol Add > \uicontrol {Files in Directories} to add + a directory filter. + + \image qtcreator-locator-generic-directory-filter.png {Filter Configuration dialog} + + \li In \uicontrol Name, enter a name for your filter. + + \li Select \uicontrol Add to add directories to \uicontrol Directories. + The locator searches directories recursively. + + \li In \uicontrol {File pattern}, specify file patterns to + restrict the search to files that match the pattern. + Separate the patterns with commas. For example, to search for all + \c {.qml} and \c {.ui.qml} files, enter \c{*.qml,*.ui.qml} + + \li In \uicontrol {Exclusion pattern}, specify file + patterns to omit files from the search. + + \li In \uicontrol Prefix, specify the prefix string. + + To implicitly include the filter even when not typing a prefix + as a part of the search string, select + \uicontrol {Include by default}. + + \li Select \uicontrol OK. + + \endlist + + \section1 Configuring Locator Cache + + The locator searches the files matching your file pattern in the directories + you have selected and caches that information. \QC updates the cache for all + preset filters as you write code. By default, \QC updates your custom + filters once an hour. + + To update the cached information manually, select + \inlineimage icons/magnifier.png > \uicontrol Refresh in the locator. + + To set a new cache update time: + + \list 1 + + \li Go to \preferences > \uicontrol Environment > \uicontrol Locator. + + \li In \uicontrol {Refresh interval}, set a new time in minutes. + + \endlist + + \sa {Navigate with locator}, {Search}{How To: Search}, {Perform calculations}, + {Locator} +*/ diff --git a/doc/qtcreator/src/editors/creator-only/creator-text-editing-macros.qdoc b/doc/qtcreator/src/editors/creator-only/creator-text-editing-macros.qdoc index 1ea89d69d8..fd4b4a8b70 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-text-editing-macros.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-text-editing-macros.qdoc @@ -28,7 +28,7 @@ \uicontrol Keyboard. For more information, see \l{Assign keyboard shortcuts}. You can also use the \c rm locator filter to run a macro. For more - information, see \l{Searching with the Locator}. + information, see \l{Navigate with locator}. To view and remove saved macros, select \preferences > \uicontrol {Text Editor} > \uicontrol Macros. diff --git a/doc/qtcreator/src/editors/creator-search.qdoc b/doc/qtcreator/src/editors/creator-search.qdoc index e47957f48e..c3bd9e1fa2 100644 --- a/doc/qtcreator/src/editors/creator-search.qdoc +++ b/doc/qtcreator/src/editors/creator-search.qdoc @@ -131,7 +131,7 @@ \page creator-how-to-advanced-search.html \if defined(qtdesignstudio) \previouspage creator-editor-finding.html - \nextpage creator-editor-locator.html + \nextpage creator-how-to-rename-symbols.html \else \previouspage creator-how-tos.html \endif diff --git a/doc/qtcreator/src/howto/creator-how-to-find-preferences.qdoc b/doc/qtcreator/src/howto/creator-how-to-find-preferences.qdoc index b59e970921..b0be3871e3 100644 --- a/doc/qtcreator/src/howto/creator-how-to-find-preferences.qdoc +++ b/doc/qtcreator/src/howto/creator-how-to-find-preferences.qdoc @@ -40,12 +40,16 @@ \image qtcreator-preferences.webp {Filtering preferences} + \if defined(qtcreator) \section1 Go to tabs in Preferences To go to a tab in the \uicontrol Preferences dialog from anywhere in \QC, - use the \c t \l{Searching with the Locator}{locator} filter. For example, + use the \c t \l{Navigate with locator}{locator} filter. For example, to open the \uicontrol Interface tab, enter \c {t preferences interface} in the locator. \image qtcreator-locator-filter-t.webp {Using the locator to open a tab in Preferences} + + \sa {Navigate with locator} + \endif */ diff --git a/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc b/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc index a715f171cb..07459d9a9b 100644 --- a/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc +++ b/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc @@ -230,13 +230,99 @@ \title Perform calculations - Open the \uicontrol Locator with \key {Ctrl+K} and type =, followed by a space. - You can now do basic calculations, with options to copy the results to the clipboard - by navigating through the entries and pressing \key {Enter}. + To do basic calculations in the locator: - \image qtcreator-locator.webp "List of locator filters" + \list 1 + \li Press \key {Ctrl+K} (\key {Cmd+K} on \macos) to activate the locator. + \li Enter \c =, followed by a space. + \image qtcreator-locator.webp {List of locator filters} + \li Perform calculations. + \endlist - \sa {Executing JavaScript} + Navigate through the entries and press \key {Enter} to copy the results to + the clipboard + + \section1 Built-in functions + + Beside simple mathematical operations, like ((1 + 2) * 3), the following + built-in functions exist: + + \table + \header + \li Function + \li Purpose + \row + \li abs(x) + \li Returns the absolute value of x + \row + \li acos(x) + \li Returns the arccosine of x, in radians + \row + \li asin(x) + \li Returns the arcsine of x, in radians + \row + \li atan(x) + \li Returns the arctangent of x, in radians + \row + \li atan2(x, y) + \li Returns the arctangent of the quotient of its arguments + \row + \li bin(x) + \li Returns the binary representation of x + \row + \li ceil(x) + \li Returns the value of x rounded up to the next integer + \row + \li cos(x) + \li Returns the cosine of x (x is in radians) + \row + \li exp(x) + \li Returns the value of E to the power of x + \row + \li e() + \li Returns Euler's number E (2.71828...) + \row + \li floor(x) + \li Returns the value of x rounded down to the next integer + \row + \li hex(x) + \li Returns the hexadecimal representation of x + \row + \li log(x) + \li Returns the natural logarithm (base E) of x + \row + \li max([value1[, value2[, ...]]]) + \li Returns the highest value of the given numbers + \row + \li min([value1[, value2[, ...]]]) + \li Returns the lowest value of the given numbers + \row + \li oct(x) + \li Returns the octal representation of x + \row + \li pi() + \li Returns PI (3.14159...) + \row + \li pow(x, y) + \li Returns the value of x to the power of y + \row + \li random() + \li Returns a random number between 0 and 1 + \row + \li round(x) + \li Returns the value of x rounded to the next integer + \row + \li sin(x) + \li Returns the sine of x (x is in radians) + \row + \li sqrt(x) + \li Returns the square root of x + \row + \li tan(x) + \li Returns the tangent of x (x is in radians) + \endtable + + \sa {Navigate with locator}, {Locator} */ /*! @@ -281,7 +367,7 @@ \li Go to \uicontrol {Follow Symbol Under Cursor} in the context menu. \endlist - \sa {Edit Code}{How To: Edit Code}, {Edit Mode}, {Searching with the Locator} + \sa {Edit Code}{How To: Edit Code}, {Edit Mode}, {Navigate with locator} */ /*! diff --git a/doc/qtcreator/src/howto/creator-sessions.qdoc b/doc/qtcreator/src/howto/creator-sessions.qdoc index 348bea2139..e047169118 100644 --- a/doc/qtcreator/src/howto/creator-sessions.qdoc +++ b/doc/qtcreator/src/howto/creator-sessions.qdoc @@ -82,7 +82,12 @@ \section1 Open sessions - To switch between sessions, select \uicontrol {Open}. + To switch between sessions: + + \list + \li Go to \uicontrol File > \uicontrol Sessions, and select a session. + \li Select \uicontrol {Open} in \uicontrol {Session Manager}. + \endlist \if defined(qtcreator) @@ -93,17 +98,30 @@ \image qtcreator-welcome-session.png - You can also use the \c t locator filter to open a session. For more - information, see \l{Searching with the Locator}. - To view more information about a session, select the down arrow icon that appears when you move the mouse cursor over the session name. Select actions to clone, rename, and delete sessions. When you start \QC from the command line, you can give the name of - a session as an argument and \QC will start with this session. + a session as an argument to start \QC with this session. - \sa {Command-Line Options}, {Searching with the Locator} - \endif + \section1 Open sessions from the locator + + Use the \c t filter that triggers menu commands to open sessions. + To locate a session: + + \list 1 + \li Press \key {Ctrl+K} (\key {Cmd+K} on \macos) to activate the locator. + \li Enter: + \list + \li \c {t} \e {} + \li \c {t sess} \e {} + \endlist + where \e is the name of the session to open. + \li Double-click the session name to open it. + \endlist + + \sa {Navigate with locator}, {Command-Line Options} + \endif */ diff --git a/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc b/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc index 084bc90c1a..83808a6a1e 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc @@ -18,9 +18,8 @@ \image qtcreator-new-file.webp {New File wizard} \note You can also use the \c f locator filter to create a new - file and open it in the editor. For more information, see - \l {Creating Files and Directories from Locator}. However, you must - manually add the created file to a project. + file and open it in the editor. However, you must manually add + the created file to a project. \section1 Select file type @@ -74,8 +73,9 @@ \li Empty Nim source and script files. \endtable - \sa {Add Files}{How To: Add Files}, {Add tests to existing test projects}, - {Create UML-style models}, {Use project wizards} + \sa {Navigate with locator}, {Add Files}{How To: Add Files}, + {Add tests to existing test projects}, {Create UML-style models}, + {Use project wizards} */ /*! diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-building.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-building.qdoc index 13b7d6eb9a..512a3886ab 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-building.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-building.qdoc @@ -81,7 +81,7 @@ Select \uicontrol {Build for Run Configuration} to build the executable that corresponds to the selected run configuration. - You can also use the \c cm filter in the \l {Searching with the Locator} + You can also use the \c cm filter in the \l {Navigate with locator} {locator}. To remove all build artifacts, select one of \uicontrol {Clean} menu commands. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc index 914516417a..1efac95137 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc @@ -198,7 +198,7 @@ directory in the \l {File System} view. Declaring files as a part of the project also makes them visible to the - \l{Searching with the Locator}{locator} and + \l{Navigate with locator}{locator} and \l{Search in projects or file systems}{project-wide search}. \section1 CMake Projects diff --git a/doc/qtcreator/src/user-interface/creator-file-system-view.qdoc b/doc/qtcreator/src/user-interface/creator-file-system-view.qdoc index 3b8a7d59cf..06226006d5 100644 --- a/doc/qtcreator/src/user-interface/creator-file-system-view.qdoc +++ b/doc/qtcreator/src/user-interface/creator-file-system-view.qdoc @@ -18,7 +18,7 @@ \brief Shows all the files in the current directory. \if defined(qtcreator) - \note Usually, \l{Searching with the Locator}{searching with the locator} + \note Usually, \l{Navigate with locator}{searching with the locator} is the fastest way to find a particular project, file, class, or function, or almost anything else in your project. Use the \e {file system (f)} filter to open files from anywhere in the file system. diff --git a/doc/qtcreator/src/user-interface/creator-projects-view.qdoc b/doc/qtcreator/src/user-interface/creator-projects-view.qdoc index 99e3b469cc..b6b74f0993 100644 --- a/doc/qtcreator/src/user-interface/creator-projects-view.qdoc +++ b/doc/qtcreator/src/user-interface/creator-projects-view.qdoc @@ -25,7 +25,7 @@ \image qtcreator-projects-view-edit.png {Projects view in the sidebar} - \note Usually, \l{Searching with the Locator}{searching with the locator} + \note Usually, \l{Navigate with locator}{searching with the locator} is the fastest way to find a particular project, file, class, or function, or almost anything else in your project. \else diff --git a/doc/qtcreator/src/user-interface/creator-ui.qdoc b/doc/qtcreator/src/user-interface/creator-ui.qdoc index d70c94d90e..066e93fbbf 100644 --- a/doc/qtcreator/src/user-interface/creator-ui.qdoc +++ b/doc/qtcreator/src/user-interface/creator-ui.qdoc @@ -55,7 +55,7 @@ \li \inlineimage numbers/06.png \li Locator \li Find a particular project, file, class, or function. - \li \l{Searching with the Locator} + \li \l{Navigate with locator} \row \li \inlineimage numbers/07.png \li Output diff --git a/doc/qtdesignstudio/src/developers/studio-jump-to-the-code.qdoc b/doc/qtdesignstudio/src/developers/studio-jump-to-the-code.qdoc index f5e9425e00..d7178236e3 100644 --- a/doc/qtdesignstudio/src/developers/studio-jump-to-the-code.qdoc +++ b/doc/qtdesignstudio/src/developers/studio-jump-to-the-code.qdoc @@ -2,7 +2,7 @@ // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only /*! - \previouspage creator-editor-locator.html + \previouspage creator-how-to-rename-symbols.html \page creator-jump-to-the-code.html \nextpage creator-editor-quick-fixes.html diff --git a/doc/qtdesignstudio/src/overviews/studio-finding.qdoc b/doc/qtdesignstudio/src/overviews/studio-finding.qdoc index 188c7a6cc6..ead5bc33af 100644 --- a/doc/qtdesignstudio/src/overviews/studio-finding.qdoc +++ b/doc/qtdesignstudio/src/overviews/studio-finding.qdoc @@ -24,12 +24,6 @@ Search for QML types and rename them in all files in a project. - \li \l{Searching with the Locator} - - Use the locator to browse - through projects, files, classes, functions, documentation and - file systems. - \li \l{Jump to the Code} Jump to the code for a specific component directly from diff --git a/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc b/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc index 5c34bad6e8..d0b451e629 100644 --- a/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc +++ b/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc @@ -214,7 +214,6 @@ \li \l{Search in current file} \li \l{Search in projects or file systems} \li \l{Rename symbols} - \li \l{Searching with the Locator} \li \l{Jump to the Code} \endlist \li \l{Apply quick fixes} -- cgit v1.2.3 From 124c62a5a0bca8d64c26a64478b9875664d9fb9c Mon Sep 17 00:00:00 2001 From: Yasser Grimes Date: Wed, 28 Feb 2024 11:55:31 +0200 Subject: McuSupport: Fix kit creation dialog crash Use copies of messages to avoid their reference going out of scope Fix increment current message index for when there is only one message Fixes: QTCREATORBUG-30360 Change-Id: I26fac50ed171aaed7d178cc8f97ace401bf49e7c Reviewed-by: Eike Ziller --- src/plugins/mcusupport/dialogs/mcukitcreationdialog.cpp | 10 ++++++++-- src/plugins/mcusupport/mcusupportoptions.cpp | 4 ++-- src/plugins/mcusupport/mcusupportoptions.h | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/plugins/mcusupport/dialogs/mcukitcreationdialog.cpp b/src/plugins/mcusupport/dialogs/mcukitcreationdialog.cpp index 897fcd0aa1..4100052cbd 100644 --- a/src/plugins/mcusupport/dialogs/mcukitcreationdialog.cpp +++ b/src/plugins/mcusupport/dialogs/mcukitcreationdialog.cpp @@ -78,12 +78,18 @@ McuKitCreationDialog::McuKitCreationDialog(const MessagesList &messages, QPushButton *fixButton = buttonBox->addButton(Tr::tr("Fix"), QDialogButtonBox::ActionRole); QPushButton *helpButton = buttonBox->addButton(Tr::tr("Help"), QDialogButtonBox::HelpRole); - if (messages.size() == 1) { + if (messages.empty()) { + fixButton->setVisible(false); + m_informationLabel->setText( + QCoreApplication::translate("QtC::Autotest", "No errors detected")); + } + + if (messages.size() < 2) { m_nextButton->setVisible(false); m_previousButton->setVisible(false); } //display first message - if (messages.size() > 1) + if (!messages.empty()) updateMessage(1); if (qtMCUPackage->isValidStatus()) diff --git a/src/plugins/mcusupport/mcusupportoptions.cpp b/src/plugins/mcusupport/mcusupportoptions.cpp index 187591298c..a8b2501354 100644 --- a/src/plugins/mcusupport/mcusupportoptions.cpp +++ b/src/plugins/mcusupport/mcusupportoptions.cpp @@ -255,7 +255,7 @@ McuKitManager::UpgradeOption McuSupportOptions::askForKitUpgrades() return McuKitManager::UpgradeOption::Ignore; } -void McuSupportOptions::displayKitCreationMessages(const MessagesList &messages, +void McuSupportOptions::displayKitCreationMessages(const MessagesList messages, const SettingsHandler::Ptr &settingsHandler, McuPackagePtr qtMCUsPackage) { @@ -269,7 +269,7 @@ void McuSupportOptions::displayKitCreationMessages(const MessagesList &messages, Tr::tr("Errors while creating Qt for MCUs kits"), Utils::InfoBarEntry::GlobalSuppression::Enabled); - info.addCustomButton(Tr::tr("Details"), [=] { + info.addCustomButton(Tr::tr("Details"), [messages, &settingsHandler, qtMCUsPackage] { auto popup = new McuKitCreationDialog(messages, settingsHandler, qtMCUsPackage); popup->exec(); delete popup; diff --git a/src/plugins/mcusupport/mcusupportoptions.h b/src/plugins/mcusupport/mcusupportoptions.h index d8a5c3fdbf..1c0a902ba1 100644 --- a/src/plugins/mcusupport/mcusupportoptions.h +++ b/src/plugins/mcusupport/mcusupportoptions.h @@ -59,7 +59,7 @@ public: [[nodiscard]] Utils::FilePath qulDirFromSettings() const; [[nodiscard]] Utils::FilePath qulDocsDir() const; static McuKitManager::UpgradeOption askForKitUpgrades(); - static void displayKitCreationMessages(const MessagesList &messages, + static void displayKitCreationMessages(const MessagesList messages, const SettingsHandler::Ptr &settingsHandler, McuPackagePtr qtMCUsPackage); -- cgit v1.2.3 From 9bb85fabf7eb6557961dd7d72fd444bfbaeac87f Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Tue, 5 Mar 2024 13:08:02 +0100 Subject: Welcome: Don't hide Links Fixes: QTCREATORBUG-30466 Change-Id: I399826d67e1bb7eba7ef96f3fd0717d08133a3de Reviewed-by: Alessandro Portale --- src/plugins/welcome/welcomeplugin.cpp | 33 +++++++++++++++++---------------- 1 file changed, 17 insertions(+), 16 deletions(-) diff --git a/src/plugins/welcome/welcomeplugin.cpp b/src/plugins/welcome/welcomeplugin.cpp index 2513ebaa10..4b3a5074f9 100644 --- a/src/plugins/welcome/welcomeplugin.cpp +++ b/src/plugins/welcome/welcomeplugin.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -292,25 +293,25 @@ WelcomeMode::WelcomeMode() m_modeWidget = new ResizeSignallingWidget; setBackgroundColor(m_modeWidget, Theme::Token_Background_Default); - connect(m_modeWidget, &ResizeSignallingWidget::resized, this, + connect(m_modeWidget, + &ResizeSignallingWidget::resized, + this, [this](const QSize &size, const QSize &) { - const QSize essentialsS = m_sideArea->m_essentials->size(); - const QSize linksS = m_sideArea->m_links->size(); - const QSize sideAreaS = m_sideArea->size(); - const QSize topAreaS = m_topArea->size(); - const QSize mainWindowS = ICore::mainWindow()->size(); - - const bool showSideArea = sideAreaS.width() < size.width() / 4; - const bool showTopArea = topAreaS.height() < mainWindowS.height() / 7.75; - const bool showLinks = - linksS.height() + essentialsS.height() < sideAreaS.height() && showTopArea; - - m_sideArea->m_links->setVisible(showLinks); - m_sideArea->setVisible(showSideArea); - m_topArea->setVisible(showTopArea); - }); + const QSize sideAreaS = m_sideArea->size(); + const QSize topAreaS = m_topArea->size(); + const QSize mainWindowS = ICore::mainWindow()->size(); + + const bool showSideArea = sideAreaS.width() < size.width() / 4; + const bool showTopArea = topAreaS.height() < mainWindowS.height() / 8.85; + const bool showLinks = true; + + m_sideArea->m_links->setVisible(showLinks); + m_sideArea->setVisible(showSideArea); + m_topArea->setVisible(showTopArea); + }); m_sideArea = new SideArea(m_modeWidget); + m_sideArea->verticalScrollBar()->setEnabled(false); m_buttonGroup = new QButtonGroup(m_modeWidget); m_buttonGroup->setExclusive(true); -- cgit v1.2.3 From 681d2da3b391d5e213b782a7059c832e45daed33 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 5 Mar 2024 09:51:37 +0100 Subject: Doc: Update info about environment settings They are now edited in an editor next to the variable list. Task-number: QTCREATORBUG-30209 Change-Id: I8eb46272a2b4b3b92ebf93247f4ef33ee4114b6f Reviewed-by: Christian Kandeler --- .../images/qtcreator-build-environment.png | Bin 34736 -> 0 bytes .../images/qtcreator-build-environment.webp | Bin 0 -> 15496 bytes .../images/qtcreator-edit-cmake-configuration.webp | Bin 0 -> 4844 bytes .../qtcreator-environment-settings-hierarchy.webp | Bin 3662 -> 70100 bytes .../images/qtcreator-projects-environment.webp | Bin 4728 -> 6582 bytes doc/qtcreator/images/qtcreator-run-environment.png | Bin 28561 -> 0 bytes .../images/qtcreator-run-environment.webp | Bin 0 -> 15872 bytes .../src/cmake/creator-projects-cmake-building.qdoc | 6 +- .../src/howto/creator-external-tools.qdoc | 2 +- .../creator-how-to-silver-searcher.qdoc | 2 +- .../creator-only/creator-projects-kits.qdoc | 2 +- .../creator-projects-settings-environment.qdoc | 63 +++++++++++---------- 12 files changed, 38 insertions(+), 37 deletions(-) delete mode 100644 doc/qtcreator/images/qtcreator-build-environment.png create mode 100644 doc/qtcreator/images/qtcreator-build-environment.webp create mode 100644 doc/qtcreator/images/qtcreator-edit-cmake-configuration.webp delete mode 100644 doc/qtcreator/images/qtcreator-run-environment.png create mode 100644 doc/qtcreator/images/qtcreator-run-environment.webp diff --git a/doc/qtcreator/images/qtcreator-build-environment.png b/doc/qtcreator/images/qtcreator-build-environment.png deleted file mode 100644 index 9c1dc18281..0000000000 Binary files a/doc/qtcreator/images/qtcreator-build-environment.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-build-environment.webp b/doc/qtcreator/images/qtcreator-build-environment.webp new file mode 100644 index 0000000000..48bf4753d2 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-build-environment.webp differ diff --git a/doc/qtcreator/images/qtcreator-edit-cmake-configuration.webp b/doc/qtcreator/images/qtcreator-edit-cmake-configuration.webp new file mode 100644 index 0000000000..d023c59deb Binary files /dev/null and b/doc/qtcreator/images/qtcreator-edit-cmake-configuration.webp differ diff --git a/doc/qtcreator/images/qtcreator-environment-settings-hierarchy.webp b/doc/qtcreator/images/qtcreator-environment-settings-hierarchy.webp index 574b2a7547..9801512332 100644 Binary files a/doc/qtcreator/images/qtcreator-environment-settings-hierarchy.webp and b/doc/qtcreator/images/qtcreator-environment-settings-hierarchy.webp differ diff --git a/doc/qtcreator/images/qtcreator-projects-environment.webp b/doc/qtcreator/images/qtcreator-projects-environment.webp index 36011d2226..eeaed5eaa0 100644 Binary files a/doc/qtcreator/images/qtcreator-projects-environment.webp and b/doc/qtcreator/images/qtcreator-projects-environment.webp differ diff --git a/doc/qtcreator/images/qtcreator-run-environment.png b/doc/qtcreator/images/qtcreator-run-environment.png deleted file mode 100644 index 515ec87053..0000000000 Binary files a/doc/qtcreator/images/qtcreator-run-environment.png and /dev/null differ diff --git a/doc/qtcreator/images/qtcreator-run-environment.webp b/doc/qtcreator/images/qtcreator-run-environment.webp new file mode 100644 index 0000000000..3a0313f994 Binary files /dev/null and b/doc/qtcreator/images/qtcreator-run-environment.webp differ diff --git a/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc b/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc index 6f5508312f..0bf54dde2f 100644 --- a/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc +++ b/doc/qtcreator/src/cmake/creator-projects-cmake-building.qdoc @@ -94,9 +94,9 @@ You can select several variables and apply an action to them. To clear the selection, click anywhere in the view. - To change the environment variable values for the CMake build environment, - select \uicontrol {Batch Edit}. For more information, see - \l{Batch edit environment settings}. + To batch edit variable values, select \uicontrol {Batch Edit}. + + \image qtcreator-edit-cmake-configuration.webp {Edit CMake Configuration dialog} To build using the current configuration, select \uicontrol {Run CMake}. While building, the button text changes to \uicontrol {Stop CMake}. Select diff --git a/doc/qtcreator/src/howto/creator-external-tools.qdoc b/doc/qtcreator/src/howto/creator-external-tools.qdoc index dda7eeb62a..13927f3d67 100644 --- a/doc/qtcreator/src/howto/creator-external-tools.qdoc +++ b/doc/qtcreator/src/howto/creator-external-tools.qdoc @@ -117,7 +117,7 @@ \sa {Run QML files}, {Use external text editors}, {Use Qt Linguist} \if defined(qtcreator) - \sa {Batch edit environment settings}, {Specify the environment for projects}, + \sa {Edit environment settings}, {Specify the environment for projects}, {Use Qt Creator variables} \endif */ diff --git a/doc/qtcreator/src/howto/creator-only/creator-how-to-silver-searcher.qdoc b/doc/qtcreator/src/howto/creator-only/creator-how-to-silver-searcher.qdoc index b632145832..4f60c3b569 100644 --- a/doc/qtcreator/src/howto/creator-only/creator-how-to-silver-searcher.qdoc +++ b/doc/qtcreator/src/howto/creator-only/creator-how-to-silver-searcher.qdoc @@ -49,5 +49,5 @@ \endlist \sa {Enable and disable plugins}, {Search}{How To: Search}, - {Batch edit environment settings} + {Edit environment settings} */ diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-kits.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-kits.qdoc index d856f420c5..4d0e903863 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-kits.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-kits.qdoc @@ -152,7 +152,7 @@ \li Select \uicontrol Change to modify environment variable values for build environments in the \uicontrol {Edit Environment Changes} dialog. For more information about how to add and remove variable - values, see \l{Batch edit environment settings}. + values, see \l{Edit environment settings}. \row \li \uicontrol {Force UTF-8 MSVC compiler output} \li Either switches the language of MSVC to English or keeps the diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc index 3f200320fc..ce809fc536 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc @@ -16,7 +16,7 @@ By default, the environment in which \QC was started is used and modified to include the Qt version. Depending on the selected Qt version, \QC automatically sets the necessary environment variables. You can edit - existing environment variables or add, reset and unset new variables + existing environment variables or add, reset, and unset variables based on your project requirements. The final environment is specified separately for each kit. With @@ -35,7 +35,7 @@ To globally change the environment from the one in which \QC is started, select \preferences > \uicontrol Environment > \uicontrol System, and then - select \uicontrol Change in the \uicontrol Environment field. + select \uicontrol Change in \uicontrol Environment. \image qtcreator-preferences-environment-system.webp "Environment preferences System tab" @@ -47,42 +47,43 @@ \image qtcreator-projects-environment.webp {Environment tab in Project Settings} + You can edit existing environment variables or add, reset, unset, or + temporarily disable variables. + \section1 Specify the build environment - Specify the build environment to use for a kit in \uicontrol Projects > - \uicontrol {Build Settings} > \uicontrol {Build Environment}. + To specify the build environment to use for a kit, go to \uicontrol Projects + > \uicontrol {Build Settings} and select \uicontrol {Build Environment}. + + \image qtcreator-build-environment.webp {Build Environment section in Build Settings} + + To change the values of environment variables for the build environment, + select the variable and then select \uicontrol Edit. Enter the new value + in the editor on the righ side. - \image qtcreator-build-environment.png {Build Environment section in Build Settings} + To add new variables, select \uicontrol {Add}. \section2 Clear the build environment - To build with a clean system environment, select the \uicontrol {Clear - system environment} check box. \QC discards the current environment, and - populates a clean system environment with the environment variables that + To build with a clean system environment, select + \uicontrol {Clear system environment}. \QC discards the current environment, + and populates a clean system environment with the environment variables that the compilers and tools need. Therefore, the environment is never totally empty, even after you clear it. \section1 Specify the run environment \QC automatically selects the environment used for running the application - based on the \l{glossary-device}{device} type. You can edit the environment - or select another environment in \uicontrol Projects > - \uicontrol {Run Settings} > \uicontrol {Environment}. + based on the \l{glossary-device}{device} type. To edit the environment + or select another environment, go to \uicontrol Projects > + \uicontrol {Run Settings} and select \uicontrol {Environment}. - You can edit existing environment variables or add, reset and unset new - variables. - - \image qtcreator-run-environment.png {Environment section in Run Settings} + \image qtcreator-run-environment.webp {Environment section in Run Settings} When running on the desktop, the \uicontrol {Build Environment} is used by default, but you can also use the \uicontrol {System Environment} without the additions made to the build environment. - To modify the environment variable values for the run environment, - double-click environment variables or their values and change them inline, - or select \uicontrol {Batch Edit} to change several variable values at a - time. - \section2 Clean the run environment To run in a clean system environment, select \uicontrol {Clean Environment}. @@ -107,32 +108,32 @@ \section2 Use device environment - When running on a mobile device connected to the development host, \QC + When you run applications on a mobile device connected to the computer, \QC fetches information about the \uicontrol {Device Environment} from the device. Usually, it does not make sense to edit the device environment. - \sa {Batch edit environment settings}, {Configure projects for building}, + \sa {Edit environment settings}, {Configure projects for building}, {Configure projects for running}, {Use Qt Creator variables} */ /*! - \page creator-how-to-batch-edit-environment-settings.html + \page creator-how-to-edit-environment-settings.html \previouspage creator-how-tos.html \ingroup creator-how-to-projects - \title Batch edit environment settings + \title Edit environment settings You can change the environment variable values for build or run environments - either for a particular project or globally for all projects in the - \uicontrol {Edit Environment} dialog: + either for a particular project or globally: \list - \li To change values globally, select \uicontrol Change in the - \l {Globally change the environment}{global environment preferences}. - \li To change values for a project, select \uicontrol {Batch Edit} in the - \l {Change the environment for a project}{project}, - \l {Specify the build environment}{build}, or + \li To change values globally, go to \preferences > + \uicontrol Environment > \uicontrol System, and select + \uicontrol Change in \uicontrol {Environment}. + \li To change values for a project, select \uicontrol Edit or + \uicontrol {Add} in the \l {Change the environment for a project} + {project}, \l {Specify the build environment}{build}, or \l {Specify the run environment}{run} environment settings. \endlist -- cgit v1.2.3 From 21e48c1a596867064a76a840eac783d46c07eb14 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Tue, 5 Mar 2024 16:35:49 +0100 Subject: Android: Enable writing to the jdb process Amends 97461f6f189e7bfbc0aff7c567f21230b7a22226 Fixes: QTCREATORBUG-29928 Fixes: QTCREATORBUG-30405 Change-Id: I3d4dad5bbc72a17f1246510ba10370811fda293a Reviewed-by: Alessandro Portale --- src/plugins/android/androidrunnerworker.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/android/androidrunnerworker.cpp b/src/plugins/android/androidrunnerworker.cpp index d18f645165..f152b7c538 100644 --- a/src/plugins/android/androidrunnerworker.cpp +++ b/src/plugins/android/androidrunnerworker.cpp @@ -754,6 +754,7 @@ void AndroidRunnerWorker::handleJdbWaiting() m_jdbProcess->setProcessChannelMode(QProcess::MergedChannels); m_jdbProcess->setCommand({jdbPath, jdbArgs}); m_jdbProcess->setReaperTimeout(s_jdbTimeout); + m_jdbProcess->setProcessMode(ProcessMode::Writer); m_jdbProcess->start(); if (!m_jdbProcess->waitForStarted()) { emit remoteProcessFinished(Tr::tr("Failed to start JDB.")); -- cgit v1.2.3 From 97db1645ad36196a9a920efe86dcb14930936fa8 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Tue, 5 Mar 2024 20:54:12 +0100 Subject: Android: Log jdb communication Change-Id: If4833de2b65e57dd55c58c82bf707e57d4561031 Reviewed-by: Alessandro Portale --- src/plugins/android/androidrunnerworker.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/plugins/android/androidrunnerworker.cpp b/src/plugins/android/androidrunnerworker.cpp index f152b7c538..64979ef948 100644 --- a/src/plugins/android/androidrunnerworker.cpp +++ b/src/plugins/android/androidrunnerworker.cpp @@ -771,6 +771,7 @@ void AndroidRunnerWorker::handleJdbSettled() for (int i = 0; i < 120 && m_jdbProcess->state() == QProcess::Running; ++i) { m_jdbProcess->waitForReadyRead(500ms); const QByteArray lines = m_jdbProcess->readAllRawStandardOutput(); + qCDebug(androidRunWorkerLog) << "JDB output:" << lines; const auto linesList = lines.split('\n'); for (const auto &line : linesList) { auto msg = line.trimmed(); @@ -784,8 +785,10 @@ void AndroidRunnerWorker::handleJdbSettled() const QStringList commands{"threads", "cont", "exit"}; for (const QString &command : commands) { - if (waitForCommand()) + if (waitForCommand()) { + qCDebug(androidRunWorkerLog) << "JDB input:" << command; m_jdbProcess->write(QString("%1\n").arg(command)); + } } if (!m_jdbProcess->waitForFinished(s_jdbTimeout)) { -- cgit v1.2.3 From db307978bfd4a037a91341e066d63dcde3de71d6 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Tue, 5 Mar 2024 21:14:52 +0100 Subject: Android: Send suspend/resume instead of threads in handleJdbSettled "threads" causes an exception in my jdb on my machine. "suspend" and "resume" do not, and they also cause enough delay for JDB to settle. Change-Id: I5297d720c5fdbe5ee2eaa421624491af50bc40bf Reviewed-by: Cristian Adam --- src/plugins/android/androidrunnerworker.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/android/androidrunnerworker.cpp b/src/plugins/android/androidrunnerworker.cpp index 64979ef948..8f114f28db 100644 --- a/src/plugins/android/androidrunnerworker.cpp +++ b/src/plugins/android/androidrunnerworker.cpp @@ -782,7 +782,7 @@ void AndroidRunnerWorker::handleJdbSettled() return false; }; - const QStringList commands{"threads", "cont", "exit"}; + const QStringList commands{"suspend", "resume", "cont", "exit"}; for (const QString &command : commands) { if (waitForCommand()) { -- cgit v1.2.3 From 6b6aa896500c76aab6a9cbd1a20bb513fa6bfa46 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 4 Mar 2024 12:12:28 +0100 Subject: German translation: lupdate for 13.0 Check out with submodules (`git submodule update --init --recursive`). Configure Qt Creator: cmake "-DCMAKE_PREFIX_PATH=;" -DCMAKE_BUILD_TYPE=Debug -G Ninja Generate ts file: cmake --build . --target ts_de_cleaned Change-Id: I1c38da74f87352eeb6bc65b979d1e18d35668da8 Reviewed-by: Christian Stenger Reviewed-by: --- share/qtcreator/translations/qtcreator_de.ts | 2845 +++++++++++++++++++++----- 1 file changed, 2279 insertions(+), 566 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index b15b6a1af2..d8edc96b61 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -72,13 +72,6 @@ - - AccountImage - - Account - - - AddImageToResources @@ -447,7 +440,7 @@ Bind to AmbientSound.Infinite to loop the current sound forever. Animated image - + Animiertes Bild Speed @@ -466,6 +459,165 @@ Bind to AmbientSound.Infinite to loop the current sound forever. + + AnimatedSpriteSpecifics + + Animated Sprite + + + + Source + + + + Adds an image from the local file system. + + + + Frame size + + + + Sets the width and height of the frame. + + + + W + width + The width of the animated sprite frame + + + + Width. + + + + H + height + The height of the animated sprite frame + H + + + Height. + + + + Frame coordinates + + + + Sets the coordinates of the first frame of the animated sprite. + + + + X + Frame X + The width of the animated sprite frame + X + + + Frame X coordinate. + + + + Y + Frame Y + The height of the animated sprite frame + Y + + + Frame Y coordinate. + + + + Frame count + + + + Sets the number of frames in this animated sprite. + + + + Frame rate + + + + Sets the number of frames per second to show in the animation. + + + + Frame duration + + + + Sets the duration of each frame of the animation in milliseconds. + + + + Frame sync + + + + Sets frame advancements one frame each time a frame is rendered to the screen. + + + + Loops + + + + After playing the animation this many times, the animation will automatically stop. + + + + Interpolate + + + + If true, interpolation will occur between sprite frames to make the animation appear smoother. + + + + Finish behavior + + + + Sets the behavior when the animation finishes on its own. + + + + Reverse + + + + If true, the animation will be played in reverse. + + + + Running + Läuft + + + Whether the sprite is animating or not. + + + + Paused + + + + When paused, the current frame can be advanced manually. + + + + Current frame + + + + When paused, the current frame can be advanced manually by setting this property. + + + AnimationSection @@ -790,117 +942,6 @@ A positive value will increase reverb for higher frequencies and dampen lower fr - - Axivion - - Project: - - - - Lines of code: - - - - Analysis timestamp: - - - - unknown - unbekannt - - - Total: - - - - Show dashboard - - - - Axivion - - - - Show rule details - - - - Certificate Error - Zertifikatsfehler - - - Server certificate for %1 cannot be authenticated. -Do you want to disable SSL verification for this server? -Note: This can expose you to man-in-the-middle attack. - Server-Zertifikat für %1 kann nicht authentifiziert werden. -Möchten Sie die SSL-Verifikation für diesen Server abschalten? -Hinweis: Dies macht Sie anfällig für Man-in-the-middle-Angriffe. - - - Dashboard projects: - - - - Fetch Projects - - - - Link Project - - - - Unlink Project - - - - This project is not linked to a dashboard project. - - - - This project is linked to "%1". - - - - Incomplete or misconfigured settings. - - - - curl: - curl: - - - Dashboard URL: - - - - Description: - Beschreibung: - - - Non-empty description - - - - Access token: - Zugriffstoken: - - - IDE Access Token - - - - Edit... - Bearbeiten... - - - Edit Dashboard Configuration - - - - General - Allgemein - - BackgroundColorMenuActions @@ -1197,6 +1238,29 @@ It should be a relative path. Größe der Bildquelle + + BrandBar + + Welcome to + Willkommen bei + + + Qt Design Studio + Qt Design Studio + + + Community Edition + + + + Enterprise Edition + + + + Professional Edition + + + BusyIndicatorSpecifics @@ -1396,7 +1460,7 @@ It should be a relative path. Emphasis - + Hervorherbung Sets the text to bold, italic, underlined, or strikethrough. @@ -1504,6 +1568,112 @@ It should be a relative path. Anwenden + + CollectionDetailsToolbar + + Add property left + + + + Add property right + + + + Delete selected property + + + + Insert row below + + + + Insert row above + + + + Delete selected row + + + + Save changes + + + + Export model + + + + Add Column + + + + Column name: + + + + The model already contains "%1"! + + + + Type: + Typ: + + + Add + Hinzufügen + + + Cancel + Abbrechen + + + + CollectionDetailsView + + Edit + + + + Delete + + + + Sort Ascending + + + + Sort Descending + + + + Add row above + + + + Add row below + + + + Delete this row + + + + Select a model to continue + + + + Delete Column + + + + Are you sure that you want to delete column "%1"? + + + + Cancel + Abbrechen + + CollectionItem @@ -1515,17 +1685,31 @@ It should be a relative path. Umbenennen - Deleting whole collection + Assign to the selected node - Cancel - Abbrechen + Deleting the model + - Rename collection + Are you sure that you want to delete model "%1"? +The model will be deleted permanently. + + Are you sure that you want to delete model "%1"? +The model will be removed from the project but the file will not be deleted. + + + + Rename model + + + + Cancel + Abbrechen + New name: Neuer Name: @@ -1534,19 +1718,15 @@ It should be a relative path. CollectionView - Collections + Data Models - Import Json + Import a model - Import CSV - - - - Add new collection + Add a new model @@ -1980,6 +2160,10 @@ It should be a relative path. Write the conditions for the components and the signals manually. + + Jump to the code. + + ConnectionsListView @@ -2313,53 +2497,6 @@ It should be a relative path. - - CsvImport - - Import A CSV File - - - - New CSV File - - - - Could not load the file - - - - An error occurred while trying to load the file. - - - - File name: - - - - Open - Öffnen - - - Collection name: - - - - File name can not be empty - - - - Collection name can not be empty - - - - Import - - - - Cancel - Abbrechen - - DelayButtonSpecifics @@ -2524,6 +2661,25 @@ defined in <b>Step size</b>. Titel + + DownloadButton + + Update available. + + + + Example was already downloaded. + + + + Network or example is not available or the link is broken. + + + + Download the example. + + + DownloadPane @@ -2539,6 +2695,21 @@ defined in <b>Step size</b>. % + + DownloadPanel + + Progress: + + + + % + % + + + Open + Öffnen + + DrawerSpecifics @@ -2597,37 +2768,76 @@ defined in <b>Step size</b>. - EffectCompositionNode + EditPropertyDialog - Remove + Edit Column - Enable/Disable Node + Name + Name + + + Type + Typ + + + Conversion from %1 to %2 may lead to data loss + + Apply + Anwenden + + + Cancel + Abbrechen + - EffectMaker + EffectComposer + + Remove all effect nodes. + + - Open Shader in Code Editor + Open Shader in Code Editor. Add an effect node to start + + Effect Composer is disabled on MCU projects + + - EffectMakerPreview + EffectComposer::EffectComposerView - Zoom out + Effect Composer [beta] + + + EffectComposer::EffectComposerWidget + + Effect Composer + Title of effect composer widget + + + + + EffectComposerPreview Zoom In Vergrößern + + Zoom out + + Zoom Fit @@ -2642,13 +2852,29 @@ defined in <b>Step size</b>. - EffectMakerTopBar + EffectComposerTopBar + + Add new composition + + - Save in Library + Save current composition - How to use Effect Maker: + Save current composition with a new name + + + + Assign current composition to selected item + + + + Untitled + Unbenannt + + + How to use Effect Composer: 1. Click "+ Add Effect" to add effect node 2. Adjust the effect nodes properties 3. Change the order of the effects, if you like @@ -2657,6 +2883,24 @@ defined in <b>Step size</b>. + + EffectCompositionNode + + Remove + + + + Enable/Disable Node + + + + + EffectNode + + Existing effect has conflicting properties, this effect cannot be added. + + + EffectNodesComboBox @@ -3060,7 +3304,7 @@ defined in <b>Step size</b>. Emphasis - + Hervorherbung Sets the text to bold, italic, underlined, or strikethrough. @@ -3674,6 +3918,57 @@ a highlight component. + + ImportDialog + + Import a model + + + + Model path + + + + Select a model file + + + + Open + Öffnen + + + Could not load the file + + + + An error occurred while trying to load the file. + + + + File name + + + + The model name + + + + File name can not be empty + + + + The model name can not be empty + + + + Import + + + + Cancel + Abbrechen + + InsetSection @@ -3723,10 +4018,6 @@ a highlight component. [None] - - Category - Kategorie - Object name @@ -3843,45 +4134,6 @@ IDs müssen außerdem mit einem Kleinbuchstaben beginnen. - - JsonImport - - Import Collections - - - - New Json File - - - - Could not load the file - - - - An error occurred while trying to load the file. - - - - File name: - - - - Open - Öffnen - - - File name cannot be empty. - - - - Import - - - - Cancel - Abbrechen - - Label @@ -4282,6 +4534,10 @@ a highlight component. State Group + + State Groups are not supported with Qt for MCUs + + Switch State Group @@ -4346,30 +4602,6 @@ a highlight component. minutes - - Predefined Categories - - - - Select the categories to track - - - - Select all - - - - Custom Categories - - - - Manage your own categories - - - - Add new Category - - Set runtime configuration for the project. @@ -4422,6 +4654,10 @@ a highlight component. Close Schließen + + Sets the visible <b>Views</b> to immovable across the Workspaces. + + Workspace @@ -4467,6 +4703,83 @@ a highlight component. + + MainGridStack + + Create a new project using the "<b>Create Project</b>" or open an existing project using the "<b>Open Project</b>" option. + + + + Remove Project from Recent Projects + Projekt aus der Liste der zuletzt bearbeiteten Projekte entfernen + + + Clear Recent Project List + Liste der zuletzt bearbeiteten Projekte löschen + + + + MainScreen + + Create Project ... + + + + Open Project ... + + + + New to Qt? + Neu bei Qt? + + + Get Started + Schnelleinstieg + + + Recent Projects + Zuletzt bearbeitete Projekte + + + Examples + Beispiele + + + Tutorials + Anleitungen + + + UI Tour + Oberfläche vorführen + + + User Guide + Handbuch + + + Blog + + + + Forums + + + + Account + + + + Get Qt + Qt + + + + MainWindow + + MainWindow + + + MarginSection @@ -4664,6 +4977,14 @@ a highlight component. Media Player + + Source + + + + Adds an image from the local file system. + + Playback rate @@ -4750,33 +5071,6 @@ Error: - - ModelSourceItem - - Delete - - - - Rename - Umbenennen - - - Deleting source - - - - Cancel - Abbrechen - - - Rename source - - - - New name: - Neuer Name: - - MouseAreaSpecifics @@ -4917,15 +5211,23 @@ Error: NewCollectionDialog - Add a new Collection + Add a new Model + + + + Model + Modell + + + The model name - Collection name: + The model name can not be empty - Collection name can not be empty + The model name already exists %1 @@ -5662,6 +5964,77 @@ operation is in progress. Schließt das Dock-Widget + + QKeychain::Job + + No error + + + + The specified item could not be found in the keychain + + + + User canceled the operation + + + + User interaction is not allowed + + + + No keychain is available. You may need to restart your computer + + + + The user name or passphrase you entered is not correct + + + + A cryptographic verification failure has occurred + + + + Function or operation not implemented + + + + I/O error + + + + Already open with with write permission + + + + Invalid parameters passed to a function + + + + Failed to allocate memory + + + + Bad parameter or invalid state for operation + + + + An internal component failed + + + + The specified item already exists in the keychain + + + + Unable to decode the provided data + + + + Unknown error + + + QObject @@ -5759,10 +6132,14 @@ operation is in progress. - Ensure that you have saved it in Qt Quick Effect Maker. + Ensure that you have saved it in the Effect Composer. Do you want to edit this effect? + + Minimize + Minimieren + QmlDesigner::AbstractEditorDialog @@ -5938,7 +6315,7 @@ Do you want to edit this effect? Advanced Options - + Erweiterte Optionen Export assets @@ -6098,6 +6475,14 @@ Exporting assets: %2 Title of assets library widget + + Failed to Delete Effect Resources + + + + Could not delete "%1". + + Failed to Add Files Dateien konnten nicht hinzugefügt werden @@ -6248,21 +6633,143 @@ Exporting assets: %2 - QmlDesigner::CollectionView + QmlDesigner::CollectionSourceModel + + Node is not indexed in the models. + + + + Node should be a JSON model. + + + + A model with the identical name already exists. + + + + Selected node must have a valid source file address + + + + Can't read or write "%1". +%2 + + + + "%1" is corrupted. +%2 + + + + Can't clean "%1". + + - Collection Editor + Can't write to "%1". - Collection Editor view + No model is available for the JSON model group. + + + + JSON document type should be an object containing models. + + + + Rename Model + + + + Invalid node + + + + Can't rename the node + + + + Invalid node type + + + + The model group doesn't contain the old model name (%1). + + + + The model name "%1" already exists in the model group. + + + + Delete Model + + + + The selected node has an invalid source address + + + + The model group doesn't contain the model name (%1). + + + + + QmlDesigner::CollectionView + + Model Editor + Model-Editor + + + Model Editor view QmlDesigner::CollectionWidget - Collection View - Title of collection view widget + Model Editor + Title of model editor widget + Model-Editor + + + Cannot Create QtQuick View + QtQuick View konnte nicht erzeugt werden + + + StatesEditorWidget: %1 cannot be created.%2 + + + + File error + + + + Can not open the file to write. + + + + + Can not add a model to the JSON file + + + + The imported model is empty or is not supported. + + + + Can not import to the main model + + + + The data store is not available. + + + + The default model node is not available. + + + + Failed to add a model to the default model group @@ -6657,6 +7164,106 @@ Exporting assets: %2 Group Selection Mode + + Viewport Shading + + + + Wireframe + + + + Show models as wireframe. + + + + Default + Vorgabe + + + Rendering occurs as normal. + + + + Base Color + + + + The base or diffuse color of a material is passed through without any lighting. + + + + Roughness + + + + The roughness of a material is passed through as an unlit greyscale value. + + + + Metalness + + + + The metalness of a material is passed through as an unlit greyscale value. + + + + Normals + + + + The interpolated world space normal value of the material mapped to an RGB color. + + + + Ambient Occlusion + + + + Only the ambient occlusion of the material. + + + + Emission + + + + Only the emissive contribution of the material. + + + + Shadow Occlusion + + + + The occlusion caused by shadows as a greyscale value. + + + + Diffuse + + + + Only the diffuse contribution of the material after all lighting. + + + + Specular + + + + Only the specular contribution of the material after all lighting. + + + + Reset All Viewports + + + + Reset all shading options for all viewports. + + 3D view is not supported in MCU projects. @@ -7035,6 +7642,10 @@ Exporting assets: %2 Manage... Verwalten... + + Lock Workspaces + + Reset Active @@ -7203,6 +7814,10 @@ Exporting assets: %2 Always auto-format ui.qml files in Design mode + + Enable DockWidget content minimum size + + Show property editor warnings Zeige Warnungen des Eigenschafteneditors @@ -7300,6 +7915,41 @@ Exporting assets: %2 + + QmlDesigner::Internal::TypeAnnotationReader + + Illegal state while parsing. + Ungültiger Zustand bei der Auswertung. + + + No property definition allowed. + Eigenschaftsdefinition nicht zulässig. + + + Invalid type %1 + Ungültiger Typ %1 + + + Unknown property for Type %1 + Unbekannte Eigenschaft für Typ %1 + + + Unknown property for ItemLibraryEntry %1 + Unbekannte Eigenschaft für ItemLibraryEntry %1 + + + Unknown property for Property %1 + Unbekannte Eigenschaft für Eigenschaft %1 + + + Unknown property for QmlSource %1 + Unbekannte Eigenschaft für QmlSource %1 + + + Unknown property for ExtraFile %1 + + + QmlDesigner::InvalidArgumentException @@ -8239,6 +8889,10 @@ Locked components cannot be modified or selected. Tools Werkzeuge + + Enable Experimental Features + + Hide top-level menus with advanced functionality to simplify the UI. <b>Build</b> is generally not required in the context of Qt Design Studio. <b>Debug</b> and <b>Analyze</b> are only required for debugging and profiling. <b>Tools</b> can be useful for bookmarks and git integration. @@ -8267,6 +8921,14 @@ Locked components cannot be modified or selected. Bundles path: + + Experimental Features + + + + This option enables experimental features in Qt Design Studio. Please provide feedback and bug reports at: %1 + + The menu visibility change will take effect after restart. @@ -8870,7 +9532,7 @@ Locked components cannot be modified or selected. - Effect Maker Files + Effect Composer Files @@ -8925,11 +9587,15 @@ Locked components cannot be modified or selected. - Remove This Handler + Edit the Connection - Add Signal Handler + Remove the Connection + + + + Add new Connection @@ -9008,6 +9674,10 @@ Locked components cannot be modified or selected. Edit Component + + Jump to the Code + + Go to Implementation Zu Implementierung gehen @@ -9593,6 +10263,10 @@ Locked components cannot be modified or selected. Pin Group To... + + Minimize + Minimieren + Close Other Groups @@ -9936,6 +10610,26 @@ Locked components cannot be modified or selected. All essential packages installed for all installed Qt versions. Für alle installierten Qt-Versionen sind alle notwendigen Pakete installiert. + + The selected path does not exist or is not readable. + + + + Could not find "%1" in the selected path. + + + + The selected path does not contain a valid JDK. (%1 failed: %2) + + + + Unexpected output from "%1": %2 + + + + Unsupported JDK version (needs to be %1): %2 (parsed: %3) + + OpenSSL path exists. Pfad zu OpenSSL existiert. @@ -11520,6 +12214,129 @@ und das Überschreiben Ihrer Einstellungen erfordert. Das Überschreiben erlaube Bilder (*.png *.jpg *.jpeg) + + QtC::AppManager + + Create Application Manager package with CMake + + + + Create Application Manager package + + + + Source directory: + Quellverzeichnis: + + + Package file: + + + + Automatic Application Manager Deploy Configuration + + + + Deploy Application Manager package + + + + Target directory: + Zielverzeichnis: + + + Uploading finished. + + + + Uploading failed. + + + + Install Application Manager package + + + + Starting command "%1". + Starte Kommando "%1". + + + Command finished successfully. + + + + Process failed: %1 + + + + Process finished with exit code %1. + + + + Run an Application Manager Package + + + + Run and Debug an Application Manager Package + + + + Clean Environment + Saubere Umgebung + + + %1 exited. + + + + Starting Application Manager debugging... + + + + Using: %1. + + + + Cannot debug: Only QML and native applications are supported. + + + + Cannot debug: Local executable is not set. + Kann nicht debuggen: Lokale ausführbare Datei ist nicht angegeben. + + + Application ID: + + + + Application Manager instance ID: + + + + Default instance + + + + Document URL: + + + + Customize step + + + + Disables the automatic updates based on the current run configuration and allows customizing the values. + + + + Controller: + + + + Packager: + + + QtC::Autotest @@ -12448,6 +13265,14 @@ Weitere Informationen über GTest-Filter finden Sie in der Dokumenation von Goog Uses Valgrind Callgrind when executing benchmarks (it must be installed). "Valgrind Callgrind" zur Benchmarkausführung benutzen (dazu muss es installiert sein). + + Find user-defined locations + + + + Parse messages for the following pattern and use it as location information:<pre>file://filepath:line</pre>where ":line" is optional.<p>Warning: If the patterns are used in code, the location information for debug messages and other messages might improve,at the risk of some incorrect locations and lower performance. + + Callgrind Callgrind @@ -12809,6 +13634,14 @@ Siehe auch die Einstellungen für Google Test. Running tests for "%1". Führe Tests für "%1" aus. + + Locate Qt Test data tags + + + + Locates Qt Test data tags found inside the active project. + + QtC::AutotoolsProjectManager @@ -12856,6 +13689,184 @@ Siehe auch die Einstellungen für Google Test. Werte Verzeichnis %1 aus + + QtC::Axivion + + Project: + + + + Lines of code: + + + + Analysis timestamp: + + + + unknown + unbekannt + + + Total: + + + + Owner + + + + Path globbing + + + + Total rows: + + + + Axivion + + + + Show dashboard + + + + Search for issues + + + + Show rule details + + + + Certificate Error + Zertifikatsfehler + + + Server certificate for %1 cannot be authenticated. +Do you want to disable SSL verification for this server? +Note: This can expose you to man-in-the-middle attack. + Server-Zertifikat für %1 kann nicht authentifiziert werden. +Möchten Sie die SSL-Verifikation für diesen Server abschalten? +Hinweis: Dies macht Sie anfällig für Man-in-the-middle-Angriffe. + + + Unknown Dto structure deserialization error. + + + + The ApiToken cannot be read in a secure way. + + + + The ApiToken cannot be stored in a secure way. + + + + The ApiToken cannot be deleted in a secure way. + + + + Key chain message: "%1". + + + + Enter the password for: +Dashboard: %1 +User: %2 + + + + Axivion Server Password + + + + The stored ApiToken is not valid anymore, removing it. + + + + Fetching DashboardInfo error. + + + + The DashboardInfo doesn't contain project "%1". + + + + The activated link appears to be external. +Do you want to open "%1" with its default application? + + + + Open External Links + + + + Fetch Projects + + + + Link Project + + + + Unlink Project + + + + Dashboard projects: + + + + This project is not linked to a dashboard project. + + + + This project is linked to "%1". + + + + Incomplete or misconfigured settings. + + + + Highlight marks + + + + Marks issues on the scroll bar. + + + + Dashboard URL: + + + + Username: + + + + User name + Benutzername + + + Edit... + Bearbeiten... + + + Edit Dashboard Configuration + + + + General + Allgemein + + + Fetching... + + + QtC::BareMetal @@ -14959,6 +15970,14 @@ Zum Beispiel bewirkt die Angabe "Revision: 15" dass der Branch auf Rev Show advanced options by default Erweiterte Optionen standardmäßig anzeigen + + Use junctions for CMake configuration and build operations + + + + Create and use junctions for the source and build directories to overcome issues with long paths on Windows.<br><br>Junctions are stored under <tt>C:\ProgramData\QtCreator\Links</tt> (overridable via the <tt>QTC_CMAKE_JUNCTIONS_DIR</tt> environment variable).<br><br>With <tt>QTC_CMAKE_JUNCTIONS_HASH_LENGTH</tt>, you can shorten the MD5 hash key length to a value smaller than the default length value of 32.<br><br>Junctions are used for CMake configure, build and install operations. + + General Allgemein @@ -15215,22 +16234,6 @@ Zum Beispiel bewirkt die Angabe "Revision: 15" dass der Branch auf Rev Configuring "%1" Konfiguriere "%1" - - CMake process failed to start. - Der CMake-Prozess konnte nicht gestartet werden. - - - CMake process was canceled by the user. - Der CMake-Prozess wurde vom Benutzer abgebrochen. - - - CMake process crashed. - Der CMake-Prozess ist abgestürzt. - - - CMake process exited with exit code %1. - Der CMake-Prozess wurde mit dem Rückgabewert %1 beendet. - <Build Directory> <Build-Verzeichnis> @@ -15787,6 +16790,10 @@ Stellen Sie sicher, dass der Wert der CMAKE_BUILD_TYPE-Variable derselbe wie der C++ code issues that Clangd found in the current document. C++-Probleme, die Clangd im aktuellen Dokument gefunden hat. + + Update Potentially Stale Clangd Index Entries + + Generate Compilation Database Kompilierungsdatenbank erzeugen @@ -15927,17 +16934,17 @@ Stellen Sie sicher, dass der Wert der CMAKE_BUILD_TYPE-Variable derselbe wie der QtC::ClangFormat - - Clang-Format Style - Clang-Format-Stil - Current ClangFormat version: %1. Aktuelle ClangFormat-Version: %1. - The widget was generated for ClangFormat %1. If you use a different version, the widget may work incorrectly. - Diese Benutzeroberfläche wurde für ClangFormat %1 generiert. Sie funktioniert möglicherweise nicht korrekt, wenn Sie eine andere ClangFormat-Version verwenden. + Warning: + + + + The current ClangFormat (C++ > Code Style > ClangFormat) settings are not valid. Are you sure you want to apply them? + Open Used .clang-format Configuration File @@ -15966,13 +16973,21 @@ Das integrierte Codemodell übernimmt das Einrücken. Bearbeiteten Quelltext beim Speichern der Datei formatieren - Override .clang-format file - .clang-format-Datei außer Kraft setzen + Use custom settings + + + + Use built-in indenter + Use global settings Globale Einstellungen verwenden + + Please note that the current project includes a .clang-format file, which will be used for code indenting and formatting. + + ClangFormat settings: Einstellungen für ClangFormat: @@ -15985,10 +17000,6 @@ Das integrierte Codemodell übernimmt das Einrücken. Full formatting Komplette Formatierung - - Disable - Deaktivieren - The current project has its own .clang-format file which can be overridden by the settings below. Das aktuelle Projekt hat ihre eigene .clang-format-Datei, die in den untenstehenden Einstellungen überschrieben werden kann. @@ -16318,6 +17329,10 @@ Setzen Sie erst eine gültige ausführbare Datei. Failed to build the project. Das Projekt konnte nicht erstellt werden. + + Diagnostics + + Failed to start the analyzer. Das Analyse-Werkzeug konnte nicht gestartet werden. @@ -16838,10 +17853,6 @@ Setzen Sie erst eine gültige ausführbare Datei. Undo Check Out Auschecken rückgängig machen - - &Undo Check Out "%1" - A&uschecken von "%1" rückgängig machen - Meta+L,Meta+U Meta+L,Meta+U @@ -17845,6 +18856,15 @@ Trotzdem fortfahren? Show keyboard shortcuts in context menus (default: %1) Tastenkombinationen in Kontextmenüs anzeigen (Vorgabe: %1) + + Override cursors for views + + + + Provide cursors for resizing views. +If the system cursors for resizing views are not displayed properly, you can use the cursors provided by %1. + + Toolbar style: Werkzeugleisten-Stil: @@ -17873,10 +18893,22 @@ Trotzdem fortfahren? DPI rounding policy: DPI-Rundungsstrategie: + + The following environment variables are set and can influence the UI scaling behavior of %1: + + + + Environment influences UI scaling behavior. + + Text codec for tools: Zeichenkodierung für Werkzeuge: + + The cursors for resizing views will change after restart. + + The language change will take effect after restart. Die Änderung der Sprache wird nach einem Neustart wirksam. @@ -18075,10 +19107,6 @@ Trotzdem fortfahren? Hide Menu Bar Menüleiste verbergen - - This will hide the menu bar completely. You can show it again by typing %1. - Dies verbirgt die Menüleiste. Sie können Sie durch Eingeben von %1 wieder anzeigen. - Version: Version: @@ -18115,6 +19143,10 @@ Trotzdem fortfahren? Ctrl+Meta+W Ctrl+Meta+W + + This will hide the menu bar completely. You can show it again by typing %1.<br><br>Or, trigger the "%2" action from the "%3" locator filter (%4). + + Change Log... Änderungshistorie... @@ -18326,10 +19358,6 @@ Trotzdem fortfahren? Plugin changes will take effect after restart. Änderungen der Plugins werden nach einem Neustart wirksam. - - Plugin Details of %1 - Beschreibung zu %1 - Plugin Errors of %1 Fehler in %1 @@ -18438,6 +19466,10 @@ Trotzdem fortfahren? About %1 Über %1 + + Copy and Close + + <br/>From revision %1<br/> <br/>Revision %1<br/> @@ -19358,6 +20390,14 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeiche Directories: Verzeichnisse: + + Cannot Create File + + + + Cannot create file "%1". + + Create Directory Verzeichnis erzeugen @@ -19604,6 +20644,10 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeiche Expand All Alle aufklappen + + Show Paths in Relation to Active Project + + Filter Results Resultate filtern @@ -19616,6 +20660,10 @@ Um es abzurufen, tippen Sie das Kürzel im Locator, gefolgt von einem Leerzeiche Collapse All Alle einklappen + + Show Full Paths + + Search Results Suchergebnisse @@ -19780,6 +20828,14 @@ Möchten Sie es beenden? Enter Full Screen Vollbildmodus einschalten + + Proxy Authentication Required + + + + Do not ask again. + + No themes found in installation. Keine Themen in der Installation gefunden. @@ -19860,6 +20916,10 @@ Möchten Sie es beenden? A comment. Ein Kommentar. + + Convert string to pure ASCII. + + Create Folder Verzeichnis erzeugen @@ -20036,10 +21096,6 @@ Möchten Sie sie jetzt auschecken? Ctrl+W Ctrl+W - - Alternative Close - Schließen (alternativ) - Ctrl+F4 Ctrl+F4 @@ -20549,14 +21605,6 @@ provided they were unmodified before the refactoring. Case sensitive: Mit Groß-/Kleinschreibung: - - (%1) - (%1) - - - %1 %2%3 - %1 %2%3 - Based on Qt %1 (%2, %3) Auf Qt %1 (%2, %3) beruhend @@ -21418,6 +22466,10 @@ Doppelklicken Sie einen Eintrag um ihn zu ändern. Move All Function Definitions to %1 Alle Funktionsdefinitionen nach %1 verschieben + + Move Definition Here + + Move Definition to Class Definition in Klasse verschieben @@ -22071,6 +23123,14 @@ Diese Präfixe werden zusätzlich zum Dateinamen beim Wechseln zwischen Header- Use "#pragma once" instead of "#ifndef" guards "#pragma once" statt Include-Guards mit "#ifndef" verwenden + + Headers + Header-Dateien + + + Sources + Quelldateien + S&uffix: E&ndung: @@ -22620,6 +23680,10 @@ Das integrierte Codemodell übernimmt Syntaxhervorhebung, Code-Vervollständigun Insert header files on completion Bei Code-Vervollständigung Header-Dateien hinzufügen + + Automatic + Automatisch + Ignore files greater than Dateien ignorieren, wenn sie größer sind als @@ -25170,6 +26234,10 @@ markers in the source code editor. Treat All Characters as Printable Alle Zeichen als druckbar betrachten + + %1 of length %2 + + Show Unprintable Characters as Escape Sequences Nicht druckbare Zeichen als Escape-Sequenz anzeigen @@ -26377,28 +27445,24 @@ Sie können hier eine andere Verbindung wählen, beispielsweise eine serielle Ve <a href="qthelp://org.qt-project.qtcreator/doc/creator-debugging-qml.html">Was sind die Voraussetzungen?</a> - Enable C++ debugger. - C++-Debugger aktivieren. - - - Try to determine need for C++ debugger. - Versuche, die Notwendigkeit eines C++-Debuggers automatisch festzustellen. + Enable %1 debugger. + - Enable QML debugger. - QML-Debugger aktivieren. + Disable %1 debugger. + - Try to determine need for QML debugger. - Versuche, die Notwendigkeit eines QML-Debuggers automatisch festzustellen. + Try to determine need for %1 debugger. + - Without additional startup commands. - Ohne zusätzliche Kommandos beim Start. + No additional startup commands. + - With additional startup commands. - Mit zusätzlichen Kommandos beim Start. + Use additional startup commands. + C++ debugger: @@ -26408,6 +27472,10 @@ Sie können hier eine andere Verbindung wählen, beispielsweise eine serielle Ve QML debugger: QML-Debugger: + + Python debugger: + + Enable Debugging of Subprocesses Debuggen von Unterprozessen zulassen @@ -28682,6 +29750,85 @@ Versuchen Sie, das Projekt neu zu erstellen. Eine halbe Bildschirmseite aufwärts + + QtC::ExtensionManager + + Extensions + + + + Get started + + + + Install the extension from above. Installation starts automatically. You can always uninstall the extension afterwards. + + + + More information + + + + Online Documentation + + + + Tutorials + Anleitungen + + + Examples + Beispiele + + + Extension library details + + + + Size + Größe + + + Version + Version + + + Location + + + + Extension details + + + + Released + + + + Related tags + + + + Platforms + + + + Dependencies + Abhängigkeiten + + + Extensions in pack + + + + Manage Extensions + + + + Install... + + + QtC::ExtensionSystem @@ -28716,6 +29863,10 @@ Versuchen Sie, das Projekt neu zu erstellen. Dependencies: Abhängigkeiten: + + Plugin Details of %1 + Beschreibung zu %1 + Group: Gruppe: @@ -28980,8 +30131,14 @@ Grund: %3 Plugin is not available on this platform. Plugin ist auf dieser Plattform nicht verfügbar. + + %1 (deprecated) + %1 is a plugin name + + %1 (experimental) + %1 is a plugin name %1 (experimentell) @@ -29050,6 +30207,10 @@ zu deaktivieren, deaktiviert auch die folgenden Plugins: %2 + + Details + Details + The following plugins have errors and cannot be loaded: Die folgenden Plugins sind fehlerhaft und können nicht geladen werden: @@ -29062,6 +30223,10 @@ zu deaktivieren, deaktiviert auch die folgenden Plugins: Continue Fortsetzen + + Multiple versions of the same plugin have been found. + + %1 > About Plugins %1 > Plugins @@ -30693,6 +31858,10 @@ Jetzt Commit ausführen? Pull with rebase pull mit rebase + + Git command: + + Set "HOME" environment variable Umgebungsvariable "HOME" setzen @@ -31157,18 +32326,6 @@ wenn es außerhalb von git bash aufgerufen wird. Querying Gerrit Anfrage an Gerrit - - Error running %1: %2 - Fehler bei Ausführung von %1: %2 - - - %1 crashed. - %1 ist abgestürzt. - - - %1 returned %2. - %1 gab %2 zurück. - Timeout Zeitüberschreitung @@ -31966,15 +33123,6 @@ Leer lassen, um das Dateisystem zu durchsuchen. Avoid translating "Diff" Diff für aktuelle Datei - - Git Blame - Git Blame - - - <b>Note:</b> "%1" or "%2" is enabled in the instant blame settings. - %1 and %2 are the "ignore whitespace changes" and "ignore line moves" options - <b>Hinweis:</b> "%1" oder "%2" ist in den Einstellungen für Instant Blame aktiviert. - Diff of "%1" Avoid translating "Diff" @@ -32149,10 +33297,6 @@ Leer lassen, um das Dateisystem zu durchsuchen. Unsupported version of Git found. Git %1 or later required. Es wurde eine nicht unterstützte Version von Git festgestellt. Es wird Git %1 oder neuer benötigt. - - You - Sie selbst - Amend %1 Abgabe %1 ändern (amend) @@ -33621,6 +34765,18 @@ Möchten Sie sie überschreiben? The Info.plist might be incorrect. Die Info.plist ist möglicherweise fehlerhaft. + + Deployment canceled. + + + + Failed to run devicectl: %1. + + + + devicectl returned unexpected output ... deployment might have failed. + + The provisioning profile "%1" (%2) used to sign the application does not cover the device %3 (%4). Deployment to it will fail. Das zum Signieren der Anwendung verwendete Provisioning-Profil "%1" (%2) deckt das Gerät %3 (%4) nicht ab. Deployment auf dieses wird scheitern. @@ -33735,6 +34891,10 @@ Möchten Sie sie überschreiben? %1 is not connected. Keine Verbindung zu %1. + + Debugging and profiling is currently not supported for devices with iOS 17 and later. + + Device type: Gerätetyp: @@ -33756,8 +34916,8 @@ Möchten Sie sie überschreiben? Der Start der Anwendung im Simulator ist gescheitert. Der Bundle-Pfad %1 ist ungültig - Application launch on simulator failed. Simulator not running. - Der Start der Anwendung im Simulator ist gescheitert. Der Simulator läuft nicht. + Application launch on simulator failed. Simulator not running. %1 + Application install on simulator failed. %1 @@ -33779,6 +34939,26 @@ Möchten Sie sie überschreiben? Invalid simulator response. Device Id mismatch. Device Id = %1 Response Id = %2 Ungültige Antwort des Simulators. Die Geräte-IDs stimmen nicht überein. Geräte-ID = %1 Antwort-ID = %2 + + Running failed. No iOS device found. + + + + Running canceled. + + + + "%1" exited. + + + + Failed to determine bundle identifier. + + + + Running "%1" on %2... + + Could not find %1. %1 konnte nicht gefunden werden. @@ -34141,6 +35321,82 @@ Ablaufdatum: %3 Reset to Default Auf Vorgabe zurücksetzen + + Failed to parse devicectl output: %1. + + + + Operation failed: %1 + + + + Failed to parse devicectl output: "result" is missing. + + + + devicectl returned unexpected output ... running failed. + + + + Failed to start process. + + + + Process was canceled. + + + + Process was forced to exit. + + + + Cannot find xcrun. + + + + xcrun is not executable. + + + + Invalid Empty UDID. + + + + Failed to start simulator app. + + + + Simulator device is not available. (%1) + + + + Simulator start was canceled. + + + + Cannot start Simulator device. Previous instance taking too long to shut down. (%1) + + + + Cannot start Simulator device. Simulator not in shutdown state. (%1) + + + + Cannot start Simulator device. Simulator not in booted state. (%1) + + + + Bundle path does not exist. + + + + Invalid (empty) bundle identifier. + + + + Failed to convert inferior pid. (%1) + + QtC::LanguageClient @@ -34208,6 +35464,46 @@ Ablaufdatum: %3 Manage... Verwalten... + + Install npm Package + + + + Running "%1" to install %2. + Führe "%1" aus, um %2 zu installieren. + + + The installation of "%1" was canceled by timeout. + Die Installation von "%1" wurde wegen Zeitüberschreitung abgebrochen. + + + The installation of "%1" was canceled by the user. + Die Installation von "%1" wurde vom Benutzer abgebrochen. + + + Installing "%1" failed with exit code %2. + Die Installation von "%1" ist mit dem Rückgabewert %2 fehlgeschlagen. + + + Install %1 language server via npm. + + + + Setup %1 language server (%2). + + + + Install + Installieren + + + Setup + + + + %1 Language Server + + Name: Name: @@ -34427,6 +35723,10 @@ Für gültige Einstellungen schauen Sie in die Dokumentation des benutzten Langu Expand All Alle aufklappen + + Collapse All + Alle einklappen + Client Message Client-Nachricht @@ -35119,6 +36419,14 @@ Für gültige Einstellungen schauen Sie in die Dokumentation des benutzten Langu Remove + + Read about Using QtMCUs in the Qt Design Studio + + + + Go to the Documentation + + Create new kits @@ -36858,6 +38166,11 @@ Weitere Erklärungen sind möglicherweise in "Ausgabe der Anwendung" z &Hijack &Hijack + + Error running "where" on %1: The file is not mapped. + Failed to run p4 "where" to resolve a Perforce file name to a local file system name. + + p4 revert Rückgängig machen @@ -36898,18 +38211,6 @@ Weitere Erklärungen sind möglicherweise in "Ausgabe der Anwendung" z p4 changelists %1 p4 changelists %1 - - Could not start perforce "%1". Please check your settings in the preferences. - Das Perforce-Kommando "%1" konnte nicht gestartet werden. Bitte überprüfen Sie die Einstellungen. - - - Perforce did not respond within timeout limit (%1 s). - Perforce reagierte nicht innerhalb des Zeitlimits (%1 s). - - - The process terminated with exit code %1. - Der Prozess wurde beendet, Rückgabewert %1. - Close Submit Editor Submit-Editor schließen @@ -36926,20 +38227,6 @@ Weitere Erklärungen sind möglicherweise in "Ausgabe der Anwendung" z Cannot submit: %1. Submit fehlgeschlagen: %1. - - p4 submit failed: %1 - Fehler beim Submit: %1 - - - Error running "where" on %1: %2 - Failed to run p4 "where" to resolve a Perforce file name to a local file system name. - Fehler bei der Ausführung von "where" bei Datei "%1": %2 - - - The file is not mapped - File is not managed by Perforce - Die Datei wird nicht von Perforce verwaltet - Perforce repository: %1 Perforce-Repository: %1 @@ -36948,10 +38235,6 @@ Weitere Erklärungen sind möglicherweise in "Ausgabe der Anwendung" z Perforce: Unable to determine the repository: %1 Perforce: Das Repository von konnte nicht bestimmt werden: %1 - - The process terminated abnormally. - Der Prozess wurde unnormal beendet. - Perforce is not correctly configured. Perforce ist nicht richtig konfiguriert. @@ -37230,10 +38513,6 @@ Weitere Erklärungen sind möglicherweise in "Ausgabe der Anwendung" z Skipping disabled step %1. Überspringe deaktivierten Schritt %1. - - Variable already exists. - Variable existiert bereits. - Ed&it Bearbe&iten @@ -37262,10 +38541,6 @@ Weitere Erklärungen sind möglicherweise in "Ausgabe der Anwendung" z Prepend Path... Pfad voranstellen... - - &Batch Edit... - Als &Text bearbeiten... - Open &Terminal &Terminalfenster öffnen @@ -38182,6 +39457,14 @@ Bitte versuchen Sie es erneut. Runs a run configuration of the active project. Führt eine Ausführungskonfiguration des aktiven Projekts aus. + + Debug Run Configuration + + + + Starts debugging a run configuration of the active project. + + Switch Run Configuration Ausführungskonfiguration auswählen @@ -38820,6 +40103,10 @@ The name of the build configuration created by default for a generic project.&Keep Running &Fortsetzen + + Remote process did not finish in time. Connectivity lost? + + Starting %1... Starte %1... @@ -39889,14 +41176,6 @@ Bitte schließen Sie alle laufenden Instanzen Ihrer Anwendung vor dem Erstellen. Include QMainWindow QMainWindow einbinden - - Include QDeclarativeItem - Qt Quick 1 - QDeclarativeItem einbinden - Qt Quick 1 - - - Include QQuickItem - Qt Quick 2 - QQuickItem einbinden - Qt Quick 2 - Include QSharedData QSharedData einbinden @@ -40631,6 +41910,10 @@ Sie sollten nicht mehrere Test-Frameworks im selben Projekt mischen.PySide 6 PySide 6 + + Include QQuickItem + + Qt 6.2 Qt 6.2 @@ -40855,6 +42138,26 @@ Sie sollten nicht mehrere Test-Frameworks im selben Projekt mischen.Qt Quick Test Project Qt Quick Test-Projekt + + Creates a translation file that you can add to a Qt project. + + + + Qt Translation File + + + + 2.x + + + + 3.x + + + + Catch2 version: + + Creates a CMake-based test project for which a code snippet can be entered. Erstellt ein CMake-basiertes Testprojekt, für welches ein Code-Ausschnitt angegeben werden kann. @@ -41379,6 +42682,11 @@ Sie sollten nicht mehrere Test-Frameworks im selben Projekt mischen.* Version %1 nicht unterstützt. + + * Failed to create: %1 + + + The platform selected for the wizard. Die für den Assistenten ausgewählte Plattform. @@ -41508,16 +42816,8 @@ Sie sollten nicht mehrere Test-Frameworks im selben Projekt mischen.Wählen Sie das Wurzelverzeichnis - Replacement for - Ersatz für - - - Replacement for "%1" - Ersatz für "%1" - - - Project "%1" was configured for kit "%2" with id %3, which does not exist anymore. The new kit "%4" was created in its place, in an attempt not to lose custom project settings. - Das Projekt "%1" wurde für das Kit "%2" mit dem Bezeichner %3 konfiguriert. Dieses Kit existiert nicht mehr. Das neue Kit "%4" wurde an seiner Stelle erzeugt, um den Verlust von benutzerdefinierten Projekteinstellungen zu verhindern. + Project "%1" was configured for kit "%2" with id %3, which does not exist anymore. You can create a new kit or copy the steps of the vanished kit to another kit in %4 mode. + Could not find any qml_*.qm file at "%1" @@ -41767,6 +43067,43 @@ Sie werden erhalten. Show Non-matching Lines Nicht passende Zeilen anzeigen + + The project was configured for kits that no longer exist. Select one of the following options in the context menu to restore the project's settings: + + + + Create a new kit with the same name for the same device type, with the original build, deploy, and run steps. Other kit settings are not restored. + + + + Copy the build, deploy, and run steps to another kit. + + + + %1 (%2) + vanished target display role: vanished target name (device type name) + %1 (%2) + + + Create a New Kit + + + + Copy Steps to Another Kit + + + + Remove Vanished Target "%1" + + + + Remove All Vanished Targets + + + + Vanished Targets + + Project Settings Projekteinstellungen @@ -42040,10 +43377,6 @@ Was soll %1 tun? Use debug version of frameworks (DYLD_IMAGE_SUFFIX=_debug) Debug-Version von Frameworks verwenden (DYLD_IMAGE_SUFFIX=_debug) - - Interpreter: - Interpreter: - X11 Forwarding: X11-Weiterleitung: @@ -42064,10 +43397,6 @@ Was soll %1 tun? Override MAKEFLAGS MAKEFLAGS überschreiben - - <code>MAKEFLAGS</code> specifies parallel jobs. Check "%1" to override. - <code>MAKEFLAGS</code> legt parallele Jobs fest. Wählen Sie "%1", um dies zu überstimmen. - Disable in subdirectories: In Unterverzeichnissen deaktivieren: @@ -42108,6 +43437,18 @@ Was soll %1 tun? <b>Make:</b> %1 not found in the environment. <b>Make:</b> %1 konnte in der Umgebung nicht gefunden werden. + + Overriding <code>MAKEFLAGS</code> environment variable. + + + + <code>MAKEFLAGS</code> specifies a conflicting job count. + + + + No conflict with <code>MAKEFLAGS</code> environment variable. + + Enable connection sharing: Verbindungsfreigabe aktivieren: @@ -42214,6 +43555,14 @@ Was soll %1 tun? Shadow build: Shadow-Build: + + Build directory contains potentially problematic character "%1". + + + + This warning can be suppressed <a href="dummy">here</a>. + + The project is currently being parsed. Das Projekt wird gerade ausgewertet. @@ -42523,6 +43872,14 @@ Was soll %1 tun? Start build processes with low priority Erstellungsprozesse mit niedriger Priorität starten + + Warn against build directories with spaces or non-ASCII characters + + + + Some legacy build tools do not deal well with paths that contain "special" characters such as spaces, potentially resulting in spurious build errors.<p>Uncheck this option if you do not work with such tools. + + Do Not Build Anything Nichts erstellen @@ -42567,6 +43924,14 @@ Was soll %1 tun? Use jom instead of nmake jom statt nmake verwenden + + Environment changes to apply to run configurations, but not build configurations. + + + + Application environment: + + Projects Directory Projektverzeichnis @@ -42965,6 +44330,10 @@ fails because Clang does not understand the target architecture. &Make Default Als &Vorgabe setzen + + &Generate Kit + + &Clean Up &Bereiningen @@ -43001,11 +44370,6 @@ fails because Clang does not understand the target architecture. Language Server Configuration Language Server-Konfiguration - - %1 (Windowed) - <python display name> (Windowed) - %1 (mit Fenster) - Python interpreter: Python-Interpreter: @@ -43035,12 +44399,20 @@ fails because Clang does not understand the target architecture. PySide-Version auswählen - Select which PySide version to install: - Wählen Sie die zu installierende PySide-Version aus: + Installing PySide + - Latest PySide from the Python Package Index - Letzte PySide-Version aus dem Python-Paketindex + You can install PySide from PyPi (Community OSS version) or from your Qt installation location, if you are using the Qt Installer and have a commercial license. + + + + Select which version to install: + + + + Latest PySide from the PyPI + PySide %1 Wheel (%2) @@ -43091,8 +44463,28 @@ fails because Clang does not understand the target architecture. Geben Sie den Ort des PySide Projektwerkzeugs ein. - General - Allgemein + PySide uic tool: + + + + Enter location of PySide uic tool. + + + + Effective venv: + + + + New Virtual Environment + + + + Global Python + + + + Virtual Environment + REPL @@ -43167,16 +44559,48 @@ fails because Clang does not understand the target architecture. PySide-Version: - Create new virtual environment - Neue virtuelle Umgebung erstellen + Issues parsed from Python runtime output. + Probleme, die in der Laufzeitausgabe von Python gefunden wurden. + + + None + - Path to virtual environment: - Pfad zur virtuellen Umgebung: + The interpreter used for Python based projects. + - Issues parsed from Python runtime output. - Probleme, die in der Laufzeitausgabe von Python gefunden wurden. + No Python setup. + + + + Python "%1" not found. + + + + Python "%1" is not executable. + + + + Python "%1" does not contain a usable pip. pip is needed to install Python packages from the Python Package Index, like PySide and the Python language server. To use any of that functionality ensure that pip is installed for that Python. + + + + Python "%1" does not contain a usable venv. venv is the recommended way to isolate a development environment for a project from the globally installed Python. + + + + Name of Python Interpreter + + + + Path to Python Interpreter + + + + No Python interpreter set for kit "%1" + @@ -43545,6 +44969,10 @@ The affected files are: Die betroffenen Dateien sind: %2 + + Qbs Editor + + QtC::Qdb @@ -46867,7 +48295,7 @@ Speichern fehlgeschlagen. Advanced Options - + Erweiterte Optionen File %1 will be created. @@ -47059,6 +48487,14 @@ Are you sure? Build directory: Build-Verzeichnis: + + The Selected Kit Is Not Supported + + + + You cannot use the selected kit to preview Qt for MCUs applications. + + Failed to find valid Qt for MCUs kit @@ -47213,10 +48649,6 @@ Möchten Sie fortfahren? Local file "%1" does not exist. Es gibt keine lokale Datei "%1". - - Remote chmod failed for file "%1": %2 - "chmod" für die entfernte Datei "%1" ist fehlgeschlagen: %2 - No device configuration set. Es ist keine Gerätekonfiguration gesetzt. @@ -47383,6 +48815,10 @@ wirklich löschen? Qt %{Qt:Version} (%2) Qt %{Qt:Version} (%2) + + (on %1) + + Qt version is not properly installed, please run make install Die Qt-Version ist nicht richtig installiert, führen Sie bitte make install aus @@ -47892,8 +49328,12 @@ wirklich löschen? Deaktiviert QML-Debuggen. QML-Profiling funktioniert weiterhin. - If you plan to provide translations for your project's user interface via the Qt Linguist tool, please select a language here. A corresponding translation (.ts) file will be generated for you. - Falls Sie planen, Übersetzungen für die Benutzeroberfläche Ihres Projekts über das Qt Linguist-Werkzeug bereit zu stellen, wählen Sie hier eine Sprache. Eine zugehörige Übersetzungsdatei (.ts) wird für Sie erzeugt. + Select a language for which a corresponding translation (.ts) file will be generated for you. + + + + If you plan to provide translations for your project's user interface via the Qt Linguist tool, select a language here. A corresponding translation (.ts) file will be generated for you. + <none> @@ -48079,10 +49519,6 @@ Zusätzlich wird die Verbindung zum Gerät getestet. Local file "%1" does not exist. Es gibt keine lokale Datei "%1". - - Remote chmod failed for file "%1": %2 - "chmod" für die entfernte Datei "%1" ist fehlgeschlagen: %2 - Incremental deployment Inkrementelles Deployment @@ -48131,6 +49567,19 @@ Zusätzlich wird die Verbindung zum Gerät getestet. All specified ports are available. Alle angegebenen Ports sind verfügbar. + + Connecting to device... + + + + Connected. Now doing extended checks. + + + + + Basic connectivity test failed, device is considered unusable. + + Device replied to echo with unexpected contents: "%1" Das Gerät hat auf das Echo mit unerwartetem Inhalt geantwortet: "%1" @@ -48443,6 +49892,14 @@ Der Kontrollprozess konnte nicht gestartet werden. SSH connection failure: SSH-Verbindungsfehler: + + Device is disconnected. + + + + Can't send control signal to the %1 device. The device might have been disconnected. + + Remote Linux Entferntes Linuxgerät @@ -48451,10 +49908,26 @@ Der Kontrollprozess konnte nicht gestartet werden. Error Fehler + + Establishing initial connection to device "%1". This might take a moment. + + + + Device "%1" is currently marked as disconnected. + + + + The device was not available when trying to connect previously.<br>No further connection attempts will be made until the device is manually reset by running a successful connection test via the <a href="dummy">settings page</a>. + + Failed: %1 Fehlgeschlagen: %1 + + Device is considered unconnected. Re-run device test to reset state. + + Remote Linux Device Entferntes Linuxgerät @@ -48589,10 +50062,6 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Transfer method: Übertragungsmethode: - - Use rsync if available. Otherwise use default transfer. - Benutze rsync, sofern verfügbar. Sonst Standardmethode verwenden. - Use sftp if available. Otherwise use default transfer. Benutze SFTP, sofern verfügbar. Sonst Standardmethode verwenden. @@ -48605,6 +50074,10 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Unknown error occurred while trying to create remote directories Beim Erstellen von entfernten Verzeichnissen ist ein unbekannter Fehler aufgetreten + + Transfer method was downgraded from "%1" to "%2". If this is unexpected, please re-test device "%3". + + rsync failed to start: %1 rsync konnte nicht gestartet werden: %1 @@ -48625,6 +50098,10 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Ignore missing files: Fehlende Dateien ignorieren: + + Use rsync or sftp if available, but prefer rsync. Otherwise use default transfer. + + rsync is only supported for transfers between different devices. rsync wird nur für das Übertragen zwischen unterschiedlichen Geräten unterstützt. @@ -50212,6 +51689,22 @@ Testfall "%2" wird nicht aufgezeichnet. Test Suites Test-Suites + + Do you really want to delete "%1" permanently? + + + + Remove Shared File + + + + Cancel + Abbrechen + + + Failed to remove "%1". + + Remove "%1" from the list of shared folders? "%1" aus der Liste der gemeinsamen Verzeichnisse entfernen? @@ -50952,7 +52445,6 @@ Die Datei "%1" konnte nicht geöffnet werden. Sends Esc to terminal instead of %1. - %1 is the application name (Qt Creator) Sendet Escape zum Terminal statt zu %1. @@ -50965,12 +52457,10 @@ Die Datei "%1" konnte nicht geöffnet werden. %1 shortcuts are blocked when focus is inside the terminal. - %1 is the application name (Qt Creator) Tastenkombinationen von %1 werden blockiert, wenn der Fokus im Terminal ist. %1 shortcuts take precedence. - %1 is the application name (Qt Creator) Tastenkombinationen von %1 werden bevorzugt. @@ -51177,6 +52667,10 @@ Die Datei "%1" konnte nicht geöffnet werden. Paste Einfügen + + Select All + + Clear Selection Auswahl löschen @@ -51482,6 +52976,10 @@ Werte kleiner als 100% können überlappende und falsch ausgerichtete Darstellun Copy... Kopieren... + + Custom settings: + + Delete Löschen @@ -51756,10 +53254,6 @@ Werte kleiner als 100% können überlappende und falsch ausgerichtete Darstellun Import... Importieren... - - Current settings: - Aktuelle Einstellungen: - Copy Code Style Coding Style kopieren @@ -51804,6 +53298,10 @@ Werte kleiner als 100% können überlappende und falsch ausgerichtete Darstellun %1 [built-in] %1 [eingebaut] + + %1 [customizable] + + Files in File System Dateien aus Dateisystem @@ -52201,6 +53699,14 @@ Gibt an, wie sich die Rücktaste bezüglich Einrückung verhält. Display file line ending Zeilenende-Kodierung anzeigen + + &Highlight selection + + + + Adds a colored background and a marker to the scrollbar to occurrences of the selected text. + + Next to editor content Neben Editorinhalt @@ -52912,8 +54418,8 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen. Alt+U - &Sort Selected Lines - Auswahl &sortieren + &Sort Lines + Meta+Shift+S @@ -54126,10 +55632,23 @@ Außer Leerzeichen innerhalb von Kommentaren und Zeichenketten. Copy to Clipboard In die Zwischenablage kopieren + + Git Blame + Git Blame + Copy SHA1 to Clipboard SHA1 in die Zwischenablage kopieren + + <b>Note:</b> "%1" or "%2" is enabled in the instant blame settings. + %1 and %2 are the "ignore whitespace changes" and "ignore line moves" options + <b>Hinweis:</b> "%1" oder "%2" ist in den Einstellungen für Instant Blame aktiviert. + + + You + Sie selbst + Show Preview Vorschau anzeigen @@ -54142,10 +55661,6 @@ Außer Leerzeichen innerhalb von Kommentaren und Zeichenketten. Emphasis Hervorherbung - - Strong - Fett - Inline Code Inline-Quelltext @@ -54760,10 +56275,6 @@ Die Trace-Daten sind verloren. Reset to Default Layout Vorgabe wiederherstellen - - Automatically Hide View Title Bars - Titelleisten von Anzeigen automatisch ausblenden - Name contains white space. Der Name enthält Leerzeichen. @@ -54837,8 +56348,8 @@ Die Trace-Daten sind verloren. Das Kommando "%1" konnte nicht gestartet werden. - The command "%1" did not respond within the timeout limit (%2 s). - Das Kommando "%1" hat nicht innerhalb des Zeitlimits (%2 s) geantwortet. + The command "%1" was canceled after %2 ms. + Invalid command @@ -54880,6 +56391,10 @@ Die Trace-Daten sind verloren. Cannot execute "%1": %2 Das Kommando "%1" konnte nicht ausgeführt werden: %2 + + Failed to start terminal process. The stub exited before the inferior was started. + + Cannot set permissions on temporary directory "%1": %2 Die Berechtigungen für das temporäre Verzeichnis "%1" konnten nicht gesetzt werden: %2 @@ -54916,6 +56431,10 @@ Die Trace-Daten sind verloren. createTempFile is not implemented for "%1". createTempFile ist für "%1" nicht implementiert. + + Refusing to remove the standard directory "%1". + + Refusing to remove root directory. Das Wurzelverzeichnis kann nicht entfernt werden. @@ -54971,6 +56490,10 @@ Die Trace-Daten sind verloren. Die Datei "%1" konnte nicht geschrieben werden (es wurden nur %2 von %n Bytes geschrieben). + + Device is not connected + + Failed reading file "%1": %2 Die Datei "%1" konnte nicht gelesen werden: %2 @@ -55023,6 +56546,10 @@ Die Trace-Daten sind verloren. Cannot create temporary file in %1: %2 Es konnte keine temporäre Datei erstellt in %1 werden: %2 + + Cannot create temporary file %1: %2 + + Overwrite File? Datei überschreiben? @@ -55353,14 +56880,8 @@ Um eine Variable zu deaktivieren, stellen Sie der Zeile "#" voran. <VARIABLE> - Name when inserting a new variable <VARIABLE> - - <VALUE> - Value when inserting a new variable - <VALUE> - Elapsed time: %1. Verstrichene Zeit: %1. @@ -57124,8 +58645,8 @@ Check settings or ensure Valgrind is installed and available in PATH. Führe aus: %1 - Running in "%1": %2. - Führe in "%1" aus: %2. + Running in "%1": %2 + Failed to retrieve data. @@ -57465,8 +58986,8 @@ should a repository require SSH-authentication (see documentation on SSH and the Willkommen - New to Qt? - Neu bei Qt? + Welcome to %1 + Create Project... @@ -57476,6 +58997,10 @@ should a repository require SSH-authentication (see documentation on SSH and the Open Project... Projekt öffnen... + + Explore more + + Get Started Schnelleinstieg @@ -58311,13 +59836,6 @@ defined in step size. - - RemoteLinux::SshProcessInterface - - Can't send control signal to the %1 device. The device might have been disconnected. - - - RenameFolderDialog @@ -58462,6 +59980,64 @@ defined in step size. + + SaveAsDialog + + Save Effect + + + + Effect name: + + + + Name contains invalid characters. + + + + Name must start with a capital letter + + + + Name must have at least 3 characters + + + + Name cannot contain white space + + + + Save + Speichern + + + Cancel + Abbrechen + + + + SaveChangesDialog + + Save Changes + Änderungen speichern + + + Current composition has unsaved changes. + + + + Cancel + Abbrechen + + + Save + Speichern + + + Discard Changes + + + ScaleToolAction @@ -58815,6 +60391,13 @@ This is used for calculating the total implicit size. + + SocialButton + + Text + Text + + SpatialSoundSection @@ -58996,6 +60579,13 @@ it reaches the start or end. Ausrichtung des Split View. + + SplitViewToggleAction + + Toggle Split View On/Off + + + StackLayoutSpecifics @@ -59135,6 +60725,10 @@ it reaches the start or end. Extend + + Jump to the code + + Reset when Condition Zurücksetzen bei Bedingung @@ -59511,6 +61105,13 @@ This is used for calculating the total implicit size. Bestimmt die Position der Tabs. + + Tag + + tag name + + + TemplateMerge @@ -59530,6 +61131,41 @@ This is used for calculating the total implicit size. + + TestControlPanel + + X + X + + + Theme + + + + light + + + + dark + + + + + + + + Basic + Grundlegend + + + Community + + + + < + + + TextAreaSpecifics @@ -59974,6 +61610,29 @@ This is used for calculating the total implicit size. + + ThumbnailDelegate + + Overwrite Example? + + + + Example already exists.<br>Do you want to replace it? + + + + Downloading... + + + + Extracting... + + + + Recently Downloaded + + + TimelineBarItem @@ -60077,6 +61736,104 @@ This is used for calculating the total implicit size. + + TourModel + + Welcome Page + + + + The welcome page of Qt Design Studio. + + + + Workspaces + + + + Introduction to the most important workspaces. + + + + Top Toolbar + + + + Short explanation of the top toolbar. + + + + States + + + + An introduction to states. + + + + Sorting Components + + + + A way to organize multiple components. + + + + Connecting Components + + + + A way to connect components with actions. + + + + Adding Assets + + + + A way to add new assets to the project. + + + + Creating 2D Animation + + + + A way to create a 2D Animation. + + + + Border and Arc + + + + Work with Border and Arc Studio Components. + + + + Ellipse and Pie + + + + Work with Ellipse and Pie Studio Components. + + + + Complex Shapes + + + + Work with Polygon, Triangle and Rectangle Studio Components. + + + + + TourRestartButton + + Restart + + + TumblerSpecifics @@ -60186,7 +61943,7 @@ Are you sure you want to remove the %1? VideoSection Video - + Video Source @@ -60342,50 +62099,6 @@ Are you sure you want to remove the %1? main - - Recent Projects - Zuletzt bearbeitete Projekte - - - Examples - Beispiele - - - Tutorials - Anleitungen - - - Welcome to - Willkommen bei - - - Qt Design Studio - Qt Design Studio - - - Create New - Neu erstellen - - - Open Project - Projekt öffnen - - - Help - Hilfe - - - Community - - - - Blog - - - - Community Edition - - Continue Fortsetzen -- cgit v1.2.3 From 3c94f63e67a0d58f160ff7635b8b6c0ca2cd4680 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Tue, 5 Mar 2024 13:22:25 +0100 Subject: Android: Guard against assert due to invalid access Change-Id: I4f98f18b786c95acae09a3be3b924953f1292e61 Reviewed-by: Artem Sokolovskii Reviewed-by: --- src/plugins/android/androidbuildapkstep.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/plugins/android/androidbuildapkstep.cpp b/src/plugins/android/androidbuildapkstep.cpp index 34c6a9b619..c57d008705 100644 --- a/src/plugins/android/androidbuildapkstep.cpp +++ b/src/plugins/android/androidbuildapkstep.cpp @@ -228,11 +228,12 @@ AndroidBuildApkWidget::AndroidBuildApkWidget(AndroidBuildApkStep *step) m_step->setBuildToolsVersion(buildToolsSdkComboBox->itemData(idx).value()); }); - const int initIdx = (m_step->buildToolsVersion().majorVersion() < 1) - ? buildToolsVersions.indexOf(buildToolsVersions.last()) - : buildToolsVersions.indexOf(m_step->buildToolsVersion()); - buildToolsSdkComboBox->setCurrentIndex(initIdx); - + if (!buildToolsVersions.isEmpty()) { + const int initIdx = (m_step->buildToolsVersion().majorVersion() < 1) + ? buildToolsVersions.indexOf(buildToolsVersions.last()) + : buildToolsVersions.indexOf(m_step->buildToolsVersion()); + buildToolsSdkComboBox->setCurrentIndex(initIdx); + } auto createAndroidTemplatesButton = new QPushButton(Tr::tr("Create Templates")); createAndroidTemplatesButton->setToolTip( -- cgit v1.2.3 From 7b8f274b9e3956a2e8668f932ee9717f96568678 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 6 Mar 2024 10:30:42 +0100 Subject: Help: Update qlitehtml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Includes layout fixes Fixes: QTCREATORBUG-30459 Change-Id: I561e018f7c99a00048db04643fc3d62c3282e509 Reviewed-by: Robert Löhning --- src/libs/qlitehtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/libs/qlitehtml b/src/libs/qlitehtml index 7e8eb0f5ea..9c7b5d073b 160000 --- a/src/libs/qlitehtml +++ b/src/libs/qlitehtml @@ -1 +1 @@ -Subproject commit 7e8eb0f5eaee53b0aeb04208bdaba74fcffc3a3f +Subproject commit 9c7b5d073bf4713250648cf7ea35580f489f7fd7 -- cgit v1.2.3