From 0dde6338876be0d57beaddfaeaba8e75449acfb9 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 5 Jul 2023 15:07:56 +0200 Subject: [PATCH 01/31] Meson: Fix tool argument UI setup The line edit needs to be initialized with the stored arguments. Fixes: QTCREATORBUG-29351 Change-Id: I9c4e0eed05a5c00520aebf1c6c4ea3cf17ef17df Reviewed-by: Christian Stenger --- src/plugins/mesonprojectmanager/ninjabuildstep.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/mesonprojectmanager/ninjabuildstep.cpp b/src/plugins/mesonprojectmanager/ninjabuildstep.cpp index ac41aeecfaa..0cb71186bdd 100644 --- a/src/plugins/mesonprojectmanager/ninjabuildstep.cpp +++ b/src/plugins/mesonprojectmanager/ninjabuildstep.cpp @@ -59,6 +59,7 @@ QWidget *NinjaBuildStep::createConfigWidget() buildTargetsList->setFrameShadow(QFrame::Raised); auto toolArguments = new QLineEdit(widget); + toolArguments->setText(m_commandArgs); auto wrapper = Core::ItemViewFind::createSearchableWrapper(buildTargetsList, Core::ItemViewFind::LightColored); From 615a1e52d5e082f7a1132375b228cb9b13309503 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 6 Jul 2023 09:28:04 +0200 Subject: [PATCH 02/31] Doc: Remove help icon from tutorials topic It was used in two places and other similar topics as Tutorials did not have an icon. Change-Id: I79c3502565958fd9f88889603d87ca1fab9d99e3 Reviewed-by: Eike Ziller --- doc/qtcreator/src/overview/creator-only/creator-tutorials.qdoc | 2 -- 1 file changed, 2 deletions(-) diff --git a/doc/qtcreator/src/overview/creator-only/creator-tutorials.qdoc b/doc/qtcreator/src/overview/creator-only/creator-tutorials.qdoc index 40b0ffc1d0a..244310c17bf 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-tutorials.qdoc +++ b/doc/qtcreator/src/overview/creator-only/creator-tutorials.qdoc @@ -8,8 +8,6 @@ \title Tutorials - \image front-help.png - You can use \QC to create applications for several \l{Supported Platforms} {platforms} by using several \l{User Interfaces}{UI technologies}. Follow the tutorials to learn how to create some basic Qt applications. From 86191221b812e5c1dabf14733f2a342e3fbe5983 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Thu, 6 Jul 2023 08:32:08 +0200 Subject: [PATCH 03/31] Copilot: fix crash on explicitly completion request Change-Id: I6bdbc25063818399f1d2c81b9e8f7508f57a4b72 Reviewed-by: Marcus Tillmanns --- src/plugins/copilot/copilotplugin.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/copilot/copilotplugin.cpp b/src/plugins/copilot/copilotplugin.cpp index 1a554e13977..bb5c80fa60f 100644 --- a/src/plugins/copilot/copilotplugin.cpp +++ b/src/plugins/copilot/copilotplugin.cpp @@ -74,7 +74,7 @@ void CopilotPlugin::initialize() connect(requestAction, &QAction::triggered, this, [this] { if (auto editor = TextEditor::TextEditorWidget::currentTextEditorWidget()) { - if (m_client->reachable()) + if (m_client && m_client->reachable()) m_client->requestCompletions(editor); } }); From 997570cb29800e1327ac093a372f6938b95a87d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Wed, 5 Jul 2023 23:47:52 +0200 Subject: [PATCH 04/31] SquishTests: Update kit removal function The names of the kits don't change anymore before clicking "Apply". Change-Id: I1477b419053f75c4f761561808fc4c6e5d21b19d Reviewed-by: Reviewed-by: Christian Stenger --- tests/system/suite_general/tst_remove_kits/test.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/system/suite_general/tst_remove_kits/test.py b/tests/system/suite_general/tst_remove_kits/test.py index 567d58508b9..19041c7e04c 100644 --- a/tests/system/suite_general/tst_remove_kits/test.py +++ b/tests/system/suite_general/tst_remove_kits/test.py @@ -22,10 +22,9 @@ kitNameTemplate = "Manual.%s" def __removeKit__(_, kitName): global kitNameTemplate - if kitName == Targets.getStringForTarget(Targets.getDefaultKit()): - # The following kits will be the default kit at that time - kitNameTemplate += " (default)" item = kitNameTemplate % kitName.replace(".", "\\.") + if kitName == Targets.getStringForTarget(Targets.getDefaultKit()): + item += " (default)" mouseClick(waitForObjectItem(":BuildAndRun_QTreeView", item)) clickButton(waitForObject(":Remove_QPushButton")) From 0a4e671ab881fe8f04c3b747711d84c70ccbb3d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Wed, 5 Jul 2023 23:59:30 +0200 Subject: [PATCH 05/31] SquishTests: Update session dialog Change-Id: I76919f48e2301c1815eaac39f81e42fa12f59a86 Reviewed-by: Reviewed-by: Christian Stenger --- tests/system/objects.map | 2 +- tests/system/suite_general/tst_session_handling/test.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/system/objects.map b/tests/system/objects.map index 97d44b7ed26..e69bd12677e 100644 --- a/tests/system/objects.map +++ b/tests/system/objects.map @@ -192,7 +192,7 @@ :Send to Codepaster.protocolBox_QComboBox {name='protocolBox' type='QComboBox' visible='1' window=':Send to Codepaster_CodePaster::PasteView'} :Send to Codepaster.qt_spinbox_lineedit_QLineEdit {name='qt_spinbox_lineedit' type='QLineEdit' visible='1' window=':Send to Codepaster_CodePaster::PasteView'} :Send to Codepaster_CodePaster::PasteView {name='CodePaster.ViewDialog' type='QDialog' visible='1' windowTitle='Send to Codepaster'} -:Session Manager_ProjectExplorer::Internal::SessionDialog {name='ProjectExplorer.SessionDialog' type='ProjectExplorer::Internal::SessionDialog' visible='1' windowTitle='Session Manager'} +:Session Manager_ProjectExplorer::Internal::SessionDialog {name='ProjectExplorer.SessionDialog' type='Core::Internal::SessionDialog' visible='1'} :Startup.contextHelpComboBox_QComboBox {container=':Form.Startup_QGroupBox' name='contextHelpComboBox' type='QComboBox' visible='1'} :User Interface.languageBox_QComboBox {name='languageBox' type='QComboBox' visible='1'} :Utils::FakeToolTip {type='Utils::FakeToolTip' unnamed='1' visible='1'} diff --git a/tests/system/suite_general/tst_session_handling/test.py b/tests/system/suite_general/tst_session_handling/test.py index 1e4b9af0fac..b535145cc91 100644 --- a/tests/system/suite_general/tst_session_handling/test.py +++ b/tests/system/suite_general/tst_session_handling/test.py @@ -63,18 +63,18 @@ def prepareTestExamples(): def switchSession(toSession): test.log("Switching to session '%s'" % toSession) invokeMenuItem("File", "Sessions", "Manage...") - sessionView = ("{name='sessionView' type='ProjectExplorer::Internal::SessionView' visible='1' " + sessionView = ("{name='sessionView' type='Core::Internal::SessionView' visible='1' " "window=':Session Manager_ProjectExplorer::Internal::SessionDialog'}") mouseClick(waitForObjectItem(sessionView, toSession)) clickButton(waitForObject("{name='btOpen' type='QPushButton' visible='1' " "window=':Session Manager_ProjectExplorer::Internal::SessionDialog'}")) def createAndSwitchToSession(toSession): - sessionInputDialog = ("{type='ProjectExplorer::Internal::SessionNameInputDialog' unnamed='1' " + sessionInputDialog = ("{type='Core::Internal::SessionNameInputDialog' unnamed='1' " "visible='1' windowTitle='New Session Name'}") test.log("Switching to session '%s' after creating it." % toSession) invokeMenuItem("File", "Sessions", "Manage...") - clickButton(waitForObject("{name='btCreateNew' text='New' type='QPushButton' visible='1' " + clickButton(waitForObject("{name='btCreateNew' type='QPushButton' visible='1' " "window=':Session Manager_ProjectExplorer::Internal::SessionDialog'}")) lineEdit = waitForObject("{type='QLineEdit' unnamed='1' visible='1' window=%s}" % sessionInputDialog) From f1637f53ec1cb981b0dc1a0bbbddda721e21d1fe Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 6 Jul 2023 10:49:57 +0200 Subject: [PATCH 06/31] QtcJson: Fix warning for Qbs build Change-Id: I8ca6c0494317e7ffd2f64b51380b2dceaf204189 Reviewed-by: Christian Kandeler --- src/shared/json/json.qbs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/json/json.qbs b/src/shared/json/json.qbs index 99726f7d68d..060e1bda9db 100644 --- a/src/shared/json/json.qbs +++ b/src/shared/json/json.qbs @@ -3,7 +3,7 @@ import qbs StaticLibrary { name: "qtcjson" Depends { name: "cpp" } - cpp.cxxLanguageVersion: "c++11" + cpp.cxxLanguageVersion: "c++17" cpp.minimumMacosVersion: project.minimumMacosVersion files: [ "json.cpp", From 7439fe2bd1358291b731703de49f3a9e2d786de0 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 6 Jul 2023 10:55:40 +0200 Subject: [PATCH 07/31] Debugger: Silence soft assert Change-Id: I4966a29ecd09d7ecdc049588ec2747218d45f349 Reviewed-by: hjk --- src/plugins/debugger/debuggerrunconfigurationaspect.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/debugger/debuggerrunconfigurationaspect.cpp b/src/plugins/debugger/debuggerrunconfigurationaspect.cpp index 8cf92fe1da8..8811934aee4 100644 --- a/src/plugins/debugger/debuggerrunconfigurationaspect.cpp +++ b/src/plugins/debugger/debuggerrunconfigurationaspect.cpp @@ -155,7 +155,8 @@ bool DebuggerRunConfigurationAspect::useCppDebugger() const static bool projectHasQmlDefines(ProjectExplorer::Project *project) { auto projectInfo = CppEditor::CppModelManager::instance()->projectInfo(project); - QTC_ASSERT(projectInfo, return false); + if (!projectInfo) // we may have e.g. a Python project + return false; return Utils::anyOf(projectInfo->projectParts(), [](const CppEditor::ProjectPart::ConstPtr &part){ return Utils::anyOf(part->projectMacros, [](const Macro ¯o){ From b5086172cc465a7f07462849da11978573061d3d Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 6 Jul 2023 14:03:59 +0200 Subject: [PATCH 08/31] Fix button states at startup When opening Qt Creator with clean settings, the run, debug and build actions build be in the wrong state (enabled instead of disabled, no debug icon). This happened because a ProjectExplorer::updateActions call was removed from the end of restoring the session at startup when moving the session handling to Core plugin. That updateActions call shouldn't be necesseray, and isn't if a session is loaded, even if it is the "implicit default", because then sessionLoaded(...) is emitted which results in the updateActions() call. The sessionLoaded(...) signal was not sent if the file for the default session does not exist. Fix that by also sending the signal even if no file was actually loaded. Amends cbeac777a61322fbc2d365c7b83ead8aaaaf4bbf Change-Id: Idb625253f29611e777d85f0feb6c196fae567ed0 Reviewed-by: Christian Kandeler --- src/plugins/coreplugin/session.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/coreplugin/session.cpp b/src/plugins/coreplugin/session.cpp index 7238a09a2ee..6b1723cf1e1 100644 --- a/src/plugins/coreplugin/session.cpp +++ b/src/plugins/coreplugin/session.cpp @@ -609,6 +609,7 @@ bool SessionManager::loadSession(const QString &session, bool initial) return true; } } else if (loadImplicitDefault) { + emit SessionManager::instance()->sessionLoaded(DEFAULT_SESSION); return true; } From 3befa60970f2dac2223df4f017c74f7444596015 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 3 Jul 2023 14:26:35 +0200 Subject: [PATCH 09/31] Fix permanently disabled menus after switching to QmlDesigner and back. Do not fiddle with the enabled state of the menus, they are managed automatically by ActionContainer, depending on enabled state of the actions they contain. Only enabling them in Design mode is the wrong thing to do. Amends 4642c5fd7ddf73b4753037c3616c2d60d5899b6e Fixes: QTCREATORBUG-29268 Change-Id: I3c5704edf787f424f9a9e5e9cb363bbd410db3f2 Reviewed-by: Alessandro Portale --- src/plugins/qmldesigner/designmodewidget.cpp | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp index 1bb427bd055..c4e3128d3f4 100644 --- a/src/plugins/qmldesigner/designmodewidget.cpp +++ b/src/plugins/qmldesigner/designmodewidget.cpp @@ -222,26 +222,18 @@ void DesignModeWidget::setup() // Connect opening of the 'workspaces' menu with creation of the workspaces menu connect(mworkspaces->menu(), &QMenu::aboutToShow, this, &DesignModeWidget::aboutToShowWorkspaces); - Core::ActionContainer *mpanes = Core::ActionManager::actionContainer(Core::Constants::M_VIEW_PANES); - // Initially disable menus - mviews->menu()->setEnabled(false); mworkspaces->menu()->setEnabled(false); - mpanes->menu()->setEnabled(false); // Enable/disable menus when mode is different to MODE_DESIGN connect(Core::ModeManager::instance(), &Core::ModeManager::currentModeChanged, this, - [mviews, mworkspaces, mpanes](Utils::Id mode, Utils::Id) { + [mworkspaces](Utils::Id mode, Utils::Id) { if (mode == Core::Constants::MODE_DESIGN) { - mviews->menu()->setEnabled(true); mworkspaces->menu()->setEnabled(true); - mpanes->menu()->setEnabled(true); } else { - mviews->menu()->setEnabled(false); mworkspaces->menu()->setEnabled(false); - mpanes->menu()->setEnabled(false); } }); From e33b8137df6d721d34a1ff2b35266ed74ca04848 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Tue, 4 Jul 2023 12:40:19 +0200 Subject: [PATCH 10/31] CMakePM: Handle qml debugging for CMake presets Fixes: QTCREATORBUG-29311 Change-Id: I437d008a3625156e6a42f2ecaee71744bd9098f6 Reviewed-by: Eike Ziller --- src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp index 00948899f1e..a005bd79fa7 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp @@ -754,6 +754,8 @@ QList CMakeProjectImporter::examineDirectory(const FilePath &importPath, // Update QT_QMAKE_EXECUTABLE and CMAKE_C|XX_COMPILER config values updateConfigWithDirectoryData(config, data); + data->hasQmlDebugging = CMakeBuildConfiguration::hasQmlDebugging(config); + QByteArrayList buildConfigurationTypes = {cache.valueOf("CMAKE_BUILD_TYPE")}; if (buildConfigurationTypes.front().isEmpty()) { buildConfigurationTypes.clear(); @@ -774,6 +776,13 @@ QList CMakeProjectImporter::examineDirectory(const FilePath &importPath, DirectoryData *newData = new DirectoryData(*data); newData->cmakeBuildType = buildType; + // Handle QML Debugging + auto type = CMakeBuildConfigurationFactory::buildTypeFromByteArray( + newData->cmakeBuildType); + if (type == CMakeBuildConfigurationFactory::BuildTypeDebug + || type == CMakeBuildConfigurationFactory::BuildTypeProfile) + newData->hasQmlDebugging = true; + result.emplace_back(newData); } From 8d749874c6b2fd0253671f02528e81e64628acc2 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 5 Jul 2023 09:06:36 +0200 Subject: [PATCH 11/31] German translation: Terminal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I358fd63b2ca039a8f03eef527fa9171787e3619b Reviewed-by: Robert Löhning Reviewed-by: Christian Stenger Reviewed-by: --- share/qtcreator/translations/qtcreator_de.ts | 104 +++++++++---------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index b5877dc1af9..d07073ff688 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -49641,211 +49641,211 @@ Failed to open file "%1" QtC::Terminal Configure... - Einstellungen... + Einstellungen... Sends Esc to terminal instead of Qt Creator. - + Sendet Escape zum Terminal statt zu Qt Creator. Press %1 to send Esc to terminal. - + Drücken Sie %1, um Escape zum Terminal zu senden. Terminal - Terminal + Terminal Sends keyboard shortcuts to Terminal. - + Sendet Tastenkombinationen zum Terminal. Sends keyboard shortcuts to Qt Creator. - + Sendet Tastenkombinationen zu Qt Creator. New Terminal - + Neues Terminal Create a new Terminal. - + Erstelle ein neues Terminal. Next Terminal - + Nächstes Terminal Previous Terminal - + Vorangehendes Terminal Close the current Terminal. - + Das aktuelle Terminal schließen. Devices - Geräte + Geräte The color used for %1. - + Die für "%1" benutzte Farbe. Failed to open file. - + Datei konnte nicht geöffnet werden. JSON parsing error: "%1", at offset: %2 - + Fehler beim Auswerten von JSON: "%1", an Position: %2 No colors found. - + Es wurden keine Farben gefunden. Invalid color format. - + Ungültiges Farbformat. Unknown color scheme format. - + Unbekanntes Farbschema-Format. Use internal terminal - + Integriertes Terminal benutzen Uses the internal terminal when "Run In Terminal" is enabled and for "Open Terminal here". - + Benutzt das integrierte Terminal, wenn "Im Terminal ausführen" aktiviert ist und für "Terminalfenster hier öffnen". Family: - Name: + Name: The font family used in the terminal. - + Der Name der Zeichensatz-Familie, die im Terminal benutzt wird. Size: - Größe: + Größe: The font size used in the terminal (in points). - + Die Größe des Zeichensatzes, der im Terminal benutzt wird (in Punkten). Allow blinking cursor - + Blinkenden Cursor erlauben Allow the cursor to blink. - + Erlaubt dem Cursor zu blinken. Shell path: - + Shell-Pfad: The shell executable to be started. - + Die ausführbare Datei der Shell, die gestartet werden soll. Shell arguments: - + Shell-Argumente: The arguments to be passed to the shell. - + Die Argumente, die an die Shell übergeben werden sollen. Send escape key to terminal - + Escape-Taste zum Terminal senden Sends the escape key to the terminal when pressedinstead of closing the terminal. - + Sendet die Escape-Taste zum Terminal, anstatt das Terminal zu schliessen. Audible bell - + Akustische Glocke Makes the terminal beep when a bell character is received. - + Lässt das Terminal piepen, wenn ein Glockenzeichen empfangen wird. Load Theme... - + Thema laden... Reset Theme - + Thema zurücksetzen Error - Fehler + Fehler General - Allgemein + Allgemein Font - Zeichensatz + Zeichensatz Colors - + Farben Foreground - + Zeichen Background - + Hintergrund Selection - Auswahl + Auswahl Find match - + Fundstelle Default Shell - + Vorgabe-Shell Copy - Kopieren + Kopieren Paste - Einfügen + Einfügen Clear Selection - Auswahl löschen + Auswahl löschen Clear Terminal - + Terminal-Inhalt löschen Move Cursor Word Left - + Cursor ein Wort nach links bewegen Move Cursor Word Right - + Cursor ein Wort nach rechts bewegen Close Terminal - + Terminal schließen From b1423c58180f9b3839bc32a78d6eea2096a27590 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 28 Jun 2023 16:00:59 +0200 Subject: [PATCH 12/31] German translation: ProjectExplorer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I514f163cb7e0489a06ac6d684630b40cf18e7f39 Reviewed-by: Reviewed-by: Robert Löhning --- share/qtcreator/translations/qtcreator_de.ts | 124 ++++++++++--------- 1 file changed, 68 insertions(+), 56 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index d07073ff688..333f027b46a 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -36253,7 +36253,7 @@ Weitere Erklärungen sind möglicherweise in "Ausgabe der Anwendung" z The build device failed to prepare for the build of %1 (%2). - Das Build-Gerät konnte nicht für das Erstellen von %1 (%2) vorbereitet werden. + Das Gerät konnte nicht für das Erstellen von %1 (%2) vorbereitet werden. Compile @@ -36395,7 +36395,7 @@ Weitere Erklärungen sind möglicherweise in "Ausgabe der Anwendung" z Locates files of all open projects. Append "+<number>" or ":<number>" to jump to the given line number. Append another "+<number>" or ":<number>" to jump to the column number as well. - + Findet Dateien in allen geöffneten Projekten. Fügen Sie "+<Zahl>" oder ":<Zahl>" an, um zur angegebenen Zeile zu springen. Fügen Sie noch einmal "+<Zahl>" oder ":<Zahl>" an, um auch zur angegebenen Spalte zu springen. All Projects @@ -36495,7 +36495,7 @@ Außer: %2 Locates files from the current document's project. Append "+<number>" or ":<number>" to jump to the given line number. Append another "+<number>" or ":<number>" to jump to the column number as well. - + Findet Dateien im Projekt des aktuellen Dokuments. Fügen Sie "+<Zahl>" oder ":<Zahl>" an, um zur angegebenen Zeile zu springen. Fügen Sie noch einmal "+<Zahl>" oder ":<Zahl>" an, um auch zur angegebenen Spalte zu springen. Project "%1" @@ -37215,23 +37215,23 @@ Bitte versuchen Sie es erneut. Locates files from all project directories. Append "+<number>" or ":<number>" to jump to the given line number. Append another "+<number>" or ":<number>" to jump to the column number as well. - + Findet Dateien in allen Projektverzeichnissen. Fügen Sie "+<Zahl>" oder ":<Zahl>" an, um zur angegebenen Zeile zu springen. Fügen Sie noch einmal "+<Zahl>" oder ":<Zahl>" an, um auch zur angegebenen Spalte zu springen. Run Run Configuration - + Ausführungskonfiguration ausführen Runs a run configuration of the active project. - + Führt eine Ausführungskonfiguration des aktiven Projekts aus. Switch Run Configuration - + Ausführungskonfiguration auswählen Switches the active run configuration of the active project. - + Wechselt die aktive Ausführungskonfiguration des aktiven Projekts. Run %1 @@ -37869,7 +37869,7 @@ The name of the build configuration created by default for a generic project. Environment: - Umgebung: + Umgebung: No executable specified. @@ -38167,12 +38167,12 @@ Aktivieren Sie dies, wenn Sie 32bit-x86-Binärdateien erstellen wollen, ohne ein &Start Wizard to Add Device... - + Gerät mit &Assistent hinzufügen... Add %1 Add <Device Type Name> - + %1 hinzufügen Yes (id is "%1") @@ -38475,7 +38475,7 @@ Aktivieren Sie dies, wenn Sie 32bit-x86-Binärdateien erstellen wollen, ohne ein Show in Application Output when running - + Beim Start in "Ausgabe der Anwendung" anzeigen No device configured. @@ -38756,7 +38756,7 @@ Bitte schließen Sie alle laufenden Instanzen Ihrer Anwendung vor dem Erstellen. Ignoring invalid task (no text). - + Ignoriere ungültige Aufgabe (kein Text). File Error @@ -39036,47 +39036,57 @@ Bitte schließen Sie alle laufenden Instanzen Ihrer Anwendung vor dem Erstellen. Creates a widget-based Qt application that contains a Qt Designer-based main window and C++ source and header files to implement the application logic. Preselects a desktop Qt for building the application if available. - + Erstellt eine Widget-basierte Qt-Anwendung mit einem Qt Designer-basierten Hauptfenster und C++-Quell- und Headerdateien zur Implementierung der Applikationslogik. + +Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern verfügbar. Creates a C++ library. You can create:<ul><li>a shared C++ library for use with <tt>QPluginLoader</tt> and runtime (Plugins)</li><li>a shared or static C++ library for use with another project at linktime</li></ul> - + Erstellt eine C++-Bibliothek. Sie können folgendes erstellen:<ul><li>eine dynamisch gebundene C++-Bibliothek zur Verwendung mit <tt>QPluginLoader</tt> zur Laufzeit (Plugins)</li><li>eine statisch oder dynamisch gebundene C++-Bibliothek zur Verwendung in einem anderen Projekt zur Linkzeit</li></ul> Creates a project containing a single main.cpp file with a stub implementation and no graphical UI. Preselects a desktop Qt for building the application if available. - + Erstellt ein Projekt, das aus einer main.cpp-Datei mit einem Implementationsrumpf ohne grafische Benutzeroberfläche besteht. + +Wählt eine für Desktop-Entwicklung geeignete Qt-Version aus, sofern verfügbar. PySide 2 - PySide 2 + PySide 2 Define Python Interpreter - + Python-Interpreter festlegen Creates a Qt Quick application that contains an empty window. Use this "compat" version if you want to use other build systems than CMake or Qt versions lower than 6. - + Erstellt eine Qt Quick-Anwendung, die ein leeres Fenster enthält. + +Nutzen Sie diese "Kompatibilitätsversion", falls Sie andere Buildsysteme als CMake oder frühere Qt-Versionen als Qt 6 benutzen wollen. Qt Quick Application (compat) - + Qt Quick-Anwendung (compat) Creates a Qt Quick UI project for previewing and prototyping designs. To develop a full application, create a Qt Quick Application project instead. - + Erstellt ein Qt Quick UI-Projekt für Vorschauen und Design-Prototypen. + +Für vollständige Anwendungen erstellen Sie stattdessen eine Qt Quick-Anwendung. Creates a Qt Quick application that can have both QML and C++ code. You can build the application and deploy it to desktop, embedded, and mobile target platforms. You can select an option to create a project that you can open in Qt Design Studio, which has a visual editor for Qt Quick UIs. - + Erstellt eine Qt Quick-Anwendung, die aus QML- und C++-Code bestehen kann. Unterstützt das Erstellen und Deployment der Anwendung für Desktop, Embedded und Mobile Zielplattformen. + +Wahlweise können Sie ein Projekt erstellen, das in Qt Design Studio geöffnet werden kann, welches einen visuellen Editor für Qt Quick-Benutzeroberflächen enthält. Qt Quick Application @@ -39088,11 +39098,11 @@ You can select an option to create a project that you can open in Qt Design Stud Boost Test (header only) - + Boost Test (nur Header) Boost Test (shared libraries) - + Boost Test (dynamisch gebundene Bibliotheken) Test framework: @@ -39108,7 +39118,7 @@ You can select an option to create a project that you can open in Qt Design Stud Boost install directory (optional): - + Boost-Installationsverzeichnis (optional): Creates a new unit test project. Unit tests allow you to verify that the code is fit for use and that there are no regressions. @@ -39136,11 +39146,11 @@ You can select an option to create a project that you can open in Qt Design Stud Creates a markdown file. - + Erzeugt eine Markdown-Datei. Markdown File - + Markdown-Datei Creates a Java file with boilerplate code. @@ -39198,27 +39208,29 @@ You can select an option to create a project that you can open in Qt Design Stud You must tell Qt Creator which test framework is used inside the project. You should not mix multiple test frameworks in a project. - + Sie müssen Qt Creator mitteilen, welches Test-Framework im Projekt benutzt wird. + +Sie sollten nicht mehrere Test-Frameworks im selben Projekt mischen. %{JS: 'tst_' + value('TestCaseName').toLowerCase() + '.' + Util.preferredSuffix('text/x-c++src')} - + %{JS: 'tst_' + value('TestCaseName').toLowerCase() + '.' + Util.preferredSuffix('text/x-c++src')} %{JS: 'tst_' + value('TestCaseName').toLowerCase() + '.qml'} - + %{JS: 'tst_' + value('TestCaseName').toLowerCase() + '.qml'} Test Information - + Testinformation Creates a source file that you can add to an existing test project. - + Erstellt eine Quelldatei, die zu einem existierenden Testprojekt hinzugefügt werden kann. Test Case - + Testfall Creates an empty Nim script file using UTF-8 charset. @@ -39836,11 +39848,11 @@ You should not mix multiple test frameworks in a project. Qt 6.4 - Qt 6.4 + Qt 6.4 Qt 6.5 - Qt 6.5 + Qt 6.5 The minimum version of Qt you want to build the application for. @@ -39890,7 +39902,7 @@ You should not mix multiple test frameworks in a project. Creates a CMake-based test project where you can enter a code snippet to compile and check it. - + Erstellt ein CMake-basiertes Testprojekt, für welches Sie einen Code-Ausschnitt angegeben können, der erstellt und geprüft wird. Code Snippet @@ -41019,7 +41031,7 @@ Was soll %1 tun? Enter the path to the executable - + Geben Sie den Pfad zur ausführbaren Datei ein Executable: @@ -41051,7 +41063,7 @@ Was soll %1 tun? Interpreter: - + Interpreter: X11 Forwarding: @@ -41217,7 +41229,7 @@ Was soll %1 tun? The build directory is not reachable from the build device. - Das Build-Verzeichnis kann auf dem Build-Gerät nicht erreicht werden. + Das Build-Verzeichnis kann auf dem Gerät nicht erreicht werden. Shadow build: @@ -41333,7 +41345,7 @@ Was soll %1 tun? Run device type - + Gerätetyp (Ausführung) Unknown device type @@ -41341,7 +41353,7 @@ Was soll %1 tun? Run device - + Gerät (Ausführung) The device to run the applications on. @@ -41377,11 +41389,11 @@ Was soll %1 tun? Device root directory - + Wurzelverzeichnis des Geräts Build device root directory - + Wurzelverzeichnis des Geräts (Erstellung) Change... @@ -41790,7 +41802,7 @@ fails because Clang does not understand the target architecture. Build device - Build-Gerät + Gerät (Erstellung) The device used to build applications on. @@ -41798,27 +41810,27 @@ fails because Clang does not understand the target architecture. No build device set. - Kein Build-Gerät gesetzt. + Kein Gerät für die Erstellung gesetzt. Build host address - Hostadresse des Build-Geräts + Hostadresse des Geräts (Erstellung) Build SSH port - SSH-Port des Build-Geräts + SSH-Port des Geräts (Erstellung) Build user name - Benutzername des Build-Geräts + Benutzername des Geräts (Erstellung) Build private key file - Private Schlüsseldatei des Build-Geräts + Private Schlüsseldatei des Geräts (Erstellung) Build device name - Build-Gerätename + Gerätename (Erstellung) Run as root user @@ -41879,29 +41891,29 @@ fails because Clang does not understand the target architecture. Source: - Quelle: + Quelle: Target: - Ziel: + Ziel: Copying failed. - + Fehler beim Kopieren. Copying finished. - + Kopieren beendet. Copy file Default CopyStep display name - + Datei kopieren Copy directory recursively Default CopyStep display name - + Verzeichnis rekursiv kopieren From 635e0d6969326b124bab82504803089dd4f50f7c Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Tue, 4 Jul 2023 16:19:01 +0200 Subject: [PATCH 13/31] Utils: Make ssize and usize more generic It now works for all container which implement std::size like C arrays. Change-Id: I9ccf2c50b4e7518e44890b52686d5561358bcf8d Reviewed-by: hjk Reviewed-by: Tim Jenssen --- src/libs/utils/algorithm.h | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/libs/utils/algorithm.h b/src/libs/utils/algorithm.h index b75c0d5e4a0..2ea38377d8b 100644 --- a/src/libs/utils/algorithm.h +++ b/src/libs/utils/algorithm.h @@ -218,14 +218,6 @@ OutputContainer setUnionMerge(InputContainer1 &&input1, template OutputContainer setUnionMerge(InputContainer1 &&input1, InputContainer2 &&input2, Merge merge); -///////////////////////// -// usize / ssize -///////////////////////// -template -std::make_unsigned_t usize(Container container); -template -std::make_signed_t ssize(Container container); - ///////////////////////// // setUnion ///////////////////////// @@ -1340,15 +1332,15 @@ OutputContainer setUnionMerge(InputContainer1 &&input1, } template -std::make_unsigned_t usize(Container container) +auto usize(const Container &container) { - return static_cast>(container.size()); + return static_cast>(std::size(container)); } template -std::make_signed_t ssize(Container container) +auto ssize(const Container &container) { - return static_cast>(container.size()); + return static_cast>(std::size(container)); } template From e5acc8b0726667161f9a5df3f4b8ba9a62d89d20 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 15 Jun 2023 15:38:36 +0200 Subject: [PATCH 14/31] SquishTests: Fix verification of debugger detection MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit There are now generic debuggers registered - adapt the test accordingly. Change-Id: I102ac0ac44666c4da17ff6ea01f048abba66e6e7 Reviewed-by: Robert Löhning --- .../tst_default_settings/test.py | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/tests/system/suite_general/tst_default_settings/test.py b/tests/system/suite_general/tst_default_settings/test.py index f710dd1375a..b1bf0b36d55 100644 --- a/tests/system/suite_general/tst_default_settings/test.py +++ b/tests/system/suite_general/tst_default_settings/test.py @@ -4,6 +4,8 @@ source("../../shared/qtcreator.py") currentSelectedTreeItem = None +sectionInProgress = None +genericDebuggers = [] warningOrError = re.compile('

((Error|Warning).*?)

') def main(): @@ -28,6 +30,7 @@ def __createMinimumIni__(emptyParent): iniFile.close() def __checkKits__(): + global genericDebuggers mouseClick(waitForObjectItem(":Options_QListView", "Kits")) # check compilers expectedCompilers = __getExpectedCompilers__() @@ -51,6 +54,8 @@ def __checkKits__(): __iterateTree__(":BuildAndRun_QTreeView", __dbgFunc__, foundDebugger) test.verify(__compareDebuggers__(foundDebugger, expectedDebuggers), "Verifying found and expected debuggers are equal.") + if not test.compare(len(genericDebuggers), 2, "Verifying generic debugger count."): + test.log(str(genericDebuggers)) # check Qt versions qmakePath = which("qmake") foundQt = [] @@ -87,14 +92,16 @@ def __processSubItems__(treeObjStr, section, parModelIndexStr, doneItems, additionalFunc, *additionalParameters) def __iterateTree__(treeObjStr, additionalFunc, *additionalParameters): - global currentSelectedTreeItem + global currentSelectedTreeItem, sectionInProgress model = waitForObject(treeObjStr).model() - # 1st row: Auto-detected, 2nd row: Manual + # 1st row: Auto-detected, 2nd row: Manual (Debugger has additional section Generic prepended) for sect in dumpIndices(model): + sectionInProgress = str(sect.text) doneItems = [] parentModelIndex = "%s container='%s'}" % (objectMap.realName(sect)[:-1], treeObjStr) __processSubItems__(treeObjStr, sect, parentModelIndex, doneItems, additionalFunc, *additionalParameters) + sectionInProgress = None def __compFunc__(it, foundComp, foundCompNames): # skip sub section items (will continue on its children) @@ -118,9 +125,16 @@ def __compFunc__(it, foundComp, foundCompNames): foundCompNames.append(it) def __dbgFunc__(it, foundDbg): + global sectionInProgress, genericDebuggers waitFor("object.exists(':Path.Utils_BaseValidatingLineEdit')", 2000) pathLineEdit = findObject(":Path.Utils_BaseValidatingLineEdit") - foundDbg.append(str(pathLineEdit.text)) + if sectionInProgress == 'Generic': + debugger = str(pathLineEdit.text) + test.verify(debugger == 'gdb' or debugger == 'lldb', + 'Verifying generic debugger is GDB or LLDB.') + genericDebuggers.append(debugger) + else: + foundDbg.append(str(pathLineEdit.text)) def __qtFunc__(it, foundQt, qmakePath): qtPath = str(waitForObject(":QtSupport__Internal__QtVersionManager.qmake_QLabel").text) From 9d6597105b0873bc04a6fc2e832f019d5f7d868e Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Wed, 5 Jul 2023 18:01:53 +0200 Subject: [PATCH 15/31] Terminal: Fix process staying alive When starting a Terminal Process with TerminalMode::Detached, the Process object was not deleted on app exit and therefor created warnings on exit. This patch changes it so that the osascript does not wait for the process to exit and therefor exits pretty much immediately which deletes the Process object. Fixes: QTCREATORBUG-29375 Change-Id: I08e8b753c98011fdafc32f03886b5c0be7aec801 Reviewed-by: Eike Ziller Reviewed-by: --- .../utils/externalterminalprocessimpl.cpp | 54 +++++++++++++------ 1 file changed, 37 insertions(+), 17 deletions(-) diff --git a/src/libs/utils/externalterminalprocessimpl.cpp b/src/libs/utils/externalterminalprocessimpl.cpp index b69cf798337..9ac01a7ee74 100644 --- a/src/libs/utils/externalterminalprocessimpl.cpp +++ b/src/libs/utils/externalterminalprocessimpl.cpp @@ -21,7 +21,7 @@ ProcessStubCreator::ProcessStubCreator(TerminalInterface *interface) : m_interface(interface) {} -static const QLatin1String TerminalAppScript{R"( +static const QLatin1String TerminalAppScriptAttached{R"( tell application "Terminal" activate set newTab to do script "%1 && exit" @@ -33,14 +33,27 @@ static const QLatin1String TerminalAppScript{R"( end tell )"}; +static const QLatin1String TerminalAppScriptDetached{R"( + tell application "Terminal" + activate + do script "%1 && exit" + end tell +)"}; + +struct AppScript +{ + QString attached; + QString detached; +}; + expected_str ProcessStubCreator::startStubProcess(const ProcessSetupData &setupData) { const TerminalCommand terminal = TerminalCommand::terminalEmulator(); bool detached = setupData.m_terminalMode == TerminalMode::Detached; if (HostOsInfo::isMacHost()) { - static const QMap terminalMap = { - {"Terminal.app", TerminalAppScript}, + static const QMap terminalMap = { + {"Terminal.app", {TerminalAppScriptAttached, TerminalAppScriptDetached}}, }; if (terminalMap.contains(terminal.command.toString())) { @@ -48,29 +61,36 @@ expected_str ProcessStubCreator::startStubProcess(const ProcessSetupData = Utils::transform(setupData.m_environment.toStringList(), [](const QString &env) { return CommandLine{"export", {env}}.toUserOutput(); }).join('\n'); - const QString shScript = QString("cd '%1'\n%2\nclear\n'%3' %4\n") + + Process *process = new Process(detached ? nullptr : this); + if (detached) { + QObject::connect(process, &Process::done, process, &Process::deleteLater); + } + + QTemporaryFile shFile; + shFile.setAutoRemove(false); + QTC_ASSERT(shFile.open(), + return make_unexpected(Tr::tr("Failed to open temporary script file."))); + + const QString shScript = QString("cd '%1'\n%2\nclear\n'%3' %4\nrm '%5'\n") .arg(setupData.m_workingDirectory.nativePath()) .arg(env) .arg(setupData.m_commandLine.executable().nativePath()) - .arg(setupData.m_commandLine.arguments()); + .arg(setupData.m_commandLine.arguments()) + .arg(shFile.fileName()); - Process *process = new Process(detached ? nullptr : this); - if (detached) - QObject::connect(process, &Process::done, process, &Process::deleteLater); + shFile.write(shScript.toUtf8()); + shFile.close(); - QTemporaryFile *shFile = new QTemporaryFile(process); - QTC_ASSERT(shFile->open(), - return make_unexpected(Tr::tr("Failed to open temporary script file."))); - shFile->write(shScript.toUtf8()); - shFile->close(); - - FilePath::fromUserInput(shFile->fileName()) + FilePath::fromUserInput(shFile.fileName()) .setPermissions(QFile::ExeUser | QFile::ExeGroup | QFile::ExeOther | QFile::ReadUser | QFile::ReadGroup | QFile::ReadOther | QFile::WriteUser | QFile::WriteGroup | QFile::WriteOther); - const QString script - = terminalMap.value(terminal.command.toString()).arg(shFile->fileName()); + const QString script = (detached + ? terminalMap.value(terminal.command.toString()).detached + : terminalMap.value(terminal.command.toString()).attached) + .arg(shFile.fileName()); process->setCommand({"osascript", {"-"}}); process->setWriteData(script.toUtf8()); From d3e649b10b5740b17a1c3a74fb1ef7170908060c Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 7 Jul 2023 07:07:21 +0200 Subject: [PATCH 16/31] AutoTest: Fix scan for Quick Tests Partially reverts a85d7ef5389d504c924206951dd11d5e4c986f4a. Change-Id: Ib928ba2aee8b82d8204939b16070dbf806cafaf9 Reviewed-by: David Schulz --- src/plugins/autotest/quick/quicktestparser.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/plugins/autotest/quick/quicktestparser.cpp b/src/plugins/autotest/quick/quicktestparser.cpp index a5acf697feb..4fa8d4fb81d 100644 --- a/src/plugins/autotest/quick/quicktestparser.cpp +++ b/src/plugins/autotest/quick/quicktestparser.cpp @@ -181,8 +181,9 @@ QList QuickTestParser::scanDirectoryForQuickTestQmlFiles(const Fi QList foundDocs; + const Snapshot snapshot = QmlJSTools::Internal::ModelManager::instance()->snapshot(); for (const FilePath &path : std::as_const(dirs)) { - const QList docs = m_qmlSnapshot.documentsInDirectory(path); + const QList docs = snapshot.documentsInDirectory(path); for (const Document::Ptr &doc : docs) { const FilePath fi = doc->fileName(); //const QFileInfo fi(doc->fileName()); From f9a8e4b62d25a9a54fb5c2b2ae67c61bb8f0c4e3 Mon Sep 17 00:00:00 2001 From: hjk Date: Fri, 7 Jul 2023 07:55:34 +0200 Subject: [PATCH 17/31] Beautfier: Fix layout of ClangFormat page Broke with the removal of the special BoolAspect-in-FormLayout handling in the latest aspect revamp. Change-Id: I61465b0a3318192ff8b7c92ebf45491c4b298b6c Reviewed-by: Eike Ziller --- src/plugins/beautifier/clangformat/clangformatsettings.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/beautifier/clangformat/clangformatsettings.cpp b/src/plugins/beautifier/clangformat/clangformatsettings.cpp index 6a31667edb7..cd1f5e20d23 100644 --- a/src/plugins/beautifier/clangformat/clangformatsettings.cpp +++ b/src/plugins/beautifier/clangformat/clangformatsettings.cpp @@ -35,6 +35,7 @@ ClangFormatSettings::ClangFormatSettings() usePredefinedStyle.setSettingsKey("usePredefinedStyle"); usePredefinedStyle.setLabelText(Tr::tr("Use predefined style:")); + usePredefinedStyle.setLabelPlacement(BoolAspect::LabelPlacement::AtCheckBoxWithoutDummyLabel); usePredefinedStyle.setDefaultValue(true); predefinedStyle.setSettingsKey("predefinedStyle"); From 4991d4b16c7c92b8d3d68b21192fc01e42b0e7ca Mon Sep 17 00:00:00 2001 From: Tasuku Suzuki Date: Sun, 2 Jul 2023 01:24:00 +0900 Subject: [PATCH 18/31] Fix crash in ProgressView during boot up In the code below min can be bigger than max. qBound(widget->rect().height(), bounded.y(), parent->height()) Change-Id: Ia65b1ba5917bf3333606e16263ac30819a07a587 Reviewed-by: Eike Ziller --- src/plugins/coreplugin/progressmanager/progressview.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/plugins/coreplugin/progressmanager/progressview.cpp b/src/plugins/coreplugin/progressmanager/progressview.cpp index 45b10286dc4..333df54a518 100644 --- a/src/plugins/coreplugin/progressmanager/progressview.cpp +++ b/src/plugins/coreplugin/progressmanager/progressview.cpp @@ -130,8 +130,8 @@ void ProgressView::mousePressEvent(QMouseEvent *ev) static QPoint boundedInParent(QWidget *widget, const QPoint &pos, QWidget *parent) { QPoint bounded = pos; - bounded.setX(qBound(widget->rect().width(), bounded.x(), parent->width())); - bounded.setY(qBound(widget->rect().height(), bounded.y(), parent->height())); + bounded.setX(std::max(widget->rect().width(), std::min(bounded.x(), parent->width()))); + bounded.setY(std::max(widget->rect().height(), std::min(bounded.y(), parent->height()))); return bounded; } From d0a34587ac32be1257663f3f5d3faef326d08460 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 5 Jul 2023 17:40:56 +0200 Subject: [PATCH 19/31] ClangCodeModel: Fix suppressing warnings via textmark tooltip This functionality was never properly converted when we switched to clangd. Fixes: QTCREATORBUG-29385 Change-Id: Ie06c9ec8bbed6a539ce9f9bf5ba512ae1a7f4b98 Reviewed-by: David Schulz --- src/plugins/clangcodemodel/clangtextmark.cpp | 62 +++++-------------- .../cppeditor/cppcodemodelsettings.cpp | 1 + 2 files changed, 18 insertions(+), 45 deletions(-) diff --git a/src/plugins/clangcodemodel/clangtextmark.cpp b/src/plugins/clangcodemodel/clangtextmark.cpp index 1a886c248ed..166a55e4f31 100644 --- a/src/plugins/clangcodemodel/clangtextmark.cpp +++ b/src/plugins/clangcodemodel/clangtextmark.cpp @@ -7,7 +7,6 @@ #include "clangconstants.h" #include "clangdclient.h" #include "clangdiagnostictooltipwidget.h" -#include "clangeditordocumentprocessor.h" #include "clangutils.h" #include @@ -49,46 +48,15 @@ Project *projectForCurrentEditor() if (filePath.isEmpty()) return nullptr; - if (auto processor = ClangEditorDocumentProcessor::get(filePath)) { - if (ProjectPart::ConstPtr projectPart = processor->projectPart()) - return projectForProjectPart(*projectPart); - } + if (ProjectPart::ConstPtr projectPart = projectPartForFile(filePath)) + return projectForProjectPart(*projectPart); return nullptr; } -enum class DiagnosticType { Clang, Tidy, Clazy }; -DiagnosticType diagnosticType(const ClangDiagnostic &diagnostic) - -{ - if (!diagnostic.disableOption.isEmpty()) - return DiagnosticType::Clang; - - const DiagnosticTextInfo textInfo(diagnostic.text); - if (DiagnosticTextInfo::isClazyOption(textInfo.option())) - return DiagnosticType::Clazy; - return DiagnosticType::Tidy; -} - void disableDiagnosticInConfig(ClangDiagnosticConfig &config, const ClangDiagnostic &diagnostic) { - switch (diagnosticType(diagnostic)) { - case DiagnosticType::Clang: - config.setClangOptions(config.clangOptions() + QStringList(diagnostic.disableOption)); - break; - case DiagnosticType::Tidy: - config.setChecks(ClangToolType::Tidy, config.checks(ClangToolType::Tidy) + QString(",-") - + DiagnosticTextInfo(diagnostic.text).option()); - break; - case DiagnosticType::Clazy: { - const DiagnosticTextInfo textInfo(diagnostic.text); - const QString checkName = DiagnosticTextInfo::clazyCheckName(textInfo.option()); - QStringList newChecks = config.checks(ClangToolType::Clazy).split(','); - newChecks.removeOne(checkName); - config.setChecks(ClangToolType::Clazy, newChecks.join(',')); - break; - } - } + config.setClangOptions(config.clangOptions() + QStringList(diagnostic.disableOption)); } ClangDiagnosticConfig diagnosticConfig() @@ -210,8 +178,10 @@ ClangDiagnostic convertDiagnostic(const ClangdDiagnostic &src, target.severity = convertSeverity(*src.severity()); const Diagnostic::Code code = src.code().value_or(Diagnostic::Code()); const QString * const codeString = std::get_if(&code); - if (codeString && codeString->startsWith("-W")) + if (codeString && codeString->startsWith("-W")) { target.enableOption = *codeString; + target.disableOption = "-Wno-" + codeString->mid(2); + } for (const CodeAction &codeAction : src.codeActions().value_or(QList())) { const std::optional edit = codeAction.edit(); if (!edit) @@ -304,15 +274,17 @@ ClangdTextMark::ClangdTextMark(TextEditor::TextDocument *doc, actions << action; // Remove diagnostic warning action - Project *project = projectForCurrentEditor(); - if (project && isDiagnosticConfigChangable(project)) { - action = new QAction(); - action->setIcon(Icons::BROKEN.icon()); - action->setToolTip(Tr::tr("Disable Diagnostic in Current Project")); - QObject::connect(action, &QAction::triggered, [diag] { - disableDiagnosticInCurrentProjectConfig(diag); - }); - actions << action; + if (!diag.disableOption.isEmpty()) { + if (Project * const project = projectForCurrentEditor(); + project && isDiagnosticConfigChangable(project)) { + action = new QAction(); + action->setIcon(Icons::BROKEN.icon()); + action->setToolTip(Tr::tr("Disable Diagnostic in Current Project")); + QObject::connect(action, &QAction::triggered, [diag] { + disableDiagnosticInCurrentProjectConfig(diag); + }); + actions << action; + } } return actions; }); diff --git a/src/plugins/cppeditor/cppcodemodelsettings.cpp b/src/plugins/cppeditor/cppcodemodelsettings.cpp index d0976b8128d..7a32011cf54 100644 --- a/src/plugins/cppeditor/cppcodemodelsettings.cpp +++ b/src/plugins/cppeditor/cppcodemodelsettings.cpp @@ -492,6 +492,7 @@ void ClangdProjectSettings::setDiagnosticConfigId(Utils::Id configId) { m_customSettings.diagnosticConfigId = configId; saveSettings(); + emit ClangdSettings::instance().changed(); } void ClangdProjectSettings::blockIndexing() From ea59db0167f39388761504c9afa0be219a73bafe Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 6 Jul 2023 16:51:35 +0200 Subject: [PATCH 20/31] Doc: Edit how-to topics - Add links to missing ones about managing plugins - Add step lists and screenshots Change-Id: I49446020b7d81b6ce5a5e4ad5268ef587df6d20b Reviewed-by: Eike Ziller --- .../creator-how-to-set-high-dpi-scaling.qdoc | 1 + .../howto/creator-only/creator-how-tos.qdoc | 21 +++++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/doc/qtcreator/src/howto/creator-how-to-set-high-dpi-scaling.qdoc b/doc/qtcreator/src/howto/creator-how-to-set-high-dpi-scaling.qdoc index 681e6b421ad..849a4dbff52 100644 --- a/doc/qtcreator/src/howto/creator-how-to-set-high-dpi-scaling.qdoc +++ b/doc/qtcreator/src/howto/creator-how-to-set-high-dpi-scaling.qdoc @@ -32,6 +32,7 @@ \list 1 \li Select \uicontrol Edit > \uicontrol Preferences > \uicontrol Environment > \uicontrol Interface. + \image qtcreator-preferences-environment-interface.webp {Interface tab in Environment preferences} \li Select \uicontrol {Enable high DPI scaling}. \li Restart \QC to have the change take effect. \endlist 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 45336998465..48a698d29e6 100644 --- a/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc +++ b/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc @@ -19,9 +19,11 @@ \section1 Use the UI \list + \li \l {Assign keyboard shortcuts} \li \l {Find a particular preference} \li \l {Find keyboard shortcuts} \li \l {Find menu items on \macos} + \li \l {Import and export keyboard shortcuts} \li \l {Set high DPI scaling} \li \l {Set the number of recent files shown} \li \l {Show and hide sidebars} @@ -83,8 +85,10 @@ \key Ctrl+Tab. To move forward in the location history, press \key {Alt+Right} - (\key {Cmd+Opt+Right} on \macos). To move backward, press \key {Alt+Left} - (\key {Cmd+Opt+Left} on \macos). For example, if you use the \uicontrol Locator + (\key {Cmd+Opt+Right} on \macos). + + To move backward, press \key {Alt+Left} (\key {Cmd+Opt+Left} on \macos). + For example, if you use the \uicontrol Locator to jump to a symbol in the same file, you can jump back to your original location in that file by pressing \key {Alt+Left}. */ @@ -399,11 +403,16 @@ \title Set the number of recent files shown - Set the value of \uicontrol Edit > \uicontrol Preferences > - \uicontrol Environment > \uicontrol System - > \uicontrol {Maximum number of entries in "Recent Files"}. + To set the number of files to list in \uicontrol File > + \uicontrol {Recent Files}: - \image qtcreator-options-environment-system.png "System preferences" + \list 1 + \li Select \uicontrol Edit > \uicontrol Preferences > + \uicontrol Environment > \uicontrol System. + \image qtcreator-options-environment-system.png {System preferences} + \li In \uicontrol {Maximum number of entries in "Recent Files"}, set + the number of files to show. + \endlist */ /*! From e92c61441f179c70351bf936f17af05a392fd13a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Thu, 6 Jul 2023 17:58:00 +0200 Subject: [PATCH 21/31] SquishTests: Update tst_SCOM04 Change-Id: Ic41d30987069e9040a20838db1a55876f610a203 Reviewed-by: David Schulz Reviewed-by: Christian Stenger --- tests/system/suite_SCOM/tst_SCOM04/test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/system/suite_SCOM/tst_SCOM04/test.py b/tests/system/suite_SCOM/tst_SCOM04/test.py index 038c8a7a2e6..6351f4216e6 100644 --- a/tests/system/suite_SCOM/tst_SCOM04/test.py +++ b/tests/system/suite_SCOM/tst_SCOM04/test.py @@ -8,7 +8,7 @@ source("../../shared/suites_qtta.py") def main(): # expected error texts - for different compilers expectedErrorAlternatives = ["'SyntaxError' was not declared in this scope", - "\xe2\x80\x98SyntaxError\xe2\x80\x99 was not declared in this scope", + u"\u2018SyntaxError\u2019 was not declared in this scope", "'SyntaxError' : undeclared identifier", # MSVC2013 "'SyntaxError': undeclared identifier", # MSVC2015 "use of undeclared identifier 'SyntaxError'", From 29ca86ce6589252674a7055a522bcf3b34c374d3 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 7 Jul 2023 10:11:19 +0200 Subject: [PATCH 22/31] Haskell: Update dependency for manual test Stack didn't want to install that old stuff anymore. Change-Id: I8e196bca92b2a6100c8e4d1431f7588c6efad946 Reviewed-by: hjk --- tests/manual/haskell/simple/stack.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/manual/haskell/simple/stack.yaml b/tests/manual/haskell/simple/stack.yaml index 9f5c8c628b2..4b8c90d83d1 100644 --- a/tests/manual/haskell/simple/stack.yaml +++ b/tests/manual/haskell/simple/stack.yaml @@ -15,7 +15,7 @@ # resolver: # name: custom-snapshot # location: "./custom-snapshot.yaml" -resolver: lts-7.24 +resolver: lts-21.1 # User packages to be built. # Various formats can be used as shown in the example below. From 6bf6c093cddbe0f7af61877aadc807fc117e33bd Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 5 Jul 2023 17:09:52 +0200 Subject: [PATCH 23/31] CppEditor: Fix parentheses mismatch on comment followed by backslash Apparently, it was mistakenly assumed that a non-zero lexer state implies that the comment continues on the next line when it can also mean that the line ends in a backslash. Adapt the check accordingly. Fixes: QTCREATORBUG-29339 Change-Id: Ib239aca86dae9983d920f7715ae628ab4bf80220 Reviewed-by: David Schulz Reviewed-by: --- src/plugins/cppeditor/cpphighlighter.cpp | 30 +++++++++++++++++-- src/plugins/cppeditor/cpphighlighter.h | 2 ++ .../testcases/highlightingtestcase.cpp | 7 +++++ 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/plugins/cppeditor/cpphighlighter.cpp b/src/plugins/cppeditor/cpphighlighter.cpp index 656173feee2..f562d9afece 100644 --- a/src/plugins/cppeditor/cpphighlighter.cpp +++ b/src/plugins/cppeditor/cpphighlighter.cpp @@ -56,7 +56,8 @@ void CppHighlighter::highlightBlock(const QString &text) const Tokens tokens = tokenize(text, initialLexerState); lexerState = tokenize.state(); // refresh lexer state - initialLexerState &= ~0x80; // discard newline expected bit + static const auto lexerStateWithoutNewLineExpectedBit = [](int state) { return state & ~0x80; }; + initialLexerState = lexerStateWithoutNewLineExpectedBit(initialLexerState); int foldingIndent = initialBraceDepth; if (TextBlockUserData *userData = TextDocumentLayout::textUserData(currentBlock())) { userData->setFoldingIndent(0); @@ -220,7 +221,8 @@ void CppHighlighter::highlightBlock(const QString &text) if (text.length() > lastTokenEnd) formatSpaces(text, lastTokenEnd, text.length() - lastTokenEnd); - if (!initialLexerState && lexerState && !tokens.isEmpty()) { + if (!initialLexerState && lexerStateWithoutNewLineExpectedBit(lexerState) + && !tokens.isEmpty()) { const Token &lastToken = tokens.last(); if (lastToken.is(T_COMMENT) || lastToken.is(T_DOXY_COMMENT)) { insertParen({Parenthesis::Opened, QLatin1Char('+'), lastToken.utf16charsBegin()}); @@ -636,6 +638,30 @@ void CppHighlighterTest::test() QCOMPARE(actualFormat, expectedFormat); } } + +void CppHighlighterTest::testParentheses_data() +{ + QTest::addColumn("line"); + QTest::addColumn("expectedParenCount"); + + QTest::newRow("function head") << 41 << 2; + QTest::newRow("function opening brace") << 42 << 1; + QTest::newRow("loop head") << 43 << 1; + QTest::newRow("comment") << 44 << 0; + QTest::newRow("loop end") << 45 << 3; + QTest::newRow("function closing brace") << 46 << 1; +} + +void CppHighlighterTest::testParentheses() +{ + QFETCH(int, line); + QFETCH(int, expectedParenCount); + + QTextBlock block = m_doc.findBlockByNumber(line - 1); + QVERIFY(block.isValid()); + QCOMPARE(TextDocumentLayout::parentheses(block).count(), expectedParenCount); +} + } // namespace Internal #endif // WITH_TESTS diff --git a/src/plugins/cppeditor/cpphighlighter.h b/src/plugins/cppeditor/cpphighlighter.h index 1728ffeb777..e2fac20bba6 100644 --- a/src/plugins/cppeditor/cpphighlighter.h +++ b/src/plugins/cppeditor/cpphighlighter.h @@ -52,6 +52,8 @@ public: private slots: void test_data(); void test(); + void testParentheses_data(); + void testParentheses(); private: QTextDocument m_doc; diff --git a/src/plugins/cppeditor/testcases/highlightingtestcase.cpp b/src/plugins/cppeditor/testcases/highlightingtestcase.cpp index 53ffcc1b55e..d1ec061aa29 100644 --- a/src/plugins/cppeditor/testcases/highlightingtestcase.cpp +++ b/src/plugins/cppeditor/testcases/highlightingtestcase.cpp @@ -37,3 +37,10 @@ const auto s5 = uR"("o ne")"_w; const auto s6 = u"o\ ne"_w; + +static void parenTest() +{ + do { + /* comment */ \ + } while (false); +} From 67f23f331f3ac8362cd5c3734e1a9d56c1a6b839 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 7 Jul 2023 10:19:49 +0200 Subject: [PATCH 24/31] Update qbs submodule to HEAD of 2.1 branch Change-Id: Ic104a5c3339ee42a59bdda3c83c9631057e38395 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 97769dfdacd..2e6eb75c76c 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit 97769dfdacd006f4d82b240371e3ca79d445ab7a +Subproject commit 2e6eb75c76c2d042eb07a8e6bcb4aa03b8843205 From 942a9d0519fa8d18a7aa4c4e85a5ed03cff3870d Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 7 Jul 2023 10:39:59 +0200 Subject: [PATCH 25/31] SquishTests: Avoid different type structures On Windows the read content will be bytes instead of str. To have a unified code path we need to convert it to str. Change-Id: I16004968d8fed7bb2336ad594c31b38100f773cd Reviewed-by: David Schulz --- tests/system/suite_editors/tst_clean_whitespaces/test.py | 2 +- tests/system/suite_editors/tst_select_all/test.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/system/suite_editors/tst_clean_whitespaces/test.py b/tests/system/suite_editors/tst_clean_whitespaces/test.py index 6dab4720f9e..5c9e7aa6a65 100644 --- a/tests/system/suite_editors/tst_clean_whitespaces/test.py +++ b/tests/system/suite_editors/tst_clean_whitespaces/test.py @@ -28,7 +28,7 @@ def main(): baseName = os.path.basename(currentFile) fileName = os.path.join(directory, baseName) test.log("Testing file %s" % fileName) - content = readFile(currentFile) + content = stringify(readFile(currentFile)) preparedContent, emptyLine, trailingWS = prepareFileExternal(fileName, content) isIgnored = isIgnoredFile(baseName, ignoredFiles) test.verify(preparedContent.find('\t') != -1, "Added at least one tab.") diff --git a/tests/system/suite_editors/tst_select_all/test.py b/tests/system/suite_editors/tst_select_all/test.py index bf95250cf77..5a3814aae9d 100644 --- a/tests/system/suite_editors/tst_select_all/test.py +++ b/tests/system/suite_editors/tst_select_all/test.py @@ -18,7 +18,7 @@ def main(): return for currentFile in files: test.log("Opening file %s" % currentFile) - size = len(readFile(currentFile)) + size = len(stringify(readFile(currentFile))) invokeMenuItem("File", "Open File or Project...") selectFromFileDialog(currentFile, True) editor = getEditorForFileSuffix(currentFile) From 5e55e70f52efa558da2d3a870f95432d64d48033 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 7 Jul 2023 13:12:23 +0200 Subject: [PATCH 26/31] RemoteLinux: Guard against nullptr access This fixes a potential crash when switching the device of a kit. Change-Id: Ibdce9859cb347401706fe4de1c56aa8bb890233b Reviewed-by: hjk --- src/plugins/remotelinux/remotelinuxenvironmentaspect.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/remotelinux/remotelinuxenvironmentaspect.cpp b/src/plugins/remotelinux/remotelinuxenvironmentaspect.cpp index 1be0624490f..07880089de2 100644 --- a/src/plugins/remotelinux/remotelinuxenvironmentaspect.cpp +++ b/src/plugins/remotelinux/remotelinuxenvironmentaspect.cpp @@ -38,7 +38,7 @@ public: auto fetchButton = new QPushButton(Tr::tr("Fetch Device Environment")); addWidget(fetchButton); - connect(target, &Target::kitChanged, [aspect] { aspect->setRemoteEnvironment({}); }); + connect(target, &Target::kitChanged, aspect, [aspect] { aspect->setRemoteEnvironment({}); }); connect(fetchButton, &QPushButton::clicked, this, [aspect, target] { if (IDevice::ConstPtr device = DeviceKitAspect::device(target->kit())) { From 03bab5814b2a74ed016ff6eab65398a35a43a2a9 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 7 Jul 2023 14:15:32 +0200 Subject: [PATCH 27/31] Nim: Fix typing in path chooser Silences a soft assert and re-allows to type paths containing more than one directory separator. Change-Id: I36c400e32b39206669278b89ab4bb033a1f0b6f6 Reviewed-by: hjk --- src/plugins/nim/project/nimtoolchainfactory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/nim/project/nimtoolchainfactory.cpp b/src/plugins/nim/project/nimtoolchainfactory.cpp index 01ec5373b55..415e7e76962 100644 --- a/src/plugins/nim/project/nimtoolchainfactory.cpp +++ b/src/plugins/nim/project/nimtoolchainfactory.cpp @@ -83,7 +83,7 @@ NimToolChainConfigWidget::NimToolChainConfigWidget(NimToolChain *tc) fillUI(); // Connect - connect(m_compilerCommand, &PathChooser::textChanged, this, [this] { + connect(m_compilerCommand, &PathChooser::validChanged, this, [this] { const FilePath path = m_compilerCommand->rawFilePath(); auto tc = static_cast(toolChain()); QTC_ASSERT(tc, return); From 03987976b136296aef73ac7aea5532a0188ab21a Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 6 Jul 2023 15:46:48 +0200 Subject: [PATCH 28/31] Doc: Move output view docs to separate topics - Move some information from "Viewing Output" to the "View output" how-to topic - Add the output view topics to \ingroup creator-reference-output-views and \ingroup studio-reference-output-views Task-number: QTCREATORBUG-29361 Change-Id: Ib91373015f416bf4eb6f5f5123a4ae6e5ebe8d8e Reviewed-by: Eike Ziller --- .../qtcreator-output-panes-taskbar.webp | Bin 3428 -> 9764 bytes ...reator-preferences-application-output.webp | Bin 0 -> 4924 bytes .../qtcreator-preferences-compile-output.webp | Bin 0 -> 3394 bytes .../src/analyze/cpu-usage-analyzer.qdoc | 6 +- .../editors/creator-editors-writing-code.qdoc | 2 +- .../creator-only/creator-code-pasting.qdoc | 2 +- .../creator-only/creator-language-server.qdoc | 2 +- .../creator-semantic-highlighting.qdoc | 6 +- .../src/howto/creator-external-tools.qdoc | 2 +- .../howto/creator-only/creator-autotest.qdoc | 2 +- .../howto/creator-only/creator-how-tos.qdoc | 32 -- .../howto/creator-only/creator-squish.qdoc | 2 +- .../creator-only/creator-configuring.qdoc | 2 +- doc/qtcreator/src/qtcreator-toc.qdoc | 4 - .../creator-file-system-view.qdoc | 1 - .../creator-how-to-view-output.qdoc | 85 ++++ .../creator-reference-sidebar-views.qdoc | 5 - .../creator-reference-terminal-view.qdoc | 111 ++++ .../creator-reference-to-do-entries-view.qdoc | 75 +++ .../creator-open-documents-view.qdoc | 1 - .../user-interface/creator-projects-view.qdoc | 1 - .../creator-reference-output-views.qdoc | 257 ++++++++++ .../src/user-interface/creator-ui.qdoc | 473 +----------------- .../vcs/creator-only/creator-vcs-gitlab.qdoc | 2 +- .../src/qtdesignstudio-toc.qdoc | 1 - 25 files changed, 545 insertions(+), 529 deletions(-) create mode 100644 doc/qtcreator/images/qtcreator-preferences-application-output.webp create mode 100644 doc/qtcreator/images/qtcreator-preferences-compile-output.webp create mode 100644 doc/qtcreator/src/user-interface/creator-how-to-view-output.qdoc create mode 100644 doc/qtcreator/src/user-interface/creator-only/creator-reference-terminal-view.qdoc create mode 100644 doc/qtcreator/src/user-interface/creator-only/creator-reference-to-do-entries-view.qdoc create mode 100644 doc/qtcreator/src/user-interface/creator-reference-output-views.qdoc diff --git a/doc/qtcreator/images/qtcreator-output-panes-taskbar.webp b/doc/qtcreator/images/qtcreator-output-panes-taskbar.webp index 27b5517cb4a7c651bd5249c05b18694db9353039..7801e26ff8f3482a43716023078844569545d71a 100644 GIT binary patch literal 9764 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 Ib#DAD0K}=&qW}N^ literal 3428 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 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-preferences-compile-output.webp b/doc/qtcreator/images/qtcreator-preferences-compile-output.webp new file mode 100644 index 0000000000000000000000000000000000000000..2dab7f7333c785c824c5b166368aaf59cdbae2dc GIT binary patch literal 3394 zcmWIYbaS)fWnc(*bqWXzu<+62Wnj>s#H7M-o!xp;?$uLg?mhqc{_xyCmlfEH3Z`dE zb2F8x++H+n5^Jw zbzB;>Qbb|uD|?3ymo^@cfW%7*K@B_&EEJis;?aQG5=oP>~(t`u6P{IubN}O!b!C4{U}*Z&{b(;T~HjZ^9W=MSPz>rG_Z!n`76$-@6h;<~$B7W}+5-*@)ZvJQvYxjHih zLKf}vH^}B*B~_;2YUo?S?I2tmUsJvJzd_h!e%5m1WAn=LH&!ordr4f3{UDFqqumde zI2>g52zm5hn!SNhL7=BWPvFc0IguZX?-L%Ru@{_ZXWyPP+ih1L^Wh)m^?P5al{u_( z3VroUKhGdPRx7l=vImCI zy-Tevdl&kIbxo69DK6VCDZ&>2cB*#!Nddoqr_a3qKKEwq$xnF)tTzk(oqp6~(p|H? z41z{tcXw}B`D$}w|7>4}vc#pd(cAI?+S zn{9OLW7Lg`x5<7t_SYRcmYu&V&iSR3wD&fv4-xi<^ES`>u4k5z!1OE?i#8IyZPH)$Z`tFf>lPdjBcYir1pW-c?71Z^flfnt1d} zf9uq^kH!CcVq2T0HG0U{b}yXVw^Tc*Z>#Fvw2v))nZIJ6-!5oS`y^AUf5-Zfsn*hO z3xzbCw%?N2Ui12~fj!Ia*sQB7)K6BsyfzLm%dD)P?zwEg_ZN?YOE(Jrd4DgWEqls5 zZu#1q`a%A^CzS7-N3riddj7Aw?Y@0{>{&|xUvy-C{?(mR7$6(&p=&!K^z8(#87Hbk zk{!EVvhP?a9wu{J``3?Z(dFfh$>PGSo78tIZ4KMcV^d!)I??dy{xI3yQzV^)eH}`z zmX%d@hFxFzvD6|!_$SL*o;SZ%PW;CHe&aRi|9^t(rzHE% zmdx1UxXtI(OZAtjT${>fE_d7Ea>Q@LJcrPW4_9VYc9tHQv0}n^{h+_GFQk-%MU9^5 zt&26iCDmN@p~zS;_|i@utuD>;;X$&g4vOM7p}7%@);!D6sW4nAf1+{bj<^N!2HhqW zS(%wm6QAep7SUHYb3r&rBzQvWNee+;*|lfyACc_ho2<6w&G#$=KU~fd0_dX_}M;%I_t&lf118mrp8;Zet!Mw{`aT1 z-PV{EcEurs(Lamx?F>be#=>Pu2OFIaul{AScSmIOryNE1VB2r^_}Md*EOw~K-*WUh zEPF(53r7xLz~sJ_?aVHX4;F7{+N|(ZPHTg0V1n-t%?Rn4mXa3B&V6eMH~L|8T*!3-_mVA3 zU6l+fvmS|UUh(LLbo}IMsU7P$g>9eTn5V|IG5S!S>_X@IgKM2Kwry^aN)oPJv~#ta zYpqwcgG1sJSxUNm^D zGb-JnZdT#cbgeD*kWgyF#uxXRMLU07G)fRwoyTH(`d8|UCXJ^j7>`~^Q)F5s&3;uo z>U`VgqDdF0n6f%QJYK+%aDGxv20LT#$M2!aQU3F@7h3Gg+RXE{f7Qa@yI*a{{v&t! zfwzcjpoHVwqZX%*{Cg`WEWAi#m1y71yZ1Y;cPyUOQ@B^G@UEcwjCGx=?)As+Z^*u} zLoGRGeXH-BX=|2u2yZ)B(mPc}ZQjOfnqQAJs^`zma4EcX#Q2=`x^)(hb{sP)Ir+g* z?Qi<0SiPT8J>E`E`?g8;SmdO9wsrR4+w+CH$MWZrOzr2B)b_eCZsfdr<5BzmKPruK zj5oauGiP=0d(fB_Z7Dvj;MvmqW<77Z3@_JQH@a-8Dt@o&5zbIZ}*!^g^?hnCA z`Ouu_&tsoI({^dLPtUc>oT2@7k88%+!f65OIYM1;UR*Z);FK0^`TU&bnabVnC))E` zw*2^Z>zBLzj4$%WoY!Mqp2af$-(PmHJb(E0_k^vbCYzG&Zo2y% zP__Y;l9XqffsY$ z-Prdq;8X3a$^SkV2IOq_TV$3rH`iHZk*WDNL!tTZg}?Ny+uhe}o;iP_h0syf^c*3% zi65pbC)DT(3KdE8oNsHDQF=V5@Vku6@$`C67abP8 zpvz(BSmU?YGc43xoP0>HwkP6V80J2WxpDBeasK}Q zwfA=ZU;ARA`JSD!&mAP5vlqR1dqF4sPql94kFV2jJ(;&+(XmIe2dm8`KCgbgcjsKa zRp)0s{rM#F$!e=c{kJYl;~uEKke=pNKVjZMUYpaRv*iy=UcbLZEGCfq(xdlxADn$_ z!G6F({D9i=l*#EIi$o)zg>d=g1Wa*zsp^=YSRrqCr}nQZ?~bIk3x0h5DA;wf^Fny( zA~p{$-_=ulyB%kqd%3m$k$(GCw%Snjq=ts7Vp9mIxb8Ps-uF{jD6H|3 zouib`E>E5hURyZ~&K_lOySj1PiWa|!r!TL^cfAo>w&M71{}b*X@7?LUoN~szPUp}B zdnw(OD}v@Z?pr0?C>5X?# \uicontrol Preferences > \uicontrol {Text Editor} diff --git a/doc/qtcreator/src/howto/creator-external-tools.qdoc b/doc/qtcreator/src/howto/creator-external-tools.qdoc index 219856879c5..8e003556cf8 100644 --- a/doc/qtcreator/src/howto/creator-external-tools.qdoc +++ b/doc/qtcreator/src/howto/creator-external-tools.qdoc @@ -113,7 +113,7 @@ working directory. \li In the \uicontrol Output field, select how to handle output from the - tool. You can ignore the output, view it in \l{Viewing Output} + tool. You can ignore the output, view it in \l{View output} {General Messages}, or replace the selected text with the output in the code editor. diff --git a/doc/qtcreator/src/howto/creator-only/creator-autotest.qdoc b/doc/qtcreator/src/howto/creator-only/creator-autotest.qdoc index 46b8781c08a..dab584171bc 100644 --- a/doc/qtcreator/src/howto/creator-only/creator-autotest.qdoc +++ b/doc/qtcreator/src/howto/creator-only/creator-autotest.qdoc @@ -584,7 +584,7 @@ \section1 Viewing Test Output - The \l{Viewing Output}{Test Results} view shows Qt and Qt Quick test results + 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. \section2 Qt Test Output 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 48a698d29e6..c59902f3b04 100644 --- a/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc +++ b/doc/qtcreator/src/howto/creator-only/creator-how-tos.qdoc @@ -129,38 +129,6 @@ \image qtcreator-preferences.webp {Filtering preferences} */ -/*! - \page creator-how-to-view-output.html - \previouspage creator-how-tos.html - \nextpage creator-known-issues.html - \ingroup creator-how-to-ui - - \title View output - - The \l{Viewing Output}{taskbar} shows output from - several sources, such as a list of errors and warnings encountered during - a build, detailed output from the compiler, status of a program when it is - executed, debug output, or search results. - - \image qtcreator-output-panes-taskbar.webp "Output on the taskbar" - - To view different types of output, use the following shortcuts: - - \list - - \li \uicontrol{Issues} - \key Alt+1 (\key Cmd+1 on \macos) - - \li \uicontrol{Search Results} - \key Alt+2 (\key Cmd+2 on \macos) - - \li \uicontrol{Application Output} - \key Alt+3 (\key Cmd+3 on \macos) - - \li \uicontrol{Compile Output} - \key Alt+4 (\key Cmd+4 on \macos) - - \endlist - - For additional ways to view other types of output, see \l{Viewing Output}. -*/ - /*! \page creator-how-to-run-from-cli.html \previouspage creator-how-tos.html diff --git a/doc/qtcreator/src/howto/creator-only/creator-squish.qdoc b/doc/qtcreator/src/howto/creator-only/creator-squish.qdoc index 874b4b389e4..25b2d54dad5 100644 --- a/doc/qtcreator/src/howto/creator-only/creator-squish.qdoc +++ b/doc/qtcreator/src/howto/creator-only/creator-squish.qdoc @@ -22,7 +22,7 @@ \li Record test cases (in a very limited way compared to what you can do inside the Squish IDE). \li Use Squish Runner and Server to run test suites or cases and view - the results in the \uicontrol Squish \l{Viewing Output}{output}. + the results in the \uicontrol Squish \l{View output}{output}. \li Set breakpoints before running tests to stop at certain locations and inspect the local variables, similarly to when debugging a test. \endlist diff --git a/doc/qtcreator/src/overview/creator-only/creator-configuring.qdoc b/doc/qtcreator/src/overview/creator-only/creator-configuring.qdoc index 2e9330159f5..95906339121 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-configuring.qdoc +++ b/doc/qtcreator/src/overview/creator-only/creator-configuring.qdoc @@ -8,7 +8,7 @@ // ********************************************************************** /*! - \previouspage creator-output-panes.html + \previouspage creator-quick-tour.html \page creator-configuring.html \nextpage creator-build-example-application.html diff --git a/doc/qtcreator/src/qtcreator-toc.qdoc b/doc/qtcreator/src/qtcreator-toc.qdoc index 3a6e5c2ccc3..da6f5444c50 100644 --- a/doc/qtcreator/src/qtcreator-toc.qdoc +++ b/doc/qtcreator/src/qtcreator-toc.qdoc @@ -1,7 +1,6 @@ // Copyright (C) 2023 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only - /*! \page qtcreator-toc.html @@ -18,9 +17,6 @@ \list \li \l{IDE Overview} \li \l{User Interface} - \list - \li \l{Viewing Output} - \endlist \li \l{Configuring Qt Creator} \li \l{Building and Running an Example} \li \l{Tutorials} 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 793fa213daa..26a7472500c 100644 --- a/doc/qtcreator/src/user-interface/creator-file-system-view.qdoc +++ b/doc/qtcreator/src/user-interface/creator-file-system-view.qdoc @@ -8,7 +8,6 @@ \nextpage creator-open-documents-view.html \else \previouspage creator-how-to-show-and-hide-sidebars.html - \nextpage creator-output-panes.html \endif \ingroup creator-reference-sidebar-views diff --git a/doc/qtcreator/src/user-interface/creator-how-to-view-output.qdoc b/doc/qtcreator/src/user-interface/creator-how-to-view-output.qdoc new file mode 100644 index 00000000000..2121bd247a2 --- /dev/null +++ b/doc/qtcreator/src/user-interface/creator-how-to-view-output.qdoc @@ -0,0 +1,85 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only + +/*! + \page creator-how-to-view-output.html + \if defined(qtdesignstudio) + \previouspage creator-quick-tour.html + \else + \previouspage creator-how-tos.html + \endif + + \ingroup creator-how-to-ui + + \title View output + + The \e {output views} show output from several sources, such as a list of + errors and warnings encountered during a build, detailed output from the + compiler, status of a program when it is executed, debug output, or search + results. + + \image qtcreator-output-panes-taskbar.webp {Output views} + + You can open output views in all + \if defined (qtcreator) + \l{Switch between modes}{modes} + \else + modes + \endif in the following ways: + + \list + \if defined(qtcreator) + \li Select the output view. + \endif + \li Select \uicontrol View > \uicontrol Output. + The menu items also display the \l{Keyboard Shortcuts} + {keyboard shortcuts} that you can use. + \li Select \key Alt (\key Cmd on \macos) and the number of the view. + \li Select \inlineimage icons/output-pane-menu.png + , and then select the view to open. + \endlist + + To maximize an open output view, select the \inlineimage icons/arrowup.png + (\uicontrol Maximize) button or press \key {Alt+Shift+9}. + + To increase or decrease the output text size, select \inlineimage icons/plus.png + (\uicontrol {Zoom In}) or \inlineimage icons/minus.png + (\uicontrol {Zoom Out}), or press \key Ctrl++ or \key Ctrl+-. Zooming is + not supported in all output views. + + \section1 Change text encoding + + If the text in the output is not displayed correctly, \QC might + be using a different codec from the one used by the tools that generate + the output. To specify the codec to use, select \uicontrol Edit > + \uicontrol Preferences > \uicontrol Environment > \uicontrol Interface, and + then select the codec in the \uicontrol {Text codec for tools} field. + + \image qtcreator-preferences-environment-interface.webp {Interface tab in Environment preferences} + + \section1 Find and filter output + + To search from output, press \key {Ctrl+F} when the view is active. Enter + search criteria in the \uicontrol Find field. For more information, see + \l{Finding and Replacing}. + + To filter output, enter a string in the \uicontrol Filter field. + + To specify filtering options, + select the \inlineimage icons/magnifier.png {Filtering options menu} + button. You can filter output by using regular expressions or + case-sensitivity. Select \uicontrol {Show Non-matching Lines} to + hide the lines that match the filter. + + Some output views do not support finding and filtering. + + \section1 Output views + + The following views show output: + + \if defined(qtcreator) + \annotatedlist creator-reference-output-views + \else + \annotatedlist studio-reference-output-views + \endif +*/ diff --git a/doc/qtcreator/src/user-interface/creator-only/creator-reference-sidebar-views.qdoc b/doc/qtcreator/src/user-interface/creator-only/creator-reference-sidebar-views.qdoc index 90c26db8d2c..ca147e76dcf 100644 --- a/doc/qtcreator/src/user-interface/creator-only/creator-reference-sidebar-views.qdoc +++ b/doc/qtcreator/src/user-interface/creator-only/creator-reference-sidebar-views.qdoc @@ -4,7 +4,6 @@ /*! \page creator-outline-view.html \previouspage creator-how-to-show-and-hide-sidebars.html - \nextpage creator-output-panes.html \ingroup creator-reference-sidebar-views \title Outline @@ -33,7 +32,6 @@ /*! \page creator-class-view.html \previouspage creator-how-to-show-and-hide-sidebars.html - \nextpage creator-output-panes.html \ingroup creator-reference-sidebar-views \title Class View @@ -54,7 +52,6 @@ /*! \page creator-call-hierarchy-view.html \previouspage creator-how-to-show-and-hide-sidebars.html - \nextpage creator-output-panes.html \ingroup creator-reference-sidebar-views \title Call Hierarchy @@ -77,7 +74,6 @@ /*! \page creator-type-hierarchy.html \previouspage creator-how-to-show-and-hide-sidebars.html - \nextpage creator-output-panes.html \ingroup creator-reference-sidebar-views \title Type Hierarchy @@ -110,7 +106,6 @@ /*! \page creator-include-hierarchy-view.html \previouspage creator-how-to-show-and-hide-sidebars.html - \nextpage creator-output-panes.html \ingroup creator-reference-sidebar-views \title Include Hierarchy diff --git a/doc/qtcreator/src/user-interface/creator-only/creator-reference-terminal-view.qdoc b/doc/qtcreator/src/user-interface/creator-only/creator-reference-terminal-view.qdoc new file mode 100644 index 00000000000..a87ec969c80 --- /dev/null +++ b/doc/qtcreator/src/user-interface/creator-only/creator-reference-terminal-view.qdoc @@ -0,0 +1,111 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only + +/*! + \page creator-reference-terminal-view.html + \previouspage creator-how-to-view-output.html + + \ingroup creator-reference-output-views + + \title Terminal + + \brief Opens a terminal. + + When you select the \uicontrol {Run in Terminal} check box and run an + application or the \uicontrol {Open Terminal} button to open a terminal, + it opens as an output view. + + To open the terminal in a separate window, select \uicontrol Edit > + \uicontrol Preferences > \uicontrol Terminal, and deselet the + \uicontrol {Use internal terminal} check box. + + On Linux and \macos, you can set the terminal to open by selecting + \uicontrol Edit > \uicontrol Preferences > + \uicontrol Environment > \uicontrol System. + + \image qtcreator-output-terminal.webp {Terminal pane} + + \list + \li To clear the terminal, select \inlineimage icons/clean_pane_small.png + (\uicontrol Clear). + + \li To close the current terminal, select \inlineimage icons/terminal-close.png + . + + \li To open new terminals as tabs, select \inlineimage icons/terminal-create.png + . + + \li To move between terminals, select the tabs or \inlineimage icons/arrowup.png + and \inlineimage icons/arrowdown.png + . + + \li To select a word in a terminal, double-click it. To select the whole line, + triple-click it. + + \li To open links in a browser, files in the editor, or folders in the + \l Projects view, hover the mouse over them, and press \key Ctrl. + + \li To \l{Finding and Replacing}{search} through the output, press \key {Ctrl+F}. + + \li To make the font larger or smaller, select the \inlineimage icons/plus.png + and \inlineimage icons/minus.png + buttons. You can also change the font size in terminal preferences. + + \li To open terminal preferences, select \inlineimage icons/settings.png + (\uicontrol Configure). + \endlist + + Most of the \QC keyboard shortcuts are disabled in the terminal, except the + ones for opening terminal preferences or the locator and quitting \QC. To + send the escape key to the terminal instead of closing the terminal, select + \uicontrol {Shift+Esc}. You can also specify that the escape key is sent to + the terminal in terminal preferences. + + \section1 Terminal Preferences + + To set preferences for the internal terminal, select \uicontrol Edit > + \uicontrol Preferences > \uicontrol Terminal, or select the + \uicontrol Configure button in the \uicontrol Terminal pane. + + \image qtcreator-preferences-terminal.webp {Terminal tab in Preferences} + + \table + \header + \li Option + \li Value + \row + \li \uicontrol {Use internal terminal} + \li Open the \uicontrol Terminal pane when you select + \uicontrol {Run in Terminal} or \uicontrol {Open Terminal}. + \row + \li \uicontrol {Send escape key to terminal} + \li Send the escape key to the terminal instead of closing the terminal. + \row + \li \uicontrol {Audible bell} + \li Play an audible bell when the a bell character is received. + \row + \li \uicontrol {Allow blinking cursor} + \li Allow the cursor to blink. + \row + \li \uicontrol {Font} + \li Select the \uicontrol {Font family} and \uicontrol Size for the text + in the terminal. You can also use the \inlineimage icons/plus.png + and \inlineimage icons/minus.png buttons in the \uicontrol Terminal + pane to change the font size. + \row + \li \uicontrol {Colors} + \li Set colors for the \uicontrol Terminal pane \uicontrol Foreground, + \uicontrol Background, \uicontrol Selection, and + \uicontrol {Find match}. + \row + \li \uicontrol {Default shell} + \li Set the full path to the default terminal executable in + \uicontrol {Shell path} and the arguments to pass to the shell + in \uicontrol {Shell arguments}. + \endtable + + To use an existing color scheme, select \uicontrol {Load Theme}. To revert + color changes, select \uicontrol {Reset Theme}. + + \sa {View output} +*/ diff --git a/doc/qtcreator/src/user-interface/creator-only/creator-reference-to-do-entries-view.qdoc b/doc/qtcreator/src/user-interface/creator-only/creator-reference-to-do-entries-view.qdoc new file mode 100644 index 00000000000..f8547ac3e1f --- /dev/null +++ b/doc/qtcreator/src/user-interface/creator-only/creator-reference-to-do-entries-view.qdoc @@ -0,0 +1,75 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only + +/*! + \page creator-reference-to-do-entries-view.html + \previouspage creator-how-to-view-output.html + + \ingroup creator-reference-output-views + + \title To-Do Entries + + \brief Lists the BUG, FIXME, NOTE, TODO, and WARNING keywords from the + current file, from all project files, or from a subproject. + + Click the icons on the toolbar to show only the selected + keywords. + + \image qtcreator-to-do-entries.webp {To-Do Entries} + + You can also open task list files generated by code scanning and + analysis tools in \l Issues. For more information, see + \l{Showing Task List Files in Issues}. + + \section1 Enabling the To-Do Plugin + + The Todo plugin is disabled by default. To enable it: + + \list 1 + \li Select \uicontrol Help > \uicontrol {About Plugins} > + \uicontrol Utilities > \uicontrol Todo. + \li Select \uicontrol OK. + \li Select \uicontrol {Restart Now} to restart \QC and load the plugin. + \endlist + + \section1 To-Do Preferences + + To add keywords, select \uicontrol Edit > \uicontrol Preferences > + \uicontrol {To-Do} > \uicontrol Add. Set an icon and a line background color + for the keyword. + + \image qtcreator-todo-options.png {To-Do preferences} + + \list + + \li To change the icon and line background color of the selected keyword, + select \uicontrol Edit. + + \li To remove the selected keyword, select \uicontrol Remove. + + \li To reset the list to predefined keywords, select \uicontrol Reset. + All your changes will be permanently lost. + + \li To determine whether the keywords in the whole project, in the + current file, or in a subproject are displayed by default, select + the appropriate option in the \uicontrol {Scanning scope} group. + + \endlist + + \section1 Excluding Files from Scanning + + To exclude files from scanning, select \uicontrol {Project Settings} > + \uicontrol {To-Do} in the \uicontrol Projects mode. + + \image qtcreator-todo-excluded-files.png {Excluded Files in To-Do preferences} + + Select \uicontrol Add and double-click the placeholder text in + \uicontrol {Exclude Files} to enter a regular expression that + matches the path to files to exclude. Use a forward slash (/) + as a separator in the path also on Windows. + + Select the link in \uicontrol {Use global settings} to open global + To-Do preferences. + + \sa {Enable and disable plugins} +*/ 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 c4e3d9e5692..72ac21121ed 100644 --- a/doc/qtcreator/src/user-interface/creator-open-documents-view.qdoc +++ b/doc/qtcreator/src/user-interface/creator-open-documents-view.qdoc @@ -9,7 +9,6 @@ \nextpage studio-content-library.html \else \previouspage creator-how-to-show-and-hide-sidebars.html - \nextpage creator-output-panes.html \endif \ingroup creator-reference-sidebar-views diff --git a/doc/qtcreator/src/user-interface/creator-projects-view.qdoc b/doc/qtcreator/src/user-interface/creator-projects-view.qdoc index 1c3534afd13..be07f7f1580 100644 --- a/doc/qtcreator/src/user-interface/creator-projects-view.qdoc +++ b/doc/qtcreator/src/user-interface/creator-projects-view.qdoc @@ -8,7 +8,6 @@ \nextpage creator-file-system-view.html \else \previouspage creator-how-to-show-and-hide-sidebars.html - \nextpage creator-output-panes.html \endif \ingroup creator-reference-sidebar-views diff --git a/doc/qtcreator/src/user-interface/creator-reference-output-views.qdoc b/doc/qtcreator/src/user-interface/creator-reference-output-views.qdoc new file mode 100644 index 00000000000..42df7eb4d18 --- /dev/null +++ b/doc/qtcreator/src/user-interface/creator-reference-output-views.qdoc @@ -0,0 +1,257 @@ +// Copyright (C) 2023 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only + +// ********************************************************************** +// NOTE: the sections are not ordered by their logical order to avoid +// reshuffling the file each time the index order changes (i.e., often). +// Run the fixnavi.pl script to adjust the links to the index order. +// ********************************************************************** + +/*! + \page creator-reference-issues-view.html + \previouspage creator-how-to-view-output.html + + \ingroup creator-reference-output-views + \ingroup studio-reference-output-views + + \title Issues + + \brief Lists issues from different sources. + + The \uicontrol Issues view filters out irrelevant output from the build tools + and presents the issues in an organized way. + + To further filter the output by type, select \inlineimage icons/filtericon.png + (\uicontrol {Filter Tree}) and then select a filter: + + \list + + \if defined(qtdesignstudio) + \li \uicontrol {Asset Export} - Errors and warnings encountered + while exporting assets. + + \li \uicontrol {Asset Importer Error} - Errors and warnings encountered + while importing assets from a design tool. + \else + \li \uicontrol Autotests - Errors and warnings encountered while running + tests. + \endif + + \li \uicontrol {Build System} - Errors and warnings encountered when + opening and managing projects. + + \if defined(qtcreator) + \li \uicontrol {Clang Code Model} - + \l {Parsing C++ Files with the Clang Code Model} + {Errors and warnings from the current editor}. + \li \uicontrol {Clang Tools} - Errors and warnings from + \l {Using Clang Tools}{Clang-Tidy and Clazy} + \endif + + \li \uicontrol Compile - Selected output from the compiler. Open + \uicontrol {Compile Output} for more detailed information. + + \li \uicontrol{Debug Information} - Lists debug information packages that might + be missing. + + \if defined(qtcreator) + \li \uicontrol Debugger - Errors encountered while running the + \l{Analyzing Code}{Valgrind code analysis tools}. + \endif + + \li \uicontrol{Debugger Runtime} - Errors encountered when starting \QC. For + example, information about missing DLLs. + + \li \uicontrol Deployment - Errors encountered between building an application + successfully and starting it on a \l{glossary-device}{device}. + + \if defined(qtcreator) + \li \uicontrol {My Tasks} - Entries from a task list file (.tasks) generated + by \l{Showing Task List Files in Issues} + {code scanning and analysis tools}. + + \li \uicontrol Python - Runtime errors and exceptions of Python scripts. + \endif + + \li \uicontrol QML and \uicontrol {QML Analysis} - + \l{JavaScript and QML Error Codes} + {QML and JavaScript syntax errors}. + + \if defined(qtcreator) + \li \uicontrol Sanitizer - Tasks created when you run an application if + you used an \e {address sanitizer} to detect memory handling issues. + \endif + \endlist + + To find output in the view, enter search criteria in the \uicontrol Filter + field. + + \image qtcreator-issues.webp {Issues} + + Select one or several lines to apply context-menu actions to their contents. + You can remove the selected lines or copy their contents to the clipboard. + For single lines, you can search the Internet for a solution using the + contents of the line as search criteria or open a version control + annotation view of the line that causes the error message. + + To view detailed information about the selected line (where available), press + \key Space. + + To navigate to the corresponding source code, click an issue or + select \uicontrol {Show in Editor} in the context menu. The entry must contain the + name of the file where the issue was found. + + To view more information about an issue in \l {Compile Output}, + select \uicontrol {Show Compile Output} in the context menu. + + To jump from one issue to the next or previous + one, select \inlineimage icons/arrowup.png + and \inlineimage icons/arrowdown.png + or press \key F6 and \key Shift+F6. + + By default, a new build clears the \uicontrol Issues view. To keep + the issues from the previous build rounds, deselect \uicontrol Edit > + \uicontrol Preferences > \uicontrol {Build & Run} > \uicontrol General > + \uicontrol {Clear issues list on new build}. +*/ + +/*! + \page creator-reference-search-results-view.html + \previouspage creator-how-to-view-output.html + + \ingroup creator-reference-output-views + \ingroup studio-reference-output-views + + \title Search Results + + \brief Lets you search through projects, files on a file system or the + currently open files. + + The search history (1) stores the search results. You can select earlier + searches from the history. + + \image qtcreator-search-results.webp {Search Results - criteria} + + The figure below shows an example search result for all + occurrences of the search string in the specified directory. + + \image qtcreator-search-results-matches.webp {Search Results - matches found} + + For more information about the different search options, see + \l {Finding and Replacing}. +*/ + +/*! + \page creator-reference-application-output-view.html + \previouspage creator-how-to-view-output.html + + \ingroup creator-reference-output-views + \ingroup studio-reference-output-views + + \title Application Output + + \brief Displays the status of a program when you execute it, and the debug + output. + + \image qtcreator-application-output.webp {Application Output} + + \if defined(qtcreator) + If you specify command line arguments in the run settings that are passed + to the application when running it, they are displayed as a part of the + application output. For more information, see + \l{Specifying Run Settings for Desktop Device Types}. + \endif + + Select toolbar buttons to run applications, to attach the debugger to the + running application, and to stop running or debugging. + + \section1 Application Output Preferences + + To set preferences for displaying application output: + + \list + \li Select \uicontrol Edit > \uicontrol Preferences > + \uicontrol {Build & Run} > \uicontrol {Application Output}. + \li Select the \inlineimage icons/settings.png + (\uicontrol {Open Settings Page}) button. + \endlist + + \image qtcreator-preferences-application-output.webp {Application Output tab in Preferences} + + You can select whether to open \uicontrol{Application Output} on output when + running or debugging applications, to clear old output on a new run, + to word-wrap output, and to limit output to the specified number of lines. +*/ + +/*! + \page creator-reference-compile-output-view.html + \previouspage creator-how-to-view-output.html + + \ingroup creator-reference-output-views + \ingroup studio-reference-output-views + + \title Compile Output + + \brief Shows all output from the compiler. + + \uicontrol{Compile Output} shows a more detailed version of information + displayed in \l Issues. + + \image qtcreator-compile-output.webp {Compile Output} + + Double-click a file name in an error message to open the file in the + code editor. + + To cancel the build, select the \uicontrol {Cancel Build} button. + + To copy the output to the clipboard, select \uicontrol {Select All} in the + context menu, and then select \uicontrol Copy. Save the output as a file if + you want to examine it later without having to build the project again. + This is useful for large projects that take a long time to build. + + \section1 Compile Output Preferences + + To specify whether to open the \uicontrol {Compile Output} view on output + when building applications: + + \list 1 + \li Open the preferences: + \list + \li In the \uicontrol {Compile Output} view, + select \inlineimage icons/settings.png + (\uicontrol {Open Settings Page}). + \li Select \uicontrol Edit > \uicontrol Preferences > + \uicontrol {Build & Run} > \uicontrol {Compile Output}. + \endlist + \image qtcreator-preferences-compile-output.webp {Compile Output tab in Preferences} + \li Select the \uicontrol {Open Compile Output when building} check box. + \li In the \uicontrol {Limit output to} field, you can specify the + maximum amount of build output lines to display. + \endlist + + \section1 Parsing Existing Compile Output + + You can use \QC's output parsers to parse output from builds done outside + of \QC or stored from previous build runs. By default, the parsers from the + kit selected for the active project are used, but you can select another + kit. + + To parse compile output: + + \list 1 + \li Select \uicontrol Tools > \uicontrol {Parse Build Output}. + \image qtcreator-parse-build-output.png + \li Paste the build output in the \uicontrol {Build Output} field, or + select \uicontrol {Load from File} to load it from a file. + \li Deselect the \uicontrol {Output went to stderr} check box if the + parser expects issues on \c stdout. + \li In the \uicontrol {Use parsers from kit} field, select the kit to + use for parsing the output. Select \uicontrol Manage to view + and modify kit settings. + \li The parser displays the parsed output in \l Issues. By default, the + view is cleared before adding the new output. + Deselect the \uicontrol {Clear existing tasks} check box to append + the new output to the old output. + \li Select \uicontrol OK to start parsing. + \endlist +*/ diff --git a/doc/qtcreator/src/user-interface/creator-ui.qdoc b/doc/qtcreator/src/user-interface/creator-ui.qdoc index a6fd8c45576..b37c1c4e0f7 100644 --- a/doc/qtcreator/src/user-interface/creator-ui.qdoc +++ b/doc/qtcreator/src/user-interface/creator-ui.qdoc @@ -1,12 +1,6 @@ // Copyright (C) 2023 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only -// ********************************************************************** -// NOTE: the sections are not ordered by their logical order to avoid -// reshuffling the file each time the index order changes (i.e., often). -// Run the fixnavi.pl script to adjust the links to the index order. -// ********************************************************************** - /*! \page creator-quick-tour.html \if defined(qtdesignstudio) @@ -14,7 +8,7 @@ \nextpage creator-using-qt-quick-designer.html \else \previouspage creator-overview.html - \nextpage creator-views.html + \nextpage creator-configuring.html \endif \title User Interface @@ -66,7 +60,7 @@ \li \inlineimage numbers/07.png \li Output \li View output from building, running, and other actions. - \li \l{Viewing Output} + \li \l{View output} \endtable To see where the above controls are in the UI, select @@ -127,6 +121,7 @@ \li \l {Find menu items on \macos} \li \l {Set high DPI scaling} \li \l {Switch UI themes} + \li \l {View output} \endlist \section1 Viewing Images @@ -140,465 +135,3 @@ \endif */ - -/*! - \page creator-output-panes.html - \if defined(qtdesignstudio) - \previouspage creator-editor-functions.html - \nextpage creator-highlighting.html - \else - \previouspage creator-open-documents-view.html - \nextpage creator-configuring.html - \endif - - \title Viewing Output - - \image qtcreator-general-messages.webp {General Messages} - - You can view the following types of output: - - \list - - \li \l {Issues} - - \li \l {Search Results} - - \li \l {Application Output} - - \li \l {Compile Output} - - \if defined(qtcreator) - \li \l {Terminal} - \endif - - \li \uicontrol {QML Debugger Console} - - \li \uicontrol{General Messages} - - \if defined(qtcreator) - \li \l {Static Code Analysis}{Axivion} - \endif - - \li \uicontrol{Version Control} - - \if defined(qtcreator) - \li \l{Running Autotests}{Test Results} - - \li \l{Using Squish}{Squish} test results and Squish Server and - Runner logs - - \li \l {To-Do Entries} - - \endif - - \endlist - - Output is available on the taskbar in all - \if defined(qtcreator) - \l{Switch between modes}{modes}. - \else - \l{Mode}{modes}. - \endif - - \image qtcreator-output-panes-taskbar.webp "Output on the taskbar" - - You can view output in the following ways: - - \list - \li Select the output view on the taskbar. - \li Select \key Alt (\key Cmd on \macos) and the number of the view on - the taskbar. - \li Select \inlineimage icons/output-pane-menu.png - , and then select the view to open. - \li Select \uicontrol View > \uicontrol Output. - The menu items also display the \l{Keyboard Shortcuts} - {keyboard shortcuts} that you can use. - \endlist - - To maximize an open output view, select the \inlineimage icons/arrowup.png - (\uicontrol Maximize) button or press \key {Alt+Shift+9}. - - - To increase or decrease the output text size, select \inlineimage icons/plus.png - (\uicontrol {Zoom In}) or \inlineimage icons/minus.png - (\uicontrol {Zoom Out}), or press \key Ctrl++ or \key Ctrl+-. Zooming is - not supported in all output views. - - To open the \uicontrol{General Messages} and - \if defined(qtcreator) - \l{Using Version Control Systems}{Version Control} - \else - \l{Using Git}{Version Control} - \endif - views, select \uicontrol View > \uicontrol Output. - \if defined(qtcreator) - To view \uicontrol {To-Do Entries}, enable the \uicontrol Todo plugin. - \endif - - For more information about the \uicontrol {QML Debugger Console} view, see - \l{Executing JavaScript Expressions}. - - If the text in the output is not displayed correctly, \QC might - be using a different codec from the one used by the tools that generate - the output. To specify the codec to use, select \uicontrol Edit > - \uicontrol Preferences > \uicontrol Environment > \uicontrol Interface, and - then select the codec in the \uicontrol {Text codec for tools} field. - - \image qtcreator-preferences-environment-interface.webp {Interface tab in Environment preferences} - - \section1 Finding and Filtering Output - - To search from output, press \key {Ctrl+F} when the view is active. Enter - search criteria in the \uicontrol Find field. For more information, see - \l{Finding and Replacing}. - - Besides searching from the output, you can enter a string in the - \uicontrol Filter field to filter it. To specify filtering options, - select the \inlineimage icons/magnifier.png "Filtering options menu" - button. You can filter output by using regular expressions or - case-sensitivity. Select \uicontrol {Show Non-matching Lines} to - hide the lines that match the filter. - - Finding and filtering are not supported in all output views. - - \section1 Issues - - \uicontrol{Issues} lists the following types of issues: - - \list - - \if defined(qtdesignstudio) - \li \uicontrol {Asset Export} - Errors and warnings encountered - while exporting assets. - - \li \uicontrol {Asset Importer Error} - Errors and warnings encountered - while importing assets from a design tool. - \else - \li \uicontrol Autotests - Errors and warnings encountered while running - tests. - \endif - - \li \uicontrol {Build System} - Errors and warnings encountered during a - build. - - \if defined(qtcreator) - \li \uicontrol {Clang Code Model} - - \l {Parsing C++ Files with the Clang Code Model} - {Errors and warnings from the current editor}. - \li \uicontrol {Clang Tools} - Errors and warnings from - \l {Using Clang Tools}{Clang-Tidy and Clazy} - \endif - - \li \uicontrol Compile - Selected output from the compiler. Open - \uicontrol {Compile Output} for more detailed information. - - \li \uicontrol{Debug Information} - Lists debug information packages that might - be missing. - - \if defined(qtcreator) - \li \uicontrol Debugger - Errors encountered while running the - \l{Analyzing Code}{Valgrind code analysis tools}. - \endif - - \li \uicontrol{Debugger Runtime} - Errors encountered when starting \QC. For - example, information about missing DLLs. - - \li \uicontrol Deployment - Errors encountered between building an application - successfully and starting it on a \l{glossary-device}{device}. - - \if defined(qtcreator) - \li \uicontrol {My Tasks} - Entries from a task list file (.tasks) generated - by \l{Showing Task List Files in Issues} - {code scanning and analysis tools}. - - \li \uicontrol Python - Runtime errors and exceptions of Python scripts. - \endif - - \li \uicontrol QML and \uicontrol {QML Analysis} - - \l{JavaScript and QML Error Codes} - {QML and JavaScript syntax errors}. - - \if defined(qtcreator) - \li \uicontrol Sanitizer - Tasks created when you run an application if - you used an \e {address sanitizer} to detect memory handling issues. - \endif - \endlist - - The view filters out irrelevant output from the build tools and presents the - issues in an organized way. To further filter the output by type, select - \inlineimage icons/filtericon.png - (\uicontrol {Filter Tree}) and then select a filter. To find output in the - view, enter search criteria in the \uicontrol Filter field. - - \image qtcreator-issues.webp {Issues} - - Select one or several lines to apply context-menu actions to their contents. - You can remove the selected lines or copy their contents to the clipboard. - For single lines, you can search the Internet for a solution using the - contents of the line as search criteria or open a version control - annotation view of the line that causes the error message. - - To view detailed information about the selected line (where available), press - \key Space. - - To navigate to the corresponding source code, click an issue or - select \uicontrol {Show in Editor} in the context menu. The entry must contain the - name of the file where the issue was found. - - To view more information about an issue in \l {Compile Output}, - select \uicontrol {Show Compile Output} in the context menu. - - To jump from one issue to the next or previous - one, select \inlineimage icons/arrowup.png - and \inlineimage icons/arrowdown.png - or press \key F6 and \key Shift+F6. - - By default, a new build clears the \uicontrol Issues view. To keep - the issues from the previous build rounds, deselect \uicontrol Edit > - \uicontrol Preferences > \uicontrol {Build & Run} > \uicontrol General > - \uicontrol {Clear issues list on new build}. - - \section1 Search Results - - In \uicontrol{Search Results}, you can search through projects, files on - a file system or the currently open files: - - \image qtcreator-search-results.webp {Search Results - criteria} - - The search history (1) stores the search results. You can select earlier - searches from the history. - - The figure below shows an example search result for all - occurrences of the search string in the specified directory. - - \image qtcreator-search-results-matches.webp {Search Results - matches found} - - For more information about the different search options, see - \l {Finding and Replacing}. - - \section1 Application Output - - \uicontrol{Application Output} displays the status of a program when - you execute it, and the debug output. - - \image qtcreator-application-output.webp {Application Output} - - \if defined(qtcreator) - If you specify command line arguments in the run settings that are passed - to the application when running it, they are displayed as a part of the - application output. For more information, see - \l{Specifying Run Settings for Desktop Device Types}. - \endif - - Select toolbar buttons to run applications, to attach the debugger to the - running application, and to stop running or debugging. - - To specify settings for displaying application output, select - \uicontrol Edit > \uicontrol Preferences > \uicontrol {Build & Run} > - \uicontrol {Application Output}, or click the \inlineimage icons/settings.png - (\uicontrol {Open Settings Page}) button. You can select whether to open - \uicontrol{Application Output} on output when running or debugging - applications, to clear old output on a new run, - to word-wrap output, and to limit output to the specified number of lines. - - \section1 Compile Output - - \uicontrol{Compile Output} shows all output from the compiler. - The \uicontrol{Compile Output} is a more detailed version of information - displayed in \l Issues. - - \image qtcreator-compile-output.webp {Compile Output} - - Double-click on a file name in an error message to open the file in the - code editor. - - Select the \uicontrol {Cancel Build} button to cancel the build. - - To specify whether to open the \uicontrol {Compile Output} view on output - when building applications, select \uicontrol Edit > \uicontrol Preferences > - \uicontrol {Build & Run} > \uicontrol {Compile Output}, and then select the - \uicontrol {Open Compile Output when building} check box. - In the \uicontrol {Limit output to} field, you can specify the maximum - amount of build output lines to display. - - You can also open the preferences page by clicking \inlineimage icons/settings.png - (\uicontrol {Open Settings Page}). - - To copy the output to the clipboard, select \uicontrol {Select All} in the - context menu, and then select \uicontrol Copy. Save the output as a file if - you want to examine it later without having to build the project again. - This is useful for large projects that take a long time to build. - - \section2 Parsing Existing Compile Output - - You can use \QC's output parsers to parse output from builds done outside - of \QC or stored from previous build runs. By default, the parsers from the - kit selected for the active project are used, but you can select another - kit. - - To parse compile output: - - \list 1 - \li Select \uicontrol Tools > \uicontrol {Parse Build Output}. - \image qtcreator-parse-build-output.png - \li Paste the build output in the \uicontrol {Build Output} field, or - select \uicontrol {Load from File} to load it from a file. - \li Deselect the \uicontrol {Output went to stderr} check box if the - parser expects issues on \c stdout. - \li In the \uicontrol {Use parsers from kit} field, select the kit to - use for parsing the output. Select \uicontrol Manage to view - and modify kit settings. - \li The parser displays the parsed output in \l Issues. By default, the - view is cleared before adding the new output. - Deselect the \uicontrol {Clear existing tasks} check box to append - the new output to the old output. - \li Select \uicontrol OK to start parsing. - \endlist - - \if defined(qtcreator) - - \section1 Terminal - - When you select the \uicontrol {Run in Terminal} check box and run an - application or the \uicontrol {Open Terminal} button to open a terminal, - the default terminal opens. On Linux and \macos, you can set the default - terminal by selecting \uicontrol Edit > \uicontrol Preferences > - \uicontrol Environment > \uicontrol System. - - To open the terminal on the taskbar instead of in a separate window, select - \uicontrol Edit > \uicontrol Preferences > \uicontrol Terminal > - \uicontrol {Use internal terminal}. - - \image qtcreator-output-terminal.webp {Terminal pane} - - To clear the terminal, select \inlineimage icons/clean_pane_small.png - (\uicontrol Clear). - - To close the current terminal, select \inlineimage icons/terminal-close.png - . - - To open new terminals as tabs, select \inlineimage icons/terminal-create.png - . - - To move between terminals, select the tabs or \inlineimage icons/arrowup.png - and \inlineimage icons/arrowdown.png - . - - To select a word in a terminal, double-click it. To select the whole line, - triple-click it. - - To open links in a browser, files in the editor, or folders in the - \l Projects view, hover the mouse over them, and press \key Ctrl. - - To \l{Finding and Replacing}{search} through the output, press \key {Ctrl+F}. - - To make the font larger or smaller, select the \inlineimage icons/plus.png - and \inlineimage icons/minus.png - buttons. You can also change the font size in terminal preferences. - - To open terminal preferences, select \inlineimage icons/settings.png - (\uicontrol Configure). - - Most of the \QC keyboard shortcuts are disabled in the terminal, except the - ones for opening terminal preferences or the locator and quitting \QC. To - send the escape key to the terminal instead of closing the terminal, select - \uicontrol {Shift+Esc}. You can also specify that the escape key is sent to - the terminal in terminal preferences. - - \section2 Setting Terminal Preferences - - To set preferences for the internal terminal, select \uicontrol Edit > - \uicontrol Preferences > \uicontrol Terminal, or select the - \uicontrol Configure button in the \uicontrol Terminal pane. - - \image qtcreator-preferences-terminal.webp {Terminal tab in Preferences} - - \table - \header - \li Option - \li Value - \row - \li \uicontrol {Use internal terminal} - \li Open the \uicontrol Terminal pane when you select - \uicontrol {Run in Terminal} or \uicontrol {Open Terminal}. - \row - \li \uicontrol {Send escape key to terminal} - \li Send the escape key to the terminal instead of closing the terminal. - \row - \li \uicontrol {Audible bell} - \li Play an audible bell when the a bell character is received. - \row - \li \uicontrol {Allow blinking cursor} - \li Allow the cursor to blink. - \row - \li \uicontrol {Font} - \li Select the \uicontrol {Font family} and \uicontrol Size for the text - in the terminal. You can also use the \inlineimage icons/plus.png - and \inlineimage icons/minus.png buttons in the \uicontrol Terminal - pane to change the font size. - \row - \li \uicontrol {Colors} - \li Set colors for the \uicontrol Terminal pane \uicontrol Foreground, - \uicontrol Background, \uicontrol Selection, and - \uicontrol {Find match}. - \row - \li \uicontrol {Default shell} - \li Set the full path to the default terminal executable in - \uicontrol {Shell path} and the arguments to pass to the shell - in \uicontrol {Shell arguments}. - \endtable - - To use an existing color scheme, select \uicontrol {Load Theme}. To revert - color changes, select \uicontrol {Reset Theme}. - - \section1 To-Do Entries - - \uicontrol {To-Do Entries} lists the BUG, FIXME, NOTE, TODO, and - WARNING keywords from the current file, from all project files, or from a - subproject. Click the icons on the toolbar to show only the selected - keywords. - - \image qtcreator-to-do-entries.webp {To-Do Entries} - - To add keywords, select \uicontrol Edit > \uicontrol Preferences > - \uicontrol {To-Do} > \uicontrol Add. Set an icon and a line background color - for the keyword. - - \image qtcreator-todo-options.png {To-Do preferences} - - To change the icon and line background color of the selected keyword, select - \uicontrol Edit. - - To remove the selected keyword, select \uicontrol Remove. - - To reset the list to predefined keywords, select \uicontrol Reset. All your - changes will be permanently lost. - - To determine whether the keywords in the whole project, in the current file, - or in a subproject are displayed by default, select the appropriate option - in the \uicontrol {Scanning scope} group. - - To exclude files from scanning, select \uicontrol {Project Settings} > - \uicontrol {To-Do} in the \uicontrol Projects mode. - - \image qtcreator-todo-excluded-files.png {Excluded Files in To-Do preferences} - - Select \uicontrol Add and double-click the placeholder text in - \uicontrol {Exclude Files} to enter a regular expression that - matches the path to files to exclude. Use a forward slash (/) - as a separator in the path also on Windows. - - Select the link in \uicontrol {Use global settings} to open global - To-Do preferences. - - The Todo plugin is disabled by default. To enable the plugin, select - \uicontrol Help > \uicontrol {About Plugins} > \uicontrol Utilities > - \uicontrol Todo. Then select \uicontrol {Restart Now} to restart \QC - and load the plugin. - - In addition, you can open task list files generated by code scanning and - analysis tools in \l Issues. For more information, see - \l{Showing Task List Files in Issues}. - \endif - -*/ diff --git a/doc/qtcreator/src/vcs/creator-only/creator-vcs-gitlab.qdoc b/doc/qtcreator/src/vcs/creator-only/creator-vcs-gitlab.qdoc index 52968f5b949..c458d5d0079 100644 --- a/doc/qtcreator/src/vcs/creator-only/creator-vcs-gitlab.qdoc +++ b/doc/qtcreator/src/vcs/creator-only/creator-vcs-gitlab.qdoc @@ -20,7 +20,7 @@ To use GitLab, you must create a connection to the GitLab server and clone the projects you want to work on. You can also link previously cloned projects to GitLab in the project settings. This enables you to receive - event notifications in the \l {Viewing Output}{Version Control} pane. + event notifications in the \l {View output}{Version Control} pane. \section1 Connecting to GitLab Servers diff --git a/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc b/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc index 0f9f485b8c7..8b14e1a10af 100644 --- a/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc +++ b/doc/qtdesignstudio/src/qtdesignstudio-toc.qdoc @@ -200,7 +200,6 @@ \list \li \l{Writing Code} \list - \li \l{Viewing Output} \li \l{Semantic Highlighting} \li \l{Checking Code Syntax} \li \l{Completing Code} From 7a518dc1b8c26c5adbbd345852cede8d00453955 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 7 Jul 2023 14:48:41 +0200 Subject: [PATCH 29/31] Nim: Make the command information usable Change-Id: I68b7e589842f9cb3a423f2d81f9343ecd518f9db Reviewed-by: hjk --- src/plugins/nim/project/nimcompilerbuildstep.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/nim/project/nimcompilerbuildstep.cpp b/src/plugins/nim/project/nimcompilerbuildstep.cpp index 588098619a2..76802a85df8 100644 --- a/src/plugins/nim/project/nimcompilerbuildstep.cpp +++ b/src/plugins/nim/project/nimcompilerbuildstep.cpp @@ -60,7 +60,7 @@ QWidget *NimCompilerBuildStep::createConfigWidget() auto additionalArgumentsLineEdit = new QLineEdit(widget); auto commandTextEdit = new QTextEdit(widget); - commandTextEdit->setEnabled(false); + commandTextEdit->setReadOnly(true); commandTextEdit->setMinimumSize(QSize(0, 0)); auto defaultArgumentsComboBox = new QComboBox(widget); From ba35a64d93e7d3edf847fde83cd529962e29ce4a Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Thu, 6 Jul 2023 10:37:09 +0200 Subject: [PATCH 30/31] ClangCodeModel: Remove dead code None of this had any affect after switching to clangd. Change-Id: I806682fecff84bf6eb0b0eb382e096fc9a25fa3d Reviewed-by: David Schulz --- .../clangeditordocumentprocessor.cpp | 20 ------- .../clangeditordocumentprocessor.h | 8 --- .../clangmodelmanagersupport.cpp | 52 +------------------ .../clangcodemodel/clangmodelmanagersupport.h | 4 -- 4 files changed, 1 insertion(+), 83 deletions(-) diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp index 687758bb0ae..d7c94d81247 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.cpp @@ -59,26 +59,6 @@ void ClangEditorDocumentProcessor::semanticRehighlight() BuiltinEditorDocumentProcessor::semanticRehighlight(); } -bool ClangEditorDocumentProcessor::hasProjectPart() const -{ - return !m_projectPart.isNull(); -} - -CppEditor::ProjectPart::ConstPtr ClangEditorDocumentProcessor::projectPart() const -{ - return m_projectPart; -} - -void ClangEditorDocumentProcessor::clearProjectPart() -{ - m_projectPart.clear(); -} - -::Utils::Id ClangEditorDocumentProcessor::diagnosticConfigId() const -{ - return m_diagnosticConfigId; -} - void ClangEditorDocumentProcessor::setParserConfig( const CppEditor::BaseEditorDocumentParser::Configuration &config) { diff --git a/src/plugins/clangcodemodel/clangeditordocumentprocessor.h b/src/plugins/clangcodemodel/clangeditordocumentprocessor.h index aefbaa9e0ff..bd151554003 100644 --- a/src/plugins/clangcodemodel/clangeditordocumentprocessor.h +++ b/src/plugins/clangcodemodel/clangeditordocumentprocessor.h @@ -19,12 +19,6 @@ public: void semanticRehighlight() override; - bool hasProjectPart() const; - CppEditor::ProjectPart::ConstPtr projectPart() const; - void clearProjectPart(); - - ::Utils::Id diagnosticConfigId() const; - void setParserConfig(const CppEditor::BaseEditorDocumentParser::Configuration &config) override; CppEditor::BaseEditorDocumentParser::Configuration parserConfig(); @@ -37,8 +31,6 @@ signals: private: TextEditor::TextDocument &m_document; - CppEditor::ProjectPart::ConstPtr m_projectPart; - ::Utils::Id m_diagnosticConfigId; }; } // namespace Internal diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp index a14fb81b901..98e855b4195 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp @@ -232,9 +232,7 @@ ClangModelManagerSupport::ClangModelManagerSupport() connect(modelManager, &CppModelManager::abstractEditorSupportRemoved, this, &ClangModelManagerSupport::onAbstractEditorSupportRemoved); connect(modelManager, &CppModelManager::projectPartsUpdated, - this, &ClangModelManagerSupport::onProjectPartsUpdated); - connect(modelManager, &CppModelManager::projectPartsRemoved, - this, &ClangModelManagerSupport::onProjectPartsRemoved); + this, &ClangModelManagerSupport::updateLanguageClient); connect(modelManager, &CppModelManager::fallbackProjectPartUpdated, this, [this] { if (sessionModeEnabled()) return; @@ -861,37 +859,6 @@ void ClangModelManagerSupport::onTextMarkContextMenuRequested(TextEditor::TextEd } } -using ClangEditorDocumentProcessors = QVector; -static ClangEditorDocumentProcessors clangProcessors() -{ - ClangEditorDocumentProcessors result; - for (const CppEditorDocumentHandle *editorDocument : cppModelManager()->cppEditorDocuments()) - result.append(qobject_cast(editorDocument->processor())); - - return result; -} - -void ClangModelManagerSupport::onProjectPartsUpdated(Project *project) -{ - QTC_ASSERT(project, return); - - updateLanguageClient(project); - - QStringList projectPartIds; - const ProjectInfo::ConstPtr projectInfo = cppModelManager()->projectInfo(project); - QTC_ASSERT(projectInfo, return); - - for (const ProjectPart::ConstPtr &projectPart : projectInfo->projectParts()) - projectPartIds.append(projectPart->id()); - onProjectPartsRemoved(projectPartIds); -} - -void ClangModelManagerSupport::onProjectPartsRemoved(const QStringList &projectPartIds) -{ - if (!projectPartIds.isEmpty()) - reinitializeBackendDocuments(projectPartIds); -} - void ClangModelManagerSupport::onClangdSettingsChanged() { const bool sessionMode = sessionModeEnabled(); @@ -940,21 +907,4 @@ void ClangModelManagerSupport::onClangdSettingsChanged() } } -static ClangEditorDocumentProcessors -clangProcessorsWithProjectParts(const QStringList &projectPartIds) -{ - return ::Utils::filtered(clangProcessors(), [projectPartIds](ClangEditorDocumentProcessor *p) { - return p->hasProjectPart() && projectPartIds.contains(p->projectPart()->id()); - }); -} - -void ClangModelManagerSupport::reinitializeBackendDocuments(const QStringList &projectPartIds) -{ - const ClangEditorDocumentProcessors processors = clangProcessorsWithProjectParts(projectPartIds); - for (ClangEditorDocumentProcessor *processor : processors) { - processor->clearProjectPart(); - processor->run(); - } -} - } // ClangCodeModel::Internal diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.h b/src/plugins/clangcodemodel/clangmodelmanagersupport.h index 140239550d8..8121b9967a9 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.h +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.h @@ -81,12 +81,8 @@ private: int lineNumber, QMenu *menu); - void onProjectPartsUpdated(ProjectExplorer::Project *project); - void onProjectPartsRemoved(const QStringList &projectPartIds); void onClangdSettingsChanged(); - void reinitializeBackendDocuments(const QStringList &projectPartIds); - void connectTextDocumentToTranslationUnit(TextEditor::TextDocument *textDocument); void connectToWidgetsMarkContextMenuRequested(QWidget *editorWidget); From 3745394fde2945359777aff7e0bcecb88dfa36fd Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Sun, 9 Jul 2023 09:49:57 +0300 Subject: [PATCH 31/31] Bump version to 11.0.0 Change-Id: Id20c9efb437a919d5d8a2f97b873f21468b0c5d9 Reviewed-by: Eike Ziller --- cmake/QtCreatorIDEBranding.cmake | 6 +++--- qbs/modules/qtc/qtc.qbs | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/cmake/QtCreatorIDEBranding.cmake b/cmake/QtCreatorIDEBranding.cmake index 8f985e5986b..42ad51bcfd6 100644 --- a/cmake/QtCreatorIDEBranding.cmake +++ b/cmake/QtCreatorIDEBranding.cmake @@ -1,6 +1,6 @@ -set(IDE_VERSION "10.0.84") # The IDE version. -set(IDE_VERSION_COMPAT "10.0.84") # The IDE Compatibility version. -set(IDE_VERSION_DISPLAY "11.0.0-rc1") # The IDE display version. +set(IDE_VERSION "11.0.0") # The IDE version. +set(IDE_VERSION_COMPAT "11.0.0") # The IDE Compatibility version. +set(IDE_VERSION_DISPLAY "11.0.0") # The IDE display version. set(IDE_COPYRIGHT_YEAR "2023") # 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 01dd13cc9de..c2557d15af5 100644 --- a/qbs/modules/qtc/qtc.qbs +++ b/qbs/modules/qtc/qtc.qbs @@ -6,16 +6,16 @@ import qbs.Utilities Module { Depends { name: "cpp"; required: false } - property string qtcreator_display_version: '11.0.0-rc1' - property string ide_version_major: '10' + property string qtcreator_display_version: '11.0.0' + property string ide_version_major: '11' property string ide_version_minor: '0' - property string ide_version_release: '84' + property string ide_version_release: '0' property string qtcreator_version: ide_version_major + '.' + ide_version_minor + '.' + ide_version_release - property string ide_compat_version_major: '10' + property string ide_compat_version_major: '11' property string ide_compat_version_minor: '0' - property string ide_compat_version_release: '84' + property string ide_compat_version_release: '0' property string qtcreator_compat_version: ide_compat_version_major + '.' + ide_compat_version_minor + '.' + ide_compat_version_release