From e46ee312dd567d126023815292e4e61999c48133 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 10 Jul 2024 15:25:22 +0200 Subject: [PATCH 01/77] Add some key event logging for OpenEditorsWindow On some platforms/configurations the popup for switching documents does not close when releasing the modifier key. Add some debug output to try to find out what happens. Task-number: QTCREATORBUG-27378 Task-number: QTCREATORBUG-31228 Change-Id: Ia882ce6be1bd235601f9c869b79fb8c15ab72a3a Reviewed-by: David Schulz --- .../coreplugin/editormanager/openeditorswindow.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/plugins/coreplugin/editormanager/openeditorswindow.cpp b/src/plugins/coreplugin/editormanager/openeditorswindow.cpp index 172b54570e1..cf98617261d 100644 --- a/src/plugins/coreplugin/editormanager/openeditorswindow.cpp +++ b/src/plugins/coreplugin/editormanager/openeditorswindow.cpp @@ -20,11 +20,14 @@ #include #include -#include +#include #include +#include using namespace Utils; +Q_LOGGING_CATEGORY(openEditorsLog, "qtc.core.openeditorswindow", QtWarningMsg); + namespace Core::Internal { class OpenEditorsItem : public TreeItem @@ -196,9 +199,10 @@ bool OpenEditorsWindow::eventFilter(QObject *obj, QEvent *e) } else if (e->type() == QEvent::KeyRelease) { auto ke = static_cast(e); + qCDebug(openEditorsLog()) << ke; if (ke->modifiers() == 0 - /*HACK this is to overcome some event inconsistencies between platforms*/ - || (ke->modifiers() == Qt::AltModifier + /*HACK this is to overcome some event inconsistencies between platforms*/ + || (ke->modifiers() == Qt::AltModifier && (ke->key() == Qt::Key_Alt || ke->key() == -1))) { selectAndHide(); } From a13635ca6b474a96259fdf147da6b24e2ba0d22a Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 10 Jul 2024 14:49:14 +0200 Subject: [PATCH 02/77] Application Output: Fix name of output file If a tab is re-used for a different application, the output file name must change too. Fixes: QTCREATORBUG-31099 Change-Id: I3413fca3a99757777db8cb771f0947f655d20ea4 Reviewed-by: Alessandro Portale --- src/plugins/projectexplorer/appoutputpane.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/plugins/projectexplorer/appoutputpane.cpp b/src/plugins/projectexplorer/appoutputpane.cpp index 3d489460247..29c84aece93 100644 --- a/src/plugins/projectexplorer/appoutputpane.cpp +++ b/src/plugins/projectexplorer/appoutputpane.cpp @@ -399,6 +399,11 @@ void AppOutputPane::createNewOutputWindow(RunControl *rc) && thisWorkingDirectory == tab.runControl->workingDirectory() && thisEnvironment == tab.runControl->environment(); }); + const auto updateOutputFileName = [this](int index, RunControl *rc) { + qobject_cast(m_tabWidget->widget(index)) + //: file name suggested for saving application output, %1 = run configuration display name + ->setOutputFileNameHint(Tr::tr("application-output-%1.txt").arg(rc->displayName())); + }; if (tab != m_runControlTabs.end()) { // Reuse this tab if (tab->runControl) @@ -414,6 +419,7 @@ void AppOutputPane::createNewOutputWindow(RunControl *rc) const int tabIndex = m_tabWidget->indexOf(tab->window); QTC_ASSERT(tabIndex != -1, return); m_tabWidget->setTabText(tabIndex, rc->displayName()); + updateOutputFileName(tabIndex, rc); tab->window->scrollToBottom(); qCDebug(appOutputLog) << "AppOutputPane::createNewOutputWindow: Reusing tab" @@ -429,8 +435,6 @@ void AppOutputPane::createNewOutputWindow(RunControl *rc) ow->setWindowIcon(Icons::WINDOW.icon()); ow->setWordWrapEnabled(m_settings.wrapOutput); ow->setMaxCharCount(m_settings.maxCharCount); - //: file name suggested for saving application output, %1 = run configuration display name - ow->setOutputFileNameHint(Tr::tr("application-output-%1.txt").arg(rc->displayName())); auto updateFontSettings = [ow] { ow->setBaseFont(TextEditor::TextEditorSettings::fontSettings().font()); @@ -456,6 +460,7 @@ void AppOutputPane::createNewOutputWindow(RunControl *rc) m_runControlTabs.push_back(RunControlTab(rc, ow)); m_tabWidget->addTab(ow, rc->displayName()); + updateOutputFileName(m_tabWidget->count() - 1, rc); qCDebug(appOutputLog) << "AppOutputPane::createNewOutputWindow: Adding tab for" << rc; updateCloseActions(); setFilteringEnabled(m_tabWidget->count() > 0); From 3557afe805a3524b058c1198f258ac13dd0f05cc Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 10 Jul 2024 16:11:43 +0200 Subject: [PATCH 03/77] qbs build: Update types metadata Change-Id: I0e48dd91c5c625d8f3391c2fea498f55cc828266 Reviewed-by: Christian Stenger --- share/qtcreator/qml-type-descriptions/qbs-bundle.json | 1 + share/qtcreator/qml-type-descriptions/qbs.qmltypes | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/share/qtcreator/qml-type-descriptions/qbs-bundle.json b/share/qtcreator/qml-type-descriptions/qbs-bundle.json index 9b2f233a4c3..672c79187f2 100644 --- a/share/qtcreator/qml-type-descriptions/qbs-bundle.json +++ b/share/qtcreator/qml-type-descriptions/qbs-bundle.json @@ -24,6 +24,7 @@ "qbs.Probes", "qbs.Process", "qbs.PropertyList", + "qbs.ProviderUtils", "qbs.TemporaryDir", "qbs.TextFile", "qbs.UnixUtils", diff --git a/share/qtcreator/qml-type-descriptions/qbs.qmltypes b/share/qtcreator/qml-type-descriptions/qbs.qmltypes index 941697b02d2..00c0cbb9261 100644 --- a/share/qtcreator/qml-type-descriptions/qbs.qmltypes +++ b/share/qtcreator/qml-type-descriptions/qbs.qmltypes @@ -19,7 +19,6 @@ Module { exports: [ "qbs/Depends 1.0" ] prototype: "QQuickItem" Property { name: "condition"; type: "bool" } - Property { name: "enableFallback"; type: "bool" } Property { name: "limitToSubProject"; type: "bool" } Property { name: "multiplexConfigurationIds"; type: "string"; isList: true } Property { name: "name"; type: "string" } @@ -93,6 +92,8 @@ Module { name: "ModuleProvider" exports: [ "qbs/ModuleProvider 1.0" ] prototype: "QQuickItem" + Property { name: "isEager"; type: "bool" } + Property { name: "moduleName"; type: "string" } Property { name: "name"; type: "string" } Property { name: "outputBaseDir"; type: "string" } Property { name: "relativeSearchPaths"; type: "string"; isList: true } From 2098053095a68fdc626e0b5fa8932b77a96c2f28 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Thu, 4 Jul 2024 14:17:40 +0200 Subject: [PATCH 04/77] German translation: Android, Autotest, Axivion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I1b3f5e768b687851430c4bf48d2b6b5a6e38b26b Reviewed-by: Robert Löhning --- share/qtcreator/translations/qtcreator_de.ts | 72 ++++++++++---------- 1 file changed, 36 insertions(+), 36 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index e21c369fd18..ee4d7c78fa6 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -10765,7 +10765,7 @@ Locked components cannot be modified or selected. Verifying package integrity... - + Prüfe die Integrität des Pakets... Unarchiving error. @@ -10963,7 +10963,7 @@ Dies kann nicht rückgängig gemacht werden. Android support is not yet configured. - + Android-Unterstützung ist noch nicht konfiguriert. The device info returned from AvdDialog is invalid. @@ -11169,11 +11169,11 @@ Dies kann nicht rückgängig gemacht werden. Cannot find the package name from AndroidManifest.xml nor build.gradle files at "%1". - + Konnte den Paketnamen nicht aus den Informationen in der AndroidManifest.xml-Datei oder der build.gradle-Datei in "%1" bestimmen. Deployment failed with the following errors: - + Das Deployment ist mit den folgenden Fehlern fehlgeschlagen: Install an APK File @@ -11397,7 +11397,7 @@ Der vom Kit mindestens benötigte API-Level ist %1. Cannot open "%1". - + "%1" kann nicht geöffnet werden. Cannot parse "%1". @@ -11599,39 +11599,39 @@ Installieren Sie diese manuell, nachdem der aktuelle Vorgang abgeschlossen ist. Finished successfully. - + Erfolgreich abgeschlossen. Installing / Uninstalling selected packages... - + Installiere / Deinstalliere ausgewählte Pakete... Closing the preferences dialog will cancel the running and scheduled SDK operations. - + Wenn Sie den Einstellungsdialog schließen, werden die laufenden und geplanten SDK-Operationen abgebrochen. Closing the options dialog will cancel the running and scheduled SDK operations. - + Wenn Sie den Einstellungsdialog schließen, werden die laufenden und geplanten SDK-Operationen abgebrochen. Uninstalling %1... - + Deinstalliere %1... Installing %1... - + Installiere %1... Updating installed packages... - + Aktualisiere installierte Pakete... [Packages to be uninstalled:] - + [Pakete, die deinstalliert werden sollen:] [Packages to be installed:] - + [Pakete, die installiert werden sollen:] Android SDK Changes @@ -11720,7 +11720,7 @@ Installieren Sie diese manuell, nachdem der aktuelle Vorgang abgeschlossen ist. Failed to start AVD emulator for "%1" device. - + Das Starten des AVD-Emulators für das Gerät "%1" ist fehlgeschlagen. Clean Environment @@ -12340,11 +12340,11 @@ und das Überschreiben Ihrer Einstellungen erfordert. Das Überschreiben erlaube Use a timeout while executing test cases. - + Zeitlimit für das Ausführen von Testfällen verwenden. Timeout used when executing test cases. This will apply for each test case on its own, not the whole project. Overrides test framework or build system defaults. - + Zeitlimit, das für das Ausführen von Testfällen benutzt wird. Dieses wird für jeden Testfall einzeln angewendet, nicht für das gesamte Projekt. Überschreibt die Vorgaben des Test-Frameworks und des Build-Systems. Omit run configuration warnings @@ -12494,23 +12494,23 @@ Warnung: Dies ist eine experimentelle Funktion und könnte dazu führen, dass di Apply path filters before scanning for tests. - + Pfade vor dem Suchen nach Tests filtern. Wildcard expressions for filtering: - + Ausdrücke mit Platzhaltern, die zum Filtern benutzt werden: Add - Hinzufügen + Hinzufügen Remove - + Entfernen Limit Files to Path Patterns - + Dateien auf Suchmuster beschränken Scanning for Tests @@ -13028,7 +13028,7 @@ Dies könnte Probleme während der Ausführung verursachen. Repeat Tests - + Tests wiederholen Output on failure @@ -13728,7 +13728,7 @@ Siehe auch die Einstellungen für Google Test. No Data - + Keine Daten Axivion @@ -13744,15 +13744,15 @@ Siehe auch die Einstellungen für Google Test. Open Issue in Dashboard - + Problem im Dashboard anzeigen Open Table in Dashboard - + Tabelle im Dashboard anzeigen Copy Dashboard Link to Clipboard - + Dashboard-Link in die Zwischenablage kopieren Show rule details @@ -13792,7 +13792,7 @@ Hinweis: Dies macht Sie anfällig für Man-in-the-middle-Angriffe. Unauthenticated access failed (wrong user), using authenticated access... - + Zugriff ohne Authentifizierung ist fehlgeschlagen (falscher Benutzer), verwende authentifizierten Zugriff... Enter the password for: @@ -13830,7 +13830,7 @@ Wollen Sie "%1" mit der Standardanwendung öffnen? Search for issues inside the Axivion dashboard or request issue details for Axivion inline annotations to see them here. - + Suchen Sie nach Problemen im Axivion-Dashboard oder fordern Sie Problemdetails für Inline-Annotationen von Axivion an, um sie hier anzuzeigen. Fetch Projects @@ -13882,7 +13882,7 @@ Wollen Sie "%1" mit der Standardanwendung öffnen? Add... - Hinzufügen... + Hinzufügen... Edit... @@ -13890,27 +13890,27 @@ Wollen Sie "%1" mit der Standardanwendung öffnen? Remove - + Entfernen Default dashboard server: - + Vorgabe-Dashboardserver: unset - + nicht gesetzt Remove Server Configuration - + Server-Konfiguration löschen Remove the server configuration "%1"? - + Server-Konfiguration "%1" löschen? Add Dashboard Configuration - + Dashboard-Konfiguration hinzufügen Edit Dashboard Configuration From 02ef7186e3dc411c26c7c46ce32d4ceaf2e22a2a Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 10 Jul 2024 14:01:12 +0200 Subject: [PATCH 05/77] Doc: Add missing introductory text for Debugger preferences Change-Id: I45a7fd99a7ad262bce389243d5fc177ce75b8041 Reviewed-by: Eike Ziller --- doc/qtcreator/src/overview/creator-only/creator-reference.qdoc | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/qtcreator/src/overview/creator-only/creator-reference.qdoc b/doc/qtcreator/src/overview/creator-only/creator-reference.qdoc index 03e81452f75..fa33afb2a41 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-reference.qdoc +++ b/doc/qtcreator/src/overview/creator-only/creator-reference.qdoc @@ -114,6 +114,8 @@ \section2 Debugger + Preferences for debugging. + \annotatedlist creator-reference-preferences-debugger \section2 Kits From ea3deac2d2111f92ddd3a7d40e9e2997a7e91a7e Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 11 Jul 2024 11:53:23 +0200 Subject: [PATCH 06/77] Doc: Add subsections for global and project-level Copilot preferences Task-number: QTCREATORBUG-30604 Change-Id: I88a75726bb3cca6bb533001f5b65d5c244db2a81 Reviewed-by: Marcus Tillmanns --- .../qtcreator-project-settings-copilot.webp | Bin 0 -> 1128 bytes .../editors/creator-only/creator-copilot.qdoc | 16 +++++++++++++--- .../creator-projects-settings-overview.qdoc | 2 +- 3 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 doc/qtcreator/images/qtcreator-project-settings-copilot.webp diff --git a/doc/qtcreator/images/qtcreator-project-settings-copilot.webp b/doc/qtcreator/images/qtcreator-project-settings-copilot.webp new file mode 100644 index 0000000000000000000000000000000000000000..8041f0ab93cd382bbd231760479c8b5423c7dd77 GIT binary patch literal 1128 zcmWIYbaP8!VPFV%bqWXzuek71vX3sXv0OH%5IvKUbAGtD%|`Zej_*b~n2+p~ApF_tDrTwrE$X0#7r&}B+l;=pG!f31v%_y(sn0u7?qLivm~ zI!#D+n9$6_tZZ~cm4gTev9o`0uOO9nkGi^U~b;6-9);ucC zMmbM|osVT6@{w3Gr$e$gag$Wln_si`Y8e_OZc1WxkE*cpU$XiLlhh2u$ejW|c9;7V z1iRZA8|^VzyE#34!P_~@m2c~tnLlI;^JTEPccgUJ1zEFxxnhO?C+{CiQ}8VF;aDfS zNHat_-^Y1KmAPxrQ4|JnKWtK*@2;d-ZLZ&c)}-9DE`@#eQ)<;I`) z9veK;wZHjoZsWfE{qtwaUusBJxHpyIV|~KY45N+;wqtgO3@6W9wEjSu=)G@@Hh+G; zo+xp|i*k2iDKi+S9p8GHrEu!ID_{ t6_VM9ViK%&%}&^3!Fv42$!+g-p6B^Vq+6~pyU4)s?$7gc_3M5x003950-FE; literal 0 HcmV?d00001 diff --git a/doc/qtcreator/src/editors/creator-only/creator-copilot.qdoc b/doc/qtcreator/src/editors/creator-only/creator-copilot.qdoc index b3ded10f5d9..8bcbfd723c4 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-copilot.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-copilot.qdoc @@ -98,14 +98,24 @@ You can turn the Copilot suggestions on and off either globally for all projects or at project level for a particular project. + \section2 Toggle Copilot suggestions + To turn Copilot suggestions on or off globally, select \inlineimage icons/copilot.png (\uicontrol {Toggle Copilot}). This also sets the value of \uicontrol {Enable Copilot} in \preferences > \uicontrol Copilot accordingly. - To turn Copilot suggestions on or off for a particular project, - go to \uicontrol Projects > \uicontrol {Project Settings} > - \uicontrol Copilot and then select or clear \uicontrol {Enable Copilot}. + \section2 Turn suggestions on or off for a project + + To turn Copilot suggestions on or off for a particular project: + + \list 1 + \li Go to \uicontrol Projects > \uicontrol {Project Settings} > + \uicontrol Copilot. + \image qtcreator-project-settings-copilot.webp {Copilot project settings} + \li Clear \uicontrol {Use global settings}. + \li Select or clear \uicontrol {Enable Copilot}. + \endlist \sa {Enable and disable plugins}, {Edit Mode} */ diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc index 2a032dabf75..942c42bddcf 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-overview.qdoc @@ -85,7 +85,7 @@ \li \l{Specify clangd settings}{Clangd} \li \l{Specify Clang tools settings}{Clang Tools} \li \l{Override CMake settings for a project}{CMake} - \li \l{Set Copilot preferences}{Copilot} + \li \l{Turn suggestions on or off for a project}{Copilot} \li \l{Configure C++ code model}{C++ Code Model} \li \l{Specify code style}{C++ Code Style} \li \l{Set C++ file naming preferences}{C++ File Naming} From ad07577e1fe45bf397e31183da49c9688085fde8 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 11 Jul 2024 11:18:09 +0200 Subject: [PATCH 07/77] Doc: Update docs for project-specific Axivion preferences Task-number: QTCREATORBUG-30604 Change-Id: I668f1e9cc89a1a138071f3bf103dde7abc6c696d Reviewed-by: Christian Stenger --- ...qtcreator-preferences-axivion-project.webp | Bin 5622 -> 6674 bytes .../src/analyze/creator-axivion.qdoc | 9 ++++----- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/doc/qtcreator/images/qtcreator-preferences-axivion-project.webp b/doc/qtcreator/images/qtcreator-preferences-axivion-project.webp index 4656ab1d80d7c8d1d087d895add8f9c08e3a4821..1a1520909f16c5b9a413dc8006bb334eeae31d84 100644 GIT binary patch literal 6674 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 literal 5622 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 N>j`g2YCL7c006!RsgD2v diff --git a/doc/qtcreator/src/analyze/creator-axivion.qdoc b/doc/qtcreator/src/analyze/creator-axivion.qdoc index 53735a9c31a..8f0a00e01ca 100644 --- a/doc/qtcreator/src/analyze/creator-axivion.qdoc +++ b/doc/qtcreator/src/analyze/creator-axivion.qdoc @@ -179,11 +179,10 @@ \li Go to \uicontrol Projects > \uicontrol {Project Settings} > \uicontrol Axivion. \image qtcreator-preferences-axivion-project.webp {Axivion settings in Project Settings} - \li From \uicontrol {Dashboard} select one of the configured Axivion - dashboard configurations. - \li Select \uicontrol {Fetch Projects} to list projects from Axivion. - \li Select a project, and then select \uicontrol {Link Project} to link - to it. + \li Select the Axivion dashboard server to fetch projects from. + \li Select \uicontrol {Fetch Projects} to list projects from the server. + \li In \uicontrol {Dashboard projects} select a project. + \li Select \uicontrol {Link Project} to link to the project. \endlist To unlink a project, select \uicontrol {Unlink Project}. From 60b0d88df92482f29ceda67ad383fe37b7bef30a Mon Sep 17 00:00:00 2001 From: Semih Yavuz Date: Wed, 10 Jul 2024 15:51:38 +0200 Subject: [PATCH 08/77] Fix warning message due to incorrect qmlls path Don't try to start qmlls if the found path doesn't exist. When there is no Qt version found in the project (this happens when you open a qml file without providing its build folder, or open it without the project info so no linked Qt version is found) we might end up with incorrect path where no actual qml executable exist for that path. Check the existence of the binary before assigning it as the path for qmlls. Fixes: QTCREATORBUG-31207 Change-Id: I626ace796401e72462eb850d4bd88c1ef51cf53a Reviewed-by: Christian Stenger Reviewed-by: Sami Shalayel --- src/plugins/qmljseditor/qmljseditordocument.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qmljseditor/qmljseditordocument.cpp b/src/plugins/qmljseditor/qmljseditordocument.cpp index 44c45f56dd3..53c064a99cf 100644 --- a/src/plugins/qmljseditor/qmljseditordocument.cpp +++ b/src/plugins/qmljseditor/qmljseditordocument.cpp @@ -751,7 +751,7 @@ static Utils::FilePath qmllsForFile(const Utils::FilePath &file, && QVersionNumber::fromString(pInfo.qtVersionString) < settings.mininumQmllsVersion) { return {}; } - return pInfo.qmllsPath; + return pInfo.qmllsPath.exists() ? pInfo.qmllsPath : Utils::FilePath(); } void QmlJSEditorDocumentPrivate::settingsChanged() From 6988462cd598694573b3594cdc4c49c90f727483 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 10 Jul 2024 14:13:56 +0200 Subject: [PATCH 09/77] TextEditor: fix highlighting whole words matches ... at line start and end. Fixes: QTCREATORBUG-31020 Change-Id: I3b26089ef72a34dedfe8846119f672e75bf03215 Reviewed-by: Christian Stenger --- src/plugins/texteditor/texteditor.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index 33ec2ed7e42..291074c23fe 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -4754,8 +4754,11 @@ void TextEditorWidgetPrivate::highlightSearchResults(const QTextBlock &block, co break; if (m_findFlags & FindWholeWords) { auto posAtWordSeparator = [](const QString &text, int idx) { - if (idx < 0 || idx >= text.length()) - return false; + if (idx < 0) + return QTC_GUARD(idx == -1); + int textLength = text.length(); + if (idx >= textLength) + return QTC_GUARD(idx == textLength); const QChar c = text.at(idx); return !c.isLetterOrNumber() && c != QLatin1Char('_'); }; From 6aebad8f801b7c34d694235b99513c7d8f3362be Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 11 Jul 2024 15:44:11 +0200 Subject: [PATCH 10/77] Doc: Fix typo "righ" > "right" Change-Id: I45966029de3b55d2be9ec0b9de85a6e3259d162e Reviewed-by: Leena Miettinen --- .../creator-only/creator-projects-settings-environment.qdoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc index db6aefeb64c..cd839283baf 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-environment.qdoc @@ -59,7 +59,7 @@ To change the values of environment variables for the build environment, select the variable and then select \uicontrol Edit. Enter the new value - in the editor on the righ side. + in the editor on the right side. To add new variables, select \uicontrol {Add}. From 130273a9a8f0e0019ac4de80ee3b4e415392b293 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 11 Jul 2024 14:17:38 +0200 Subject: [PATCH 11/77] Dumper: Ensure QStringList is pre-registered Task-number: QTCREATORBUG-31225 Change-Id: I597fc3368dab9c37e75008dee24ffec7b93bc2a7 Reviewed-by: hjk --- share/qtcreator/debugger/dumper.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/share/qtcreator/debugger/dumper.py b/share/qtcreator/debugger/dumper.py index 29fa29e0eb0..e447c639cf5 100644 --- a/share/qtcreator/debugger/dumper.py +++ b/share/qtcreator/debugger/dumper.py @@ -632,6 +632,9 @@ class DumperBase(): self.register_struct('@QList<@QStandardItemData>', p5=1, p6=3) self.register_struct('@QList<@QRect>', p5=1, p6=3) + typeid_string_list = self.register_struct('@QList<@QString>', p5=1, p6=3) + self.register_typedef('@QStringList', typeid_string_list) + typeid_var_list = self.register_struct('@QList<@QVariant>', p5=1, p6=3) self.register_typedef('@QVariantList', typeid_var_list) From b88f1332a86f17b89c14f12d7daf9fe5f5ecba81 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 10 Jul 2024 16:22:50 +0200 Subject: [PATCH 12/77] Doc: Use shorter titles for tutorials This changes the order in which they are listed to be more arbitrary, though. Make some style changes and update screenshots. Change-Id: Ia46bfb2a6f7e8a297abe07ad1f1026ce1d8bdc79 Reviewed-by: Eike Ziller Reviewed-by: hjk --- .../images/qtcreator-add-resource-wizard.png | Bin 13860 -> 0 bytes .../images/qtcreator-add-resource-wizard2.png | Bin 8385 -> 0 bytes .../images/qtcreator-add-resource-wizard3.png | Bin 10958 -> 0 bytes .../images/qtcreator-class-info-qt-gui.png | Bin 12215 -> 0 bytes .../qtcreator-intro-and-location-qt-gui.png | Bin 11404 -> 0 bytes .../images/qtcreator-new-file-qrc.webp | Bin 0 -> 9724 bytes .../images/qtcreator-new-file-qrc1.webp | Bin 0 -> 5148 bytes .../images/qtcreator-new-file-qrc2.webp | Bin 0 -> 6116 bytes ...reator-new-project-build-system-qt-gui.png | Bin 8412 -> 0 bytes .../qtcreator-new-project-build-system.webp | Bin 0 -> 5280 bytes .../qtcreator-new-project-class-info.webp | Bin 0 -> 7124 bytes .../qtcreator-new-project-kit-selection.webp | Bin 0 -> 11678 bytes ...eator-new-project-location-qt-widgets.webp | Bin 0 -> 6878 bytes ...creator-new-project-qt-versions-qt-gui.png | Bin 17152 -> 0 bytes .../qtcreator-new-project-qt-widgets.webp | Bin 0 -> 11450 bytes .../qtcreator-new-project-summary-qt-gui.png | Bin 13342 -> 0 bytes .../images/qtcreator-new-project-summary.webp | Bin 0 -> 7578 bytes ...tcreator-new-project-translation-file.webp | Bin 0 -> 6642 bytes ...new-qt-gui-application-translationfile.png | Bin 12059 -> 0 bytes .../qtcreator-new-qt-gui-application.png | Bin 13749 -> 0 bytes .../qtcreator-project-qt-quick-details.webp | Bin 6528 -> 6194 bytes .../src/android/deploying-android.qdoc | 2 +- .../creator-debugger-example.qdoc | 9 +- .../creator-only/creator-debugger-setup.qdoc | 2 +- .../creator-only/creator-debugger.qdoc | 6 +- .../debugger/qtquick-debugger-example.qdoc | 3 +- .../src/debugger/qtquick-debugging.qdoc | 2 +- .../creator-only/creator-getting-started.qdoc | 6 +- .../creator-only/creator-files-creating.qdoc | 2 +- .../creator-projects-build-run-tutorial.qdoc | 3 +- .../creator-projects-creating.qdoc | 2 +- .../creator-projects-libraries.qdoc | 8 +- .../python/creator-python-development.qdoc | 4 +- ...utorial-python-application-qt-widgets.qdoc | 21 ++--- ...r-tutorial-python-application-qtquick.qdoc | 26 +++--- .../creator-mobile-app-tutorial.qdoc | 15 ++-- .../creator-only/qtquick-app-tutorial.qdoc | 15 ++-- .../creator-only/qtquick-creating.qdoc | 6 +- ...uick-tutorial-create-empty-project.qdocinc | 13 ++- .../src/qtquick/qtquick-toolbars.qdoc | 2 +- .../src/widgets/qtdesigner-app-tutorial.qdoc | 82 +++++++++--------- .../src/widgets/qtdesigner-overview.qdoc | 2 +- .../src/widgets/qtdesigner-plugins.qdoc | 2 +- 43 files changed, 119 insertions(+), 114 deletions(-) delete mode 100644 doc/qtcreator/images/qtcreator-add-resource-wizard.png delete mode 100644 doc/qtcreator/images/qtcreator-add-resource-wizard2.png delete mode 100644 doc/qtcreator/images/qtcreator-add-resource-wizard3.png delete mode 100644 doc/qtcreator/images/qtcreator-class-info-qt-gui.png delete mode 100644 doc/qtcreator/images/qtcreator-intro-and-location-qt-gui.png create mode 100644 doc/qtcreator/images/qtcreator-new-file-qrc.webp create mode 100644 doc/qtcreator/images/qtcreator-new-file-qrc1.webp create mode 100644 doc/qtcreator/images/qtcreator-new-file-qrc2.webp delete mode 100644 doc/qtcreator/images/qtcreator-new-project-build-system-qt-gui.png create mode 100644 doc/qtcreator/images/qtcreator-new-project-build-system.webp create mode 100644 doc/qtcreator/images/qtcreator-new-project-class-info.webp create mode 100644 doc/qtcreator/images/qtcreator-new-project-kit-selection.webp create mode 100644 doc/qtcreator/images/qtcreator-new-project-location-qt-widgets.webp delete mode 100644 doc/qtcreator/images/qtcreator-new-project-qt-versions-qt-gui.png create mode 100644 doc/qtcreator/images/qtcreator-new-project-qt-widgets.webp delete mode 100644 doc/qtcreator/images/qtcreator-new-project-summary-qt-gui.png create mode 100644 doc/qtcreator/images/qtcreator-new-project-summary.webp create mode 100644 doc/qtcreator/images/qtcreator-new-project-translation-file.webp delete mode 100644 doc/qtcreator/images/qtcreator-new-qt-gui-application-translationfile.png delete mode 100644 doc/qtcreator/images/qtcreator-new-qt-gui-application.png diff --git a/doc/qtcreator/images/qtcreator-add-resource-wizard.png b/doc/qtcreator/images/qtcreator-add-resource-wizard.png deleted file mode 100644 index e76223f5b20f4abd7c0c00415161a6269623bf9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13860 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 RGcYhPc)I$ztaD0e0swt!5kdd} diff --git a/doc/qtcreator/images/qtcreator-add-resource-wizard2.png b/doc/qtcreator/images/qtcreator-add-resource-wizard2.png deleted file mode 100644 index 13246171a3b5a604c5e99f6fbba6befd15b5ba02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8385 zcmeAS@N?(olHy`uVBq!ia0y~yU{+#aU=rbAVqjp%tmfxsU{L7rba4!+xb^n#+kTnv ziSh+|HE-E3aGZTg_vB=cz+B;1DL1G1c!}h8eRr9s60}g`)Fd5Eg&LnwuiVF8o!acB zN4=HJ7UrJxNK*HxO5aq~^>|0=r^K-|KAi5m$u01UYv6)KDnWHE4-fr4Yj@`J zn{#*Hy}kRkcHa+&o3m%noq7L_-1pf(&(2+cd*frZu4BiKm)|Wqo%Q=>b)8wnLE-#q zr895y`PqG3d2>-a-@T+6N}DW;U$5Q%?~dBJ(uF~PLR?&2T-c;cy+QO@AwfaGz|A1$ z6&)lY$)&Tt-m89J8!&Bk`1*e@-0h2mTwPpT!Xh@Wi{1V0zt*R7*6;s(Xtyts0|~Rm zY(BL8&{nKkbT0H&ry4~-h@Ba!btc;M@w{@54 z>Zt|u!=^8kn`uwDH>vh>IBld3_i|=RlY5m%NHh-(!8iUi8_O0n( zwx$aT3cj2eu>9Y(`~R$WE(_gNz?&7eSy1J!VwU#X^>iqeW)Oo5b zl$4Z$Zf<#1zUJ!s$cLBr1aQro|KYjcH2=w|>(h?PUOV@{m2K~}n{k=R-Ewnm zer}YyeNwi3})8y0ugYwMaf2Sv+6ZXH;qRD|t^KSFi&vu+LTbI_^(Q)N<#L{@a zO=+#i-Q)%+fqxt+MHtJP)rb3VeQV z%~YQ)x}X1SS??`cciF(6b4F#_pR=bVuRgjN3`%%f-dD5!I<|i>zwdnf*T3)k<^S!T zw14*0Umx=PQ$o+5Rb8vFw{t_?x4w68?1G*u#JzoTa`Myq$E!9hywf)=eDf}wzss4e z>|52hgrAp-`)6Pk?{2*PRvTZQ9thsyZw)YoBr8kM!J3weD|lL zqob#y?PK@@Q0l$1=2J`OA^u%zYaWDjb#!#->;`$Zqhpq;l9JLQFndL$5*j;eT1Q7m z2Soh!;gV3Z_=xisx;q?NJl9NT$O z9M-evd)D846gF`j z?!aeGAweZZ_qBBL{5h_ziHt3um05aJjh$gl-dU?ZpRD=+oSS<5--El8yWju)9DeWr zQ}cCo-=xF;-<^Fu?$2g^yYFYSm+S5MzP0;*_H}3dx{R7ldFEcRF`luJFTXUOJG3Ou zWvx;u$F2A>v*=A*pOrrsm(Dg^7#6wt(c?E$W}IV)&KAp$wJ%*(@T9d@T%C8b>FRfW z(ecOh8@Zzx45rK~{huFS`C|1&(KY_{Z}%>bul*nY|KimP>(2do$-Xd+_4&U)yVvje zyFb7FPq)0({1xGw7xjNDllRKo*k$)X`&Yo8)-TI0ad$^&Z)?A1`ygQ?l-so z{mkq4_`U1i&c0svcfXtLYwi5n@4egqKfiYJ`L;KIPJH{cS0pR!i{bn)^8%O`o&Wvj z&>@wm(z9B3qbe1nAI}QiwC8fgqDfceay|xlKmYpb+8R0Q(9H}9yxG^n@Bh2E{_pc_ z{XZ|aUTa;gAOGuJ_`QGk^8egq-~aKx-4Flz%C}4He|@{Z_wPwv^E-QT-?T|@&zDa* z>ou+Ao&lHX>L-VSsyvTgUGwAIs&Aiaq@({`U2{grl$+t&inP$bj_pVH|M+LV|L?oy z^?#-7-%qRFp0``EWKGz~sEbPy?=0Okxosh@O1b#e`6fBJxv|&Q{4iVTxBO*c{3v$=<4sS*)-9PA_V4bRQ*&2EGHh@&U0v#^o&EcK&69;| zlW#lU&$`?9RD_u!>l#A~clg4X*2+Wcgj>NS45XBS6dkbQBTEb{1uIcD9L&1*Ze{ZE zK6Br<-zG6IWL-;mbIV?O`|8-=-=P8v^it2hyZ>}51H+Xyj=Pf|-S~L3_VG>C?{9BU zt-e#U!8+zw*D`VSviEnkzTbB(B>DMH+wdDZs~=TVmlZwg`=Kc;oVc}`|E!z8r@8%m z9)<*#yhi!^=C|Lu#b#go_^ovPv%N8IKZ)4powfWHvoPXu5U>84YwzL$rDq$Ib29X} zobAfLl=XG?tJRUat76~1+UE2t?)RnTC9h_A`Y${2l{frC=DQdje=ghv($Y7dX z`tD%)XKRK9X}lrXb{AtK85(9C6*#MFRunmF{>{S6D_f6Un)z~S?&jCU(Z8c-&6hfH zEz9e@Nu7=D{wuYoUy4qvz0qu!pS`9yC)O|O=k_*>6$kglslK25^&`{Qn)~0r-U;Tu z=sDYR^A?Ni|EtpyW;2;~^Xh*W+~j4dU9)RiMb{tI2 z)!O@MR>($FW8QRH zY}c9#S&cjU&+OXG$NxC(^1lYn{R@}xn7it8*d4!bOEceEeZEw3zx1Z2SKO2@AAf4TL$!`BJke&N%_H=brZ(jNPsVb`1Ow?&uT%0D_uzGdF>?Qi~0SQArGsD1xQ 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 Jmvv4FO#tjcxA_17 diff --git a/doc/qtcreator/images/qtcreator-add-resource-wizard3.png b/doc/qtcreator/images/qtcreator-add-resource-wizard3.png deleted file mode 100644 index 1ca3c01636e5134c555c24d6f620f1cef31a6be9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10958 zcmeAS@N?(olHy`uVBq!ia0y~yU{+#aU=rbAVqjp%tmfxsV9=WC>EaktaqI2fx5YBw z6Xgr`zT8spV7xXvT!q1IMiq-k)D#ylrQ|LZK9$soJUNpl>UeL=QdsM{)i-(hO4;SS zdZv+{Wp8|hv}Z2aF`@L4jp^FUX==qw-iXijQ`5gKnPN3}-;0uE(^5}voa=K;_WSno z?c2|{Gr!}rV3_~DW|7SIvhQW$2ku?pA1m{2*8KVN=ghgYxB7dHS>mI44^xwplJ4*O z+ZrIrOxjrMTT*;@{7WtBsv2btR6RIdi7@^5w&y zo-AD*zV4XbTsxx=T>MWypSbGYzyJS*pQ|sg)a;MlHO=DxmA~wLGFJDiYJUA?=d=5o zk^O6;`=ZMC{N3egyQ^L#TzwR{%)fq%@$HYRKR$A|64tN%azgoHmb~q~sOKNwS=m=T z`7x0>``lyoW%KQ=KmWP;a(Vx~+cQmS|6g97c1u`){*M128kyVsw>__X@R9lZygb`d z%XvFD{HXPxpR0en=+VAOo$1T{{imx6C`k-FafertHr2H_|j*%%*aB*>QX^Y<+VXdI#J!>eQf<2WyHEb!uh+Jp{`Bp3 z{{O4-f2THUC@CpzIydX|F8A`f1NeIU!vja;*#?F>AKzTeqFZzd->5914Emw zRcEE1EK0O~Xt!3b`~T1E{(D!?cE`W{85CdpaoxV>cQ2%vy}5Y(-=3}E7yswmUai}3 zZq3slBGV*ZOa&P>wZ-bI`M+oPPnoX0)Hyp~b5yUwOTNJ9mw#4onY%=7S(C(QJ+6* zMkd_Yt*oS^G}U+Yf3T{1XStUy_{#VHR`=8CCpRsQysI`LMm78V-2dgjjH34JyL3#< zw&LSa_umozdAqy!s%$=YE_iD9{{)NU%QvN_eqX&o@}%ndj6>m{wbxrzy%qg+QAkkm zrPGIx1?mx>W?Ya_HcRFO3P^wj688?@H$gae>*R`&# zk%O3MeI+z#^Qm8%C*!8b&AGHVeUG<`OUi>;rYG2~)+C!`Z=H2@)(ky`nbAk0dl#6h zMq1nsdvtw`%vrCkYu+3ajbE{)F*J0VTz7bH(b}&+zQ~-_>RGWg&LFdMwM_e_#p+5* zi;~xVU-VEx{)NG=>dliHXLsdYTqk@{`0$#@Q1Rct)CH#aZ;KTA}ue)ZH3)60JS^gaCM=<+Y?PkycEu6fG3=E?#8Uz@^<4hO!v zwj`-sb8kjOsNS!g=GnI5x2{#xSUnDEy>D_Rp5=_r&Du?$y0SjLSQ!b5fu&iz@-H?l zn?i7!TKKp9p5B|228ZPdVwDWm!b;ghC-OabEb5FU;WIu2JGfgF>O_`Ek9(!I7 z+3d9M``-6!Uq1Fct<|)>;JCYsOUmqYThr{d^O^LOl#~{wO;wN4_)~ViMN-BKl!Q#L zgYyeY-tk7tM<8~J^z}9DelZ2G?ACWCt`NpPlyPm}-}kHx2_077(<}uT7_!6|8fLLF zEJ$Mn;}wx$A%??iBHveC-z~$zz+lSF;Bc0SAz(8D7+=u=3tt(~{HvTg>LD-VMkALO+RC^uZjP@ z_x(zs*VzkJJs*RQ_C@Sl6?gmo^Mfo7XM;AItxrq6f44jT-pcRqYtCxTw%nJyy5L~Z zS<}^#@u%VzzuB^;s!P*Shwx^h~=xqb#DHgKiEZhqVmwyL;AH!^13K6CAR$G@?an=9}B zn<{F#JE8oXQ+7=4{p$M9Pfq2{Z{L{pJJy6Hp~ijlqVkn~@?LoxyY8LQy0?8-w#Rxc z+l@Q6U6W4y&1+h zS+m3bo%{0Y_s#CFO2$iTT$ZPt$jVq8c{g-xevX!=|J_-aD%biPejOTIrF-LhM%Ych zb;TyDk8cdx%y6UYd)iaI&#K!E((i3QB%SzM*SJ`-;A(fO-S!{t}M*Y=vO zo_}~p)Y(rr#Ta@HXM{cc6j^k+>f`5`U5hPxpPtJI`_*jao!_XxHY_=Q^R*wd+f=uU zhW=NIt5dE0vn=sl=&Yr#y1NBGuK)bC@ZyH+O;@jf3cLT^^xB%Z)lpm1*47y?8q7Mn z%C&y_7@cEqi<-LF0DHFXPvJ8m;LXv*F|1k z{pz{czfe9k2Di;OgjUVI`R(~983wn_5_1pDjlLZrVgBl)Wfnt%Nq69#Yui}u{?%!i zuKp!w$`G(wqVDW1LD|(6$v63K6*7Q|0}wXlW=QD1rn5hj16+>0xiaf(x%{qO-}ipE z+QiT>%k;^tulKzFSABn3Z&Z5TkzJf2U~^mK=B(>+|9{oje?GDKf7*5C?n=Kl<&z{?7k@YW|=3+VlT?x^MmG%f9b&5vjH-_lxd%;LXIaBJyqH z>iD0x%I!W@=RZGF|MKik{hG(=|Ns8~`(^#UkIwyjHatJTJXO2%pGy3lby;6k>*w$> z1Z=)#sy$`Zg%wSkdHw#MXV%w#-g*DWGxxg3vmeg4|2I3o?&a$LZ*Bem zZ9e&1Zk^1jtZV7DstgRKt0Oj_tNkcFz3%5({{O$s<8$_W{it96TD|W1+xh>RxBtHy zet+k`9tu;`Q45d;ad1+f(z`);RrCn9$$EeQ)Cb^9Jv#U%l@4j;{#|KQC{d zE~FDwf|MNBJyB%{U`DGf4~0M{ZO7?fBwwNuCHfwO|9>)NIx6(vZs3M ztDxmJuKl;K%Y@He81XoWSO3hlmvMp8(PeLi7$m&TT9udl-<5q$z5e~%g2E54*4KXi zS^xXmqqE!N{=Lm_)wKWI{{GLO`Yx+$)AxN7-~ajR|DC_jsF&~kUR(YBYt7UbYHQ2( zuarBxYOUFwtJ!T|_I_L1eWdiPs}DnhOxCs6@&C`A|I=Px_pbk5CV$M|M|1c8xO9F0 z=bQHbzNP>Fy#4>(`r7B*`+uj`|9&W5<|{j6#++N5%k$rFb)Eimk>b*eSJpg<`)yDW z7Nb)2)nL=rf9vzP84@OEhh1g2GWmD9{QrmZ`+jbm|G#;^@!u=&I#*uUcuRHl8?hf% zF(r$<+t+pp+rEg|)_rV#Tgc{J-*36su3nPndU)9cL_dAQ9%LxezN?JhFeJkFakbQNH!KK$%6qJ;j)%Pr15jjErY}NdZ zjuQtAXR&5Y>*!b!xgf2xqhr?54R$t*ei`rjB>y7Rw(!XQs-1i5bQS*C%(1QhRxoFJ z{@N!+&yOuVob8dudU4bAygM(;WfO0j?wi%o(Gz?~x@(r{IeEE@kA9P9nUl-Ht5Yz0uymtY1*Ynoi*;n{6px*QR zo@K1;m4SkSHy6m**ZsK~9$#xa+d$Rl{8`C+0aw;+{5xaakM)tu?FCGCd0hXM?eMiK zDAG%P+P{g5D$Y$flzwx&)di>W(BiwDr+W?7eih&9Ef%kn=a&BL?@IePk+bvf&UiP! z|4x_b>qot}=i2TpUHi5FT=B)2?REQi&whAv(yA+SFI5#RE)F!DsTo)KdS^w^GttN4 zyGpJ9E$`^aNxQ7|HX`fVv>!Wu?#Ms7b>-dsw8dVR|E}&n+PRe3WyQNWN5g&MoLyYZ?EGy$9?@REN60GdM}9?&m4AhE;O1lB zyAr<_8i`E}nY?4u6hEC@vq1A#ea52yEt1o2{rrOb~wiTc4;tu`w^WwENceGbUDk()PWL=9m6(8U|eV$^RiB8#qA5!t3-mL0g zt}pdWPcZLlciZO8n~i^N$@cwT_^H3*)Y<7)|8>vJnQJ~X$SV5xqC^wTeHjs7yLMjf z>Ns&j6_gww|0s;yd0)?GowS?$($F2Z_m(96I=tO0uTlTM?$K*^--(v*n64jJ#a;9L z@xDokJHK&F?!9@)boJ$iN8T0o(*G{jy>t4rqS!esWcszJ&AYhU>*M{^(&9dc_BHc>up}nG)`Xz%D;Y~knC79CH3uf^Q$_7f`X>qjP9GQrgLn+ z8h?3>@V{{JXgXK?6#h&|X1b36{eG?^1p{$}R3;~-Vv?-cicPuRBC;7s+qJ3HG! z{k@jUnJ?x2?pdbaTBRHiw7JGc(|So->%=&9cfpAVh5eR?nr64p$z0vnFzaZa9Jo;7 znR9P(r1ejZ6_G0x1;Fyv8~eE zcMIPN){~Rc5zoJ~uk`JNjuStg{rLEJ{k~tXUf*odOsvW~S75bvRpiz5TLn@vl5cD* zrfmLL5LC)?WsR@-_A7G7yN+#nwRvWCap0`4RhJ~Z)XSn==X^VQyyD!1r>%ERFJ0EM zdg@zo-)H$cM@&<9Ud;Jx9Hp{#)zL@amc%XnnzMJ~rJLt=Zu)yx@6vUzBI_CV_PjE^ z5@dbjKmY%&*IW-}|CE1x#lQGfV#%}@DsfA`zUhsA+j){xVdm!D@BV0acJx$&%Bt6E zB5k9>;+J2`-u|faQT?;?XV$Xb629E}CaUVu+UV`p`awn0!ZvR^DSEh!zvFjU%WG%6Nc^2>L>uaLcmKn_DzP@<=#@YI*YH~F%pPhR9T6~q)r75s zCqLia?ZW@q{o||d^_ogXW|faR)#ECkPQ9@4Q2pV@mnsjv+_Ea|>G>@$gY%x{%&^p5 z_w!0rSz6xQE5*;>{+V-f<<3_+cjH&}HOw*<3+LJ0KY8PdB{D~P7nUStp6$Bjb}9dn z-qd-t~pZ>Sam|{YH!f(;7?jRji%f^@kZ(D?5JInx=h#aYdh85wp0G!HU7en z?b@F=U;lNpce#uGK~Kk5Hj%#$-_a|$n-UdTxl>qBa`m#WGtbv7Ta~r?m@ZO9Ws{`)d z&wb6bkj7S`6*!SlYIkNf!XjL-A> zk6V^+X2G;_m&YxtRhuCwc$1BD`Q=r!LTi`h&X;<;Ipg)7ioZ*@&Wk#I ze*4?hN8N2RMVFpCzVm2t`pZYFQ||NqvS!M3_9rsxY|}wI)_-Sa8eayNy`aR9`)ua7m*?9I*YxMV5)9Z}HfO36Xb|yco$2ex z7h4aUw_BTbaM=}Dfz7Nw$8UAkwYK@0_8)FuIl8|;|C?aI=77yEE-AOKtodlgq-y&5 z#>V7(%{RZ5y}c#6@2dYCi-&(Sl#DzMfr`z;o~6g?Jl_9}|o8iFTNCpP$ zU1>jkospu9l;JwCHqatL{r!D8Bns!% zeDZ`SfhNBLAF`*}Z)0XKm^7>O)fH$W0%c05;Y+=zgFN;Up-+Al3LsEpN;;&Hk1M%8e|huRpbdy}^-nZR#v$MurFXbQl`e z8qG5Oy@8n#9M}Z%11PaV^E4j=XBil-tjWzNtW@>fY`1-V zSpGVb=~-`=-{N=svdcN9^5v~xHJyiYP6{$Gn08ORGPl%Z;XiT7$Fo=&vc$5cfv9U@ zt0M1eu3Wz8b;es0u|<{7rah|H*PjwwpQDpD-Ru0cs;RB#crG42^>?ZMl!%O!@OiU# zMy?k(-&&Hi>DHy2Ui}VxH%_|k!4R-H;`QFhwMHRpB3JI)dZFW%+X|bz>w+V1Eix^? z6?*cn-`eZB*V2v8i^Z+D?yd5Aey>*W`_7$Lr=1J?Cp6c#H!5!5PsWB>M-vuDu5?^^ zE+Ht}E0XsVZ-eSyl`T`=G=x1XwLUKvud(-2iiP&QRb}3{=ij|@sq^St{d3o(b3DI^dcBnw~*v z8H8a;oJ8R@hQZM>dFxy<&BR{yrq!;?+LpF?-fWBLeEplg$%!eqCHG(36}M=8Z@%7D zw)^LfKAn0e>hblpt=FRuAJaE+tF~bb*etPi=hF-89#w4&$Pc@==0)%RoqHzC-*Ls~ z*2$paCtDNl>IdHW5wJNb*y;3|?dcK4XSvR<+<2onDgCMRp3MwzzRW6pbHk85>9cMK zU;I|~YNM-5!u0z%w`PYeTfF61VwAGs+=X+$d8HlpnH#wISB}w#%QTN0FNXlu9q&fNVukG*FHoV4=(zQTB;^@Qy+)<({}dhD~B^!=)- zX`64J;a#${?^05E`suRG#b2h0y;?i>?Apqu5gni*+O{tDl3%MMQ=RR+&rZ_LySVA> z3h%AQCOn!KGJE!08|m`h-%7XKx)WsbJLb;MMNAuG;(OvZPK+yFmUi{kX;1e#(XX~_ zztY{dZ|W;~(Z``TXN7J&*JZm(;_Rtdy)`d77FKT+=fAq@@};QQ4b@Yuo~}%qZ1r~S z&4{QDzSwd(Q*O|_#j(9NiormEB2_;(aH)x$?IMGa%<@?_w8w>lhr0l=X;w^ zJvDo^*e?AmXZnwcMh9+7`?@1>^$vGieW__NdOBCuygOxWoW5VC_-)^f zo2cQO_=z|Nec5aY5QfQ9aWz zo*O)e9psxf+?3`AWn`^?S6v?)g2&21Z3<8e;PtA=a6eyA-RicPfuRRl-9cqRO@;#o z+0*WuurR=Kqv>gA1r5!XsI||F=-k4cJ1?F4bSTDV(U+?;Jw)=aQE}O;5ki8}n)O0-ZEW1}+wUawo!*j0Y!lzd* z6}Mg5yyK4K;#Dy7~+X`gRXgLl`95XPMgCzIEt%nGv=^PV}(TMT@Y-lF#Pfy)o-* z_2e-50xsoHZ~;6!VDl~Umr>tUw!ZSHxUl!X=IxD9k0UP52;1I0MaM4Stk(XFh>f11 zrmJm#P0evw-`%$JXs|d}_QO|C3i6(?H}I~FG&VNoJ2KkE z)DxMq^PB9uyAPKhdNjBC$>#4z)77`F`z3mPr_lZ7Q+Ki2?d#mP!ElDW^Ie9k||O{e?w{3wfCK%G3gIUCfp1OSHyW;K?^@t zV9r#Z4FXNzyMX#^f`XtyIhT~>*Vmj5&*EzV>(9RSW~w%v{gE3qB;9d>BkS5_H?T&x zz|DH`77radI!-*82_1poUV4bn&&MZ3w(;@*57X18@B7vmUtcZFZT;iNBk@}PFVUO- zEL+&o!Lu~E_5VERzw0k6q3E0&XIITK{lECUynSijZSLKXp_|KoK&)4mIa_s~&!hk1nxCuXE&n~a znVY}wdB!!re{!I{tjk%c#Ise8PHw(EZ`M-q;QiKzrms&G`_Gwk``e+sRgqw8GR|66 ze|z)r;r@HOs43GPc}Zvnta0m)wq$$9{YMJOAFr`+4@lR}k;&#%_LOe&R*%j{l3c z2AaP9)Gl9NpPR6@>dV8Ak^XTv&I(>z6L!>V-wTk_jhy=MfaqhtHhV!PMzPTPBZ**%5Bhb#KB?|OHhG`hIEG%Kq7;Hgmlsyr; zx_!-|@SR^x_gy__L{o2ANP-=+Ykajg|Ycun+LtkIWethOF>c79lcxU=bi{OfH z-@bCs-MU3Sb$-{f@O8W2gM&=m{>Ph*!s%>cuL39O*Dtbtn!Vmm+WzZpd)c$!Is>-t z`y{L$biPgV?ea^nD<5-*8yWLEg44o_?+!nNQui0JYwtg`HoxuLbmOWUbs=AuzPHJ- z_41Yc21y)`qc=yrpJRKEDL8+^%kP($)NWliWy{KpgSWS{*OkZaO|vb2bL3^?*6iSy zQ@#YZcAj@*4$rT7_jA)%k?T9_63yKsHm{mh@NV^-Oz)46A3b{eXrAVCP=a}L=Hi-A zw=I|QCw#Qd`gBgJzh%nxHDTwaYIIhopWS8f|IEe5%h|83aydW6&(l8C>f@KE=WExR zvW1y`7HGLE6MA;ltH`74KS^bUc|H%@?BbHreRa*vn>S}JT>3XI!gizatf{lE&7D*= zC3-{2(rn)wXJ5_wy4byczSIr-{Ln?0G+!?FQg?H@yzBGM=h|sL z_|aZJX8*sSm*JLwkLpxf?cH@Lzb&waA2hl)|GZx59WGb*=E*j3P-=%6 zab?ZKt82RDtA1?!o?i{usE3$q*!KN*_KkxZW+$e1yFWN{{;p-^vp+L8i}%U=eweHC zCSl8L`|{(EgdsiU?(TAbKR-F!sxMbo1~1>9d1zg$EYEIBL&HEDrheT&hgSOkD_f!P zT))Pk=X;KK;`Kv(^M0*dZ}V^C`QPA@CFQZuy^2HskJNwP=6BF9tIMFfRZm6Vi}lvhMbPq-HU|0cin@iS+9 zelT+L`JcbSCs*_C!o%l$@^ueCJbcbC|8L{rcKcgZ0{YjXfXmI%9wKLgY*QwtZ zU6Xu}SxIT}S=)#IFmw1dqTcyo%!;`w3qElzTMsK?7Tf6Q(tDWv-8R9=()|zuz+Xc=`Z#S z3=M|PEDQ_|9SjT%PRI-aC8&siQvKiS|IPm%|NkZaa`^wl^>SW@`8&@{`_In6z%g<8 zygIYJFV*i&m8<@9a-mJ!ncv#-zjYZI7#OVYm|l;WyzkT0^;c?R>cY+#&lLE1QoY{p z@1s-4FQ?mo|NVUGdj7kAAD5mw-<=wD{rA@8{B!TW{BVTZ`R#db|Cq_AB9pzU9?f!o z`Eq@%N$}2nNy;w+YQ#1@)$6~p_s72E?)MXG?;Ga4-*xE7x$X~JzkFHP_>|vvuG?QO z1_qamKWq2@Ek6}6Z8tln)W|C(|Pi@?h8bQU|9vut}jy)-YM!f=>`A4lj-tznPdH;|1XB8*)XI#0r zsbob*m%3E`+0F|c*Ih+oI%ZeMZZr@ud|I{oZO^|*(@CEXJ*z#F$El@$^;no#$j0^h zN46=2+_GEExg%%(Ba8Sg?|*(@X<2r2SJJ-a-S@BO+&7wRrLU9{<@BgiJ?V<-|6199 zKeotEzHv?Ompp@l+a`{gQ5|xw&$bT}MwJ)7ak;_|sz>1oYt z@y|!MWc}lq`$wtPRv^i~?T5}aLB*+WlY{_r3JSTj*=ryo5eN+4s^DkBtu*GBQZatiSN#`@aYMm-TCZ2uBC$SpQmUSvkSy zzxzqQfZrV5+_(SiVPHs5&*B$+B&Mjy#K0iTDflR|<7#Kjpco-ZL zrQ^#kKV?8t%^?WY#xXILg@FN7+B66-;$^gOFff4Cv~bAyp59yc>O1$|sarO5GbJQ0 z4X<0zyLam1>G{7w#n?o_P28WgwOo|s4vBqVdwK1&w@aTMoh!~TH_!g||3BZi%(e=@ zR>#cX#4_zt)?L>>kGx)OZ9VaYIcv>?7bTm!OBIZ|R!*cf4U3^~W!dUb{F~ z{?WHhIsa$(XFs;t_;1;Xtp9OukMlD)bmTDpWX&wsT-Gn4Bq+P_Tt~-_quSeq&sU0k zHmSAC>u|Aoa&f}_eOF3Ohv~@wo^jkw=kgYQ!N_Ep>&FBq*6dwezy8}}b_N9(iN}ra zJK6%BQd)i{Sqthe{QB9@X~{#SJ!URSbCkrA?31HQ4+cw_)qMIZWya#pJMrTF@aiLP z+!z`JUi!Y8_xI@3i0=k2FVTx+*gagw|9+vk_LC*GLf2I=RK8#o=(Ftg=hn z|2ScOK?a8oj){glOttm4DYM*qc6x2uExY}=UfsXJ%KO1v)-Onq##=HAP+g94wo#>`2-o%`dD7Wc$IJGdsU1Zh6v z*5V*3b$6+jUKG>9%ev3k?loPVcK7M?*O!xRuWqWV$v<-MgJO^{SML1yndduvG+f*) z*BP!)cTrZjRl5Wv%kF->XP+@6{)XF{r{_D4JiqDTb@ut> zeWuxO=Fc)+DIoc2$F-icoag>$v*N`V96FwSKGvG4qwR7_??th%qR>TwUD{uj)fEpd z{QBAFuF=M`h0aU<-oHH~p@XM3=5w;)zx~QaVI2$%J505k6raV`%TF|XvNm$Jy$chl zHhi=H!!`Rga+e>M&GR$A_kGvh#)gjbQF3AT=YnzwsD1?{bZ|wBodHhYASrZ4xAw~G z(VpCIFBgL{!OO3|SK23RHFjy((&k}TTVTC+>f*;o&-1Y}FgU3kQglj+c6XU}DQo}q zY2xhn%BQz@u!6#Q`RreJm!5SLd~g1LR&SYzo}|*U@ku!yYIQg3uc45Ugk2?z z>kg6AV(T}Ty5C9p9q#72bzg;SV@WF$1H<;Tt*sunYc~F~u~G6+(m3^CMbomb+5ese zPFWT>qxUEK^Oe=Lu8a%}ib9D7D+Nxv8?R!JoDp`aDP_lo8w)`pHc#*-M-NBy*L1U2 zd1t%WFDCChTWC<>eQoI@)w)SxKkK$u$ey1V@>>4R@*S!<$J;p=7%JRSifckHSKrP1 z>*29{_W9}dQ{--U6r4;}R(d?i{?+!&y_wT%JmNaGFf%xG7__pVWMpvY5a3_gk6Z{L zl{BExW@KPMh@80pzkR*`@4R1$j1Bcm_utpw`cHXgxAsc$|BL?f-S{u7+4uR}-Ly6N z-{;AHlvUrrv-`>U4<+X~k8l6`zUifWdCLjk^*=pk&8<)0^{+iolp$uO_~KNBHLuso z%sp`Qa!}OU@0UJ3dU3jM|KE?#yZ_F2QaJMZWN!MV*Inn!GCPj^G<;Zb`<3DS&a(gC zdur!9b@*h=Z}IpOD{z`?Vy3WCx4+%&xL=dkFK^EOHPxi}^IfI~T}~`cqC9t(avt?F zFI`qwX!-N+{5l1Wi7)5Nhd=D-5D-*yQu(JRP(FROz|MCE<8_*qTfW!*iC^~pe|P?J z|9>CjmtOySr}(A(ojRMl6_-z!yS#m0wTCkKDYMI=9>Mp-5WpO|DX6hd&SS!`|^M9J6^N!>-(L4=F?7JpE^JN?e8tM_0Nx# zwcD@XlpOiFyz+KocC6kt`&&OR?&Y)VtZ5am4lYTZ_4QIr?$WZ}*=#q0f+fGv~;n%eryTe_#8To@fwcb@xV^ zn5p=2mp9Hn{qF=*W&+Dzr zdvf{Jw)tmgxBi}XuHRwlE!Vm;pf&#iN&n7^&Rysvj(&A-@L&+eZpbKbZ1Tj{gQ$N48- z>+Y+|kg`0n9F{sZR~9dxFTc}oJI^7GrM(rITn)d9_t;9!`lr)ZxNd9B^k2n=LC?d= z_ z%wKlj^85Wu|BjzqCU5h>p}J$rHj^#4OnBs$=4DJc=#arRafX~5-^5;qP6bIVm!v6* zv-Ni$*mKEw$+O))DlS>uN?Th`y!gJJzuLxI*D+}S-*WF)seeI{u+k_X}|J>Df_j{r9lH7Q8 zVWq|Y_ZrrTv<5n*eA%Du)-GWAPdeVe-*&eh)2F`sKhvr{72o%I|MSuI(?25q9eyvS zxar+X`+sp&@0R|b8uxKpytY%yK3$hj+(#4J!d|zxCeK@4moXu(eC5kUHv454zK#3* zO`!Aq=IVW$Q#ULA$*J19fA!I-qJydCSYv)A&=ruR%w$&W*%Uu23z2ohds;BeYzdqgdG}rg& zwp-3BeWzb2PWm4y^Y?pw_I=fB7v+@RKEI~1JDt{t^>I!A=48i$o2TntgCgqU%gPAw07~^h*ZV9e2Sm;DY=}x zU-k9Zqp&sG|834+wsdR$viZOMY(MqVKECBd`~Ry|Ej6!>zF&I3_ND%%H_Y$7jm_^) z{C2dCM_%bL@7is=&Bxb==XM%fG)=RAVezZE=HrH(+>R^pSGMLV&&$;Oy6f)2&*t?f zHs#&7N^Uu^f``&NuSFP{n z#Ao&2)KE0Kb>DDtJBQPgo74BrulvWpZ*tvF{{6*?S02yQuhp+zHKT4>Mg6n*dh^@pu2gkpc{lEKve%=4oN8d)t*V+Bu8(pV!_FQbd+ljB{Z=};)ROG#6vNE=oO4!t` z-TODeNI>c1gkMJ(|LHta7J0{XL)W3>&W88LjC9hTf6EIyb|U=$o9LJ8w%g5JSNk*e z=@uQQwqGCjG8Y>BxsY|&pyE%Iy-5WtGXsNS5Zlpvuk$VBC1%c!`#jO4_`m;h+uwCt zdL|_8Gm24i0(D4?j;-*>i~rSVE$6+t`up7eNk&fJL@%>4fEst49TO)#5?iC>uqk>Y zSZyMFgaq13z}9esO0{tOe(!m_@9yMp+zg;zj=I0yEX%SV2TYt)o=IxQfJR^>)@Iyq z3ls*)e*E|0&riWgttA^~Z2SM=F!N$H{^f^%o1fpF_bHU`dRf`ZtZ89E!M+OH9lbTNyxY_6 z&U|Lh>i2jX>w!KNh6aI?_uc1Q=_|T3?nD*RNJ{`IH+n@$#1Q)>0s!SH$0Q z+WPYIwx?{(D$`D0S9JkdVX~+H_TpDc3uoEI|9i5wH{HJLgGEGb*!Fb?Pe?qww&t$9 z5(C47YipW6GxJY6um2=);_<@|`kDLAzq%%RJF`AwZ|Qtc(+d=`f*|AYFnnasoIAVp z^|v>k*W;>ltr-|jWiP*Z(^Aoh&*j9KGda8dwbdSGW>~PNZPx7D+AiA|PR*MCr;LFi z#+!2@!_y0oBu+Ck?3i||Q<2Gug~6c%)UtNykg+cFzqSA4zXwiMm7gw}{9jd_^y^>a z_1i3pObiVIoewO27Fg}6fAINa8wa%M?et{TpTD5U5mcQ0=&^%U&6|r!Q&R43Jj{OS z-(mjg>%9-NbIr|r_5Jt4-6d07Ph8w`M|*$uvh77BJsB(F(qF$_=69y}X)6aqgFvN) zl8QX*$@uv(9_*`s@|`>Wx=Lrwmuvbx?8{1b9sRw!*d=8T!|CgS>&wq|fYfU$Kl$L) zlV{R;;`BS8&rdT>XfPfsT0ec7xU_!F>WG)&N&mW+g@1l_`BSN0d2&g@R^ivDwgsNM z@4I?$Z{_NV-4S|jGD$mU$h|+#F>zO}&eE$AhLSh#9bK%wH+^2`*VY?;e+@g|^2wdw z^|$k@OGF<#!vSNZr@G;v%eS?7BtB7CC@#MCa4%2EuEN)0I?{_ZW-rf;dtT*oWS7)7 zLBl}b)p5s*TzQUsOPask*yYx?z`8P%ro1cBn?EHB-Onwaa;4^ZjqPn_h69IRJ^ifk zv{<2Zd-Bxv&(GJ_CH~v7bhTV%&X#x|cb1%A>)#u$waja~du-YH&DTrCf8MUl4!dlY zq@wQT_Ni7j%Oxf8$IG|p=j4ckx(mv($NOvwE`DkLEX}|AesG=Lj}KM9%_81zzcWiz znR|L)XJC`cwA}k{)g4EkPp)xWk}Ey;-BbRFGvvxbJ3s>j{Hxs=j{Ld$%v^ zZfeb#eLMPEjp3FXd<+erZfPo|NP&7sm?JKbQI$>q=asy9viN1n(;E+&Z|~#1vAaBf z*36lb?~Y$(WC)0}KKu6W?rP_he@_m-{P3^$d-<}TKdrY{OLt6IbSB^D``z;Rsuv5} zFKtXdF2%qQ5Mw;`y5H|_Z?)GgU3Y)2;-(3FaamKI+_263|LptIFRdo^IkjI>{yk_c z`ElrV(!OWsPnW*6|5NaDUx-`4n*Sea4A9`W5)jC9RfEwnwq&^K6&tZ+xg_$g)`#vw#VolN`A2U z&DTC>%Pl`1H1l&cTx4LFay{Va)+>746K%MZJYG4eEIYm>(C++v&(4OEPEXHeZCTc{ zv}1~_XNSn)Zl(km28N@iSJv@O{PU>ZNl{2yjrTQgXoJgyJ3AIj3hw;-?RGmm!-02l zf|k?nPYPvquKXx}zO+YP>0{;Ps>8pEcE4Az

CJXgP80@RN@pD*grh-1xKgt)$>e zH%qDO)+=fCyF<;BI4+qv6g<@#-=o|{{(Wh->KOogH0kyI9! zqSLntzx}Sh{vKR^Aj`dD&i50+&-JYIp3kdFDfT$>``^wlSCpks+s(AQ{NJa_=-KUM z0)mDN4FZYZZI;LxPB?n-s<2XbclXO{(fNBH9J#6FbZ)M%x}J~q+-v8KpSUS}_4U>g zt7p289>hdh$DXZzl=IPU8t>Zq?VLK%>%>KBq@ZTdTuMUI8=*>w}l-=ab+)S0&KK*?3dDaVw zF*DJGQP$d;`gdnO`d$=B6n=ef+3`Oc*Lt^~_{ku|u$!BKL(oRq=*J&dpZBG^ zSBh`eoht-t5$&u}aOsn=oRqik=QBZ2DdWsJ zac$GgnKMhS$CfYM{eE9G0}m&|f*oaA>lb!qYbtIMHLy0H{_Wk}*?h8AQ{L_W|8LWq zY(|EFIAhW4eosxW+<_I7v%kH$8O*1h{M+y-j(2hf#4-ZF{Hu{%=ni8Cp(!5!^U|^~e_I6wS5YsxvDK6JjTGPUMXFV_ws) zZR7$PsB%)7_P#tgz2H_K*Tg^8TZEMu8U!3WLJTkX{|z#=3iOGOc)7IB&i2{;fZg+M zoGaQsL+qfSGH3Ja%9lUCB=vM0v3mVY@m{}xlKbT%{cSg+Evq_nkL(kjpMUG#v#0gj zo>?FH-WR=X+uI+lx88!87LRT7uH}l%pZZbgc30)5?_cllzTEqG@7&|-^Q@U3bg?lwu_!AUN(q=XDarrr z@Q^68HT0poK!!p*P^GUQT7<; z#BHg^`6qt+`?^G3Ug_tT4bsjm3<63V6L*BJFcU~hNl5;8_WZ;ruO;nWW?i%Vw>I)) zLFHewN88r^ICt}ta{GxN$Mv`EPloDgYhP}CcgD5XWy$~i%xA~#o@eN^q-^fvHjkR^ ze-ghs$+2B6@B49LdOrU|!@m1@9H61`hAwt!yHY?2R3{54J#K#e?aj<5zZk)dP?T*4){`O3|#v#nq>0>9>j91|?%_*A^d8vl=|m2r>h~fYkJA{Atgh zx&8gPmw}keMwUp!BcEKLT#<=^Q&EZG#*TnKju(2djEPr# z=N`I-LQ@4I2H(;o)TAO zw|7USi%Puv8}B{$ojO4CI=;%zH@79pcb_-UE&u$rJa||ve$d{xOR>4BK7ES zJKO!HtMgGoDSFUZe5mq^<~&W!-_N9z4tBS{a5_A?a1iLoh}$`9?Re( z!vG2*Wsg^RhO4+I?s{petfROnX@!6!*qqP*+~yoTapHrb(JR9>xBGWZIKBPuKc3UK zvzNJF@#SGqa8Yn$R1;M))a?;cDt$e}q2tKwV+FHoI1kvu{0pBsZ}X z)FV}JQEUCg_hF{WY;G!md7|_V9`G9aq*T{}Jd+Py5tOfW8+*V#;%K(i2vE0vqR43uklszH1|cDLYR~V@ z{IAQtDOHUL?6{pTpW08U`@Oy1+V=aM;+O4pKitdeJ4$w~y#IcBn04??NKUN$vhnyO zZv8zI?tOh%&cF4{A+Pm&I__VHwzQhNAR@+d?>(<5iOii#x7>Qa^y$&lyVir|6%{{i znjJTd&)m)` z|Mwl%n=T9Lly2I6Vf7+~lHl~D+tFUD|Hehd$#6{2R&zPlw|8$OZhPndF;Y^0W4xjN>F>QiI+9B-8tR+KPp`4HHUY(Glipynf~?Knu;BJ>gqxD@yZBTiC0+`ljW>@ziv<8*S7~iB_@Yl z*!-Lh6Z?-A7{as&{ZEl{-{G6YHPAYDZUVHPl|J-5H>T$$fNHVm1cVm!KIyP$i09F@uUKCZu8xtOis9g3>Aj5e&lV89F?M zy{QV;4w3?S6K9(h)aJ&&x&ovfG&BbGUxUC*398r%cM#ZUxE+`bQ1ChkDKRh{$WsOd zHB;5!|Gq3?WMJ?~cVS^*P;h#3Oj@6vfuZ3pW}L%CK#_$Jp$G2mt-gHbjL)ubx3X^s z%B|kHbLTY%i$9b1Pn3(OGyHpF`Tom&pCa~Vy_~5zXZ^YBnV=S@)2Zty<5vMPi$6uY zy}f-s&yHgpKOcO4c~H22+2r;0-c~=`wwo=maC^Ej>c@lku01|4YD)L{*}E_>oSHbH z`u$#WS<51oyM@PP-)i)S7M?kk94@YO)Wbtkk$--T^RC|~oI&D(%1<}We)98G&D^>U z28Joy^K5=RXl6<_d1|QL7aQ9#WxLehAFuCC;=BLz=V6MSo_xEVFE8iZ zdgA2uy_T|dUoQ#<$ZY1A_|_`^rYgAbYLgMHwAuUWYPa$Ni?nd>4scIH#)XoyON*b+^XiXT_Ez-x8e11RZKo&ujy?ei}^=%Fdq4mq1>G3}MfBkr{rGNSL-W}_{rQV-bxAn%g-AT8O*a|5cP5u1!$jxHc znl(!=Ghg;wfAqJY@Bcf!pTB1Dg4{gEBmMl>$4cupmHgH({denSBlqFDr!iL5NeUTk zZUNWo6t4y9$ba@Tc8QB_IbqA6v)(-P;fH(rOa48tfA%O-dcD5PbfvI+C3QRJd!C;w z@A~t`?WBL7Hh*5Y(J;S8F6rjKW53i_Tclm)oM_?x`uyxaF+Cj?yUhyp=B=}I_YeP^ z{(6TOxG%`f&HeH~BeQUERj#s9*0Y^29<52d_til&ZoT{2TQ3imhA0NDTir1?B2TF+ z`I?lHdfe}0CD&~~-(KC(p)VTvA>!k&*!l05Kfh;fu(qcyiA8z#_Nv&rZ`YLU&bfP- z`Ts8a{nw~2>DM;x{zyTk%a-xC&&~Z4vu2v+`J*%H?6f`=ZwYAeTw{OkW^cTD{l0hq zKy{!;Oogk#m5z=R_n%J;Dt;*T*|o*T*2Qn1;@#5k6W@M4rX|A`&;Kv#XpF|A#Zlij z_V11G`+e#7y{eaAc^~hM?~T!i!t}9Q&!|vW%6%KuIW3kTE!R z!OhOB;haXufwjySB{f~ou>;G3R*i)VG@89#w)~lc1|GD#P<^C^UW}D}}Kl^fVeBV#K_D3^( zOhsvf-fSn^?A^{qg;)sJROJ)XDd`RdQ5zZ97m46LnZBM-n8l`Ii^YN*v0 zT6yN#vu9b(Po~c8U;g|4_uVh|DY?mMxw-Y3E&>&>yZ--;_gPdaBkttXPsH^mbkN>Zy}A^lXq^uUfrFA+s!P>BlIc$6HfR-dGeePqpibiiMd) z6W2vPM=qU&oeb6@DYHUzPD?l|39VWY=~*|?Yv&&$mA76?gN_9psoECYvRvi)y?uAT zzr1t%?q%D}cWvj#*DiUrw|4%yx69wpDPHz`m#}(XOY8P6Tb?K}6dYK`{r|81(kVe+ znx6pH14|qw#-^Zg*R;Vb=tG*R8StIoY0b zwdvc3+0*Zr-CZD8we4xddApE3_J3aIPTwE4Pyc3kVq(eJm0>qZe_L+Pn>8==&m8v^ zw)qyP`rNBsl%n5UpBm<+xioE~)0|)0^_{`qve{@?TZ zxJZex?0+@q>`!v9RGrq_WvP9)XoK62@XybG?=Z}M@^$iJyDt}Rf19TBP3+${L!)<3 z1y|;O*m`>UeA^AH7fuQCIvaCI$}st@VOs0GHP_>+-}?Xm;@^IJ%@g5Wm!geMcyBy^ z*J%cqx%@7ff7N9br*3VZan(BO_r~WsX}!NYj+osD?u_)(Tq>rR**kCJH@VG+{vVD= zlyHy{+I(tpL+kn5r}>YvuVs_}xmUXRZMQj>qmJ~^T{e#neMvY!jX!pmzT7V_OKsc6 zbawZjwl$RNoZ0*fkTUXz>weHxn zFJ&)|u9*^)l{Wd>3(4$7Grp$Re@n0bbG%;W-+iIYi{@YadqL>^y%)zD(&bNuy;>hF zd*c-QZmz}MzTBUm1lyMAl!YkAYo;&lOcY?{KHjUl=1#`U9MQ8W6OV=Q&uZT~@p(k= z*AA1ir>gC1SWg`kmAkdBqWDX>=F%xvZwy~g4UemQxpexzzi;#Tjjl!PjeKjUeS69N z#M~R}4A$?tbok1q54&Ek%YLicRkusLJj_FV>E(0IiMJ0unt5c`B(LJr$%d=<1;M5U9qrdh&-XMecFvIFf)M33<2MD5r&AU~*J^U#k;N$dbv+TmEXD+w#m|m~-KKH_hU2PNB zRNM~@7J9wB@%5*TN1U$v<~-csc=&|vVjih$%=aZEQ{T8RF|fFK`%#g~liu6wzCF`e zIwi<>*2ZIAQO-$W5@LUjneQ|Fk#y-o^Vh6}UH2oU!nn1~%N9HdeU+Crt1|BAp*2PK z-4p+8u)A%$YeNNF^O}&k0`XS;ztZdM`FYZ^+?VHHU$)}7kXz!`gFS!$WGiz`SG6(_ z?+tsLI;Bv4;w849nPPnrdk?*RD|Jg|>6DweNbPtr93e6<4?Zy?pWax9V(ead45Kn${bz^`axBL;!`6=F%xMK!t-Q zdSMad1u8U9l&GeGguGTJ8ooZ#tIo(UL(Pzz!Ql)OgTQ76h9f#C9C0Qj8IUXk15_TN z0ZDk)h5LW*{m!%aSsr^ca@*CHYFBrzn8{$^Z}|Gj-v6IYyt1!*JUg$faJh`Q*VUW1 ze)H+S^GQ^{Sy#6Gyy@Bv+xE_uOZ|T7*TI+-r+)gZp2=WfY?%G`;`y4N-{WKI9>mA~ zk9}WK`&~E9S0sMf#j}%JXUy!3ocQ_TY}Nx?`y;)*y{m8k$iM${vSLVR&6~;p|GC$H zz8e2;uYJ}1{`znEdwVFzb7s-U2xpg;A`{?v-9mT#$XV)Cn zVc7A_@b!<6kE`G9`1MqL-`|b;`=U1fd?|ju_S5YDf42X--v9sg^Zk#%G#}6ZwT`(n z^7rH$Y5HkP6^kzT7rzSp>->#Efr@a^FNA^W(zujSY zho>{Lce%KIhGBfzxy=u2+Dtc>T=@6!km^}$e(}#QSq|JevPNK)(;}{SHLqrW|8uEZ z-0t(EzxzL3;{SKcTmH}1>4)s=e_W6M^JVk@r`GxZUu@j}JJ~_;?=E`JuMV`>l z?m18Y)hxT!@H8YT?Dfl|{8I8ZzU(aSJ&|kKb(ikSOMb-C(A*nYZu|9Yb^Xhu{C{3~ z^Owf`YoA~H)P3KFSL*w|yxL#!ZL50S_pkE*-(J_V`}=8q{NMS@@BKbft~XcKR9bYG zj8d(^-`1b)d7mPqf6O@Z@8C=_Z_j-E98@V z>W;NP&i~T+)ID8kb+2WH#gi{le781z{`GUpY|B@Ur>A?gi!od`OWXTfJig|A`XsqE z{QrNQ?yq|{wf>j%`nHnNm*sK%hT1#+RNw#gX8Qh**ZBYaDc4)uC$@PK{~jIwr@?C` z_3v%-|8h{SYqyr(n)kYYecqn!@w3ZG|7(8nQSgJ!I}A8jTEo7WpK#8yPg&x9>gVFb zrrN?EYs?mzN1n;D-@C1O-kPuXdSy1Z#Y{f5;GyY^2)2e9qTP}5{~xVREcmc5zVfB> z|7TCT!{h#)cplH`UH52v{O^_jC#0-!a#FDB>P)E(x%+!Oh8(ud3{i=?occ>y_#%J)8Bwk0LP-2Zgl zx0U9rcPx3hpxI)E?)qgLKUQz{@;;)&kfxJnTD#Esx&7bw_y4`}mjAa>|8MX6y6Y1c z=krLe7T@&EB*WrF&{O{}A0%g<-ziypVZ-+AuKkfqEk7N8mUdN5S5>>j>+-fwf+xSe zoqKA|$7lIVrR>bL>#9CBfBQa7S0`V{c79vhHu;bAXMJwY-v9dF{SQPtLu6v)ev4Pdi^!zFnyK)$`5E@0*BhW|%Q?hUlSS2_7ED zRT_Ub&V8N#-@X2M+kSbYupQRnbzGCi=RL?5DeS5$8Y9Yr}vh8p0o0`_0$-0~S zc<<8ty1hORSIzOiU66JAds=5C!x^VDuSzqf-u)n(U-^DwvU$s%tF!x_3Z0+#EQO8X zjNh46-}74wM2~SsvvciSmbG~bLxW{UY%d2OtXZKxw`pndS?#&xE`-@g>_k8b`YQMGhboO7{^}5wd7#j|Y zZ~paBgEMIHlZ6+P!V2@3pIf8TUund^&@H^#&DV1A(KQ#QZY_Lv<(@wqL&BpOrAk+H zj;s;r3G+8kU;nE&ZhEMZ&W?>m%cf13^zcOQ)TRIIr-zwwHBXA<@D}@aT$}sw^u3o~ zyx(L0Y=&I9Wwby~VRiFga{fuD<2c&gJ(6r!HNg6Z_Qg z-IGsQyEbfCvNk)nQkOUA<;rhWCoVaDwW<&TbaTi?Cw{rc(D>)Xp;bGw_I z+&1%u=GmQF3qskh?!58O;BAg+Ojkkt4YRt|?;jVbo}Y8ASnglIyPuJUt;;W)T0fFl zzvHiw_4WEKVgAnxCdWLymRsHb;@!7fTh67tk@b7d``lpfqHO+yH`EP&UC#U;e=F(Q zoE0{rX$F^LZU@i$ck%M}J?Fxn*y@$7iJNxnzF^h-vp4J5wyWE{op_!9`G(s!Z{EFa zdh_otyXWoxP{T9xa=3=2hzMYc1+&ossP-X}!B| zFEq@SU*~yS`kZ2oYj@-sk2AMU?V9mhf6qayhhJxw+KAV`(&EVx{kH8MH_OdQRqIRb z+Jau3zWMS?{f8*|Ifu&*Tco|c_w}G*RlfGih1;#~21P$w&D$4kxBAKR)0aHMw)e(Q zh*kFWe^R&}u77KJ`G<>^ z-Ro8D*|i*c$7Ti8{kkguG4Xk1{k72VlJ!lYe*Yew^I$%>c+aCn$Fr)k&Yu1%|2Xw_ zy-QWQ_c?=lt!3+{Z8ePR`RaXf!(qd7#`|^lrX7=?@-<^umz}?swanYhoB1IT78T8F zsw%b;+6NhG8%K-%3i#CaAeol zfS?H7e-rO~ih7lMyTox;{Q^(F9osw)Z(X(IMz{6L$3lHEbvj<+24#_Md%}KBI_CED z{n4ZH9o*+<)+}&)4&?H`@q_DeIa!ta@WdtiLeMsLBJ59Q8nUh2L|HLds3Y|~ShH~rZ1 za(&G1H*51PKL6{=tI&11_xZNHZ`8Kj%3l6V*V~iRf3UaDD2-s_%|5^U)13vsmgi4m z*jBauF>~V5@-2VVC*GR%RetTY$B#3n7QZ(8JICZz*5PxjHsxMs?R>NRZTsnOGp6QV zy1(Jt$@q+@FPnO**Upj-m5J2YQ|m7O=v(Vi!AlaQfc2 zHskl}UrhXd=Tqh-x!Jek9xKadui@u2e7)iLnnU_)r_}#@-JhPyxO($c``c2xJU=bZ z*O~CvFl}qiv)*mDE^O}lYazN*VdCF6rFmid_bTptX8)>m+iCl%cZzAeC)qc;@4Rq3 zUVe^lkNA~)@~^pPpI`DbKx#sk#FBqS~|{zx+RKTKm7m@K?8C zo#w3PDsLa!xbMlhu9C)Ed3fgY@Gmc__kAX*TOS^p>!)s35nr)t zs#=80{H@gzCOMJ^JNbOw+L+qsUA>SuukG)Y=fY3)kCsf>_tc#CbK{?)>2-C6-_0^C zYPPK27-)X&e%9`-{QH-+9&VFpvuC-e*!JtV^OwI{o=$0dx4G`(Eq317a%TnO3(xLd zqWgHBasA)#zc$JKafu^_Sb_O$C2mz`}+O@97_W52Fmn(Vn5p)(40T>bP_eQD0b+~{AI7Oc6vy1e>> zpZNQhe*eb)d(m%Z=gQP(#ILOj`)j=3ukn2vbLB^Fp_~4Xuiu!m`_W?I6_dYm=XX4f zKdHC>?sfgs9@keDyl8V1U3NBXSuM}9*J01sxrw_S&Q9F=tzF@lMcH!uqt^!JfF{hlN$Z2@yQbl{bMhdX8hf^V&i$^Z&mVh{Fevsf3q>X>ho3U$3e&E zmtHiV^RwP{dwmB_b+SyMRNhw0iFd{19$lPgqdR{|l9=)G)QZ%3vjS!xGWEayilN^6 z@2#4-2Yc)fK70D>{G3})z90TP@8-X@$C9S%>q^g9?cF8$kIgSFIW@EYH)s7CgWt|p ziS7RuozvMD`0n_0wcTM!VUP2FcSmwhHrrEL;no>B`RE!)EidKkuU-mXlPPSEiT*jg zujKh&?QFqySDTKlVSb(ZWno2boXEQV^eHn;x6ZiwdP-EZ*k(`#b;|Jdv87XcxmTZV zK59L=YTmkE=F_gv zIxf%1z^9RR*TUOS`)~TasirSBX|0zG3MtEXKI8R$!*|QC3=G_&o7svtD^1?QmHq7d zx8%qr(b|PsPxm+;&Q|+2cYaz1lR{eT{ub=_l|P>69oKQKKY_3Q6@LG4e9~+6_2%3RhTXN3 z%G0<0e|yF&|H1|PPg4J#zx-7Qjod7MLaYAAqW{YcoHV?C9p1FxEcRaR%k!x`(KpII zf!cbmKjnqi9i4t`#??FfO>NTVzUCL4_U+E=1+U73Ma%D5ua5h}wcR?pvhG&&nJmjn z27%2p^1{PT7sRQwsx%iqH8Aly^D2K5``l0SCWl^mrt5W`RqM)OpAN-rbnMIbl>j}{k3k*r#I_<<$Ql} z=+#Maf9Eqy4rh|$)UR(}=~s7udSf7iz-Ega!__8JvrbL=x2pEGB|}H#nVd7PdZYYm zx2&_5m{q@DoB`BO1>qzy22exwfX?wXPp@*%o~D+_^1ACN#!&?)sgZ!sHTTqHdlD zi;mTMyLL}yMBLBx{|insBo*@evNJKvct0bw-?Ulu(uynHF{iWlYD~Lx!YLwndT8P2 zpn1}7jJ?BuwyeF;$iVPyuemnA=jrUfH$R@W)O_2mrLy^u)#AK)%U4`r40|bLe1(HS zC+5s4<^Tz?oR@uGbD}KcWldxXiw(IMEJ_Tuzqsbku?&?xo$X_hIIVd2x~^ zZ(Q{Zxfy0yq}l#>(7f3yF{BZHIz-ESq%C~2k zz~d&6u@ms<2yBD|Bm}}obkKyCJ%9w<-rL^V(&A>}{_`zL)0E>m7!=Zc#Wqh1*Uwp_ zW7=*2%H@A%lx97xxzvC4+I3L(p;vly*flfrb8}WLTm9ib_iS5FChvBU%k}H@s-J+A zSDaa;zT8ngY@vB}rS7%6AT3+Jr0Iq~+jBfA%t(KqT_tFwCu=^Fywz&6>(io>!n9@{ zO1&V!Ah7vZN910Psb?=_^+fKy`X!T*A?ccg;cJ&)bNMnaY1N)~HeJc5+L?1zx8=>HzFdn^ey)nttztKyHRG>zDW;{UVS=wdDyw{ZBoB)^Tj@V z^66D;PD#<%FA0;cUfpnO_q#hDW)uG~G_cNQ+P`Jf#MH&tW|S&=+rNxir(>hKy*jzi zIef+O9ZrY1SEt_8_Do)VOpmdlwIj0GGiqMspq%y&rSd8J85zIytViK+v+kju+CtrUnXBNY2jg$M=Iu<5_d28 zpXp_oZSYv@Wc0)tQ*}UPoQ4h~!;J5mAD+&9*?MvB)vYgirP7QKn0?j>?Tg%N`Kh^> zfgxgs2fid%dtg#fBw?@v3LG0yW?=wQ1kLWN6Y!=we z;Bdz2Ow@xJU+@2W{l5Adqe5C|B&hCan9({zHH{HuV<*Vs&Peg{U3c@ICsm$&xAd!I z?Xo;b$K3qfx=Y{0w#VMTC%bj8a;&5wH-n+~nNy1ozsoC6&$dgtHqUR!eny)c{gz?YaFw{OPHuc}UJ=Uw| z9Z1^#*=}Bv{0%#PDL4LE^D65PMgCrpXc8|L6(aA~D`R*+>I#e9bArqdK7B{?)Zn<=6Zt>q+)}e;QwDppzzg?A)gv z#RAQ3Q`eVf$eYNhr z-ALf7xisy|i<=LgYXmacK`O7tC=JQY80q~$J9#BeA)|&W^fF5 zMka}Y(-)G84fclGf1U?*MgD&E;;y~qyfq94?uXi^gOUV;@lQrwkSUOKcSHxAlE70J z0-J5R7(gk9l_6cCT;m290t}-oEH% zi~hS3>*%GXhbQeR+xG2!P&@P6rI`%vx@mVSpU=&gTWt5KxA4s~kL6}c*O>y8ErWrS9l)k&O^S$I^x!PUTUr$!Q+Md4G$@u6RXZg*O<}Ey> z5iKWGX0`CP#$NNc4qn>PmL*bO#bb1M&wN$#%l#WA=9!;U{_Anw^GVf*{iNG;K8Kmi zE!dZPBJt>sU{8BbuhlZ^?o9iq79A<xlHxPdhrSe|NMVpC1T+Z?^IQLD@Vwk{$%?l z{6zZfqk69IeGauP-&5?U~_np4iwfD~owf?57oal^v^Zd>luN*D)*)=Bf zk#BP)aJ`WJskw&Dg1b&kh|Kvbn0!s6xy@HS=BC+vj`;q_r;djo=5`)iQ^)){ zKy>%^X-GCpuh*uZn-lq_2R)a|TULF! zu`zl3oubpS<##sjS|B=0OiE%_<(C(MhTdmpG4tF1`S93FbLq2HhoZ~B=-RTZy>Rw( zTkEv$; za$Fr(y6u$pOWu!5zsLAYzp_oYx900H=Ix&!Py05fB(-#N>A9n2aW)UVcAeV(c704l zZg#w zs&7`!L*_KA!KQImwT{`%jXce}bRDk;o+eNg?faJ$2rkr5p+M@??- zIsb-daz)5K4(Ibb_x=Cn=a!%ICFi%IK4N6#Etvt_>uKV$2=$x-ut>yK64 z>J_@V?Z(up=d<)>SKPjm8+`w#TyoexgE#tTHKv|hXfr(|e8v34%D)c{wRinL;pdi} z^ZTY$7K^~<88c^y{tDreKl!x(!Cc08ZJHmxIv&1tuKW45msc)_mZj$=MOxk7 zo7h(UQYI-;_0qSRx~j}?zdmSwn5uZ|k)Kkp?wf73`AK38Gmh#UThqFI`whWuMiXTi z3}0Wc@A_Br(Fsv&J?#@C6L?{#9EWUZ)3eXCzrOU#rHZw4MtG*DR30lSB zyAy567kCv1sKE@9)r2hj@Hzt(1)Bg}{-Fw4+W}tFG$jb4ByGdJpZs-&Z!d8_um5_L zRZQwfU$?($Y$IxGL{1d6vScOm*@)+Izt8qo-}^rAxBQ+D2l#cDfLbG8kMG;^>G1rn zv^5|8-_F~eo1FYOmOE-;=EBD2V_l#XR975BUOe0RdfxYaziq$IkGva^u&{CA%!M1j zY76YDbYiir{`TgRQ+P%~Mq0)i@KP1ofL6w>-|u`sXk310>jx)e=j7Mn3Op!!%&Lo;qAc0_`T&mb?&(hY{M_wn!h{LNbY zURrkkwP-%amuEo%v(E8M)Xu->T0v7+pfxm&$Jc!S``}dWbFsLLWiue*#4feD?m?}5 z#qr$N!WD0d@8*5~+&^{to`Rq3*VS*oozj|Sc65#P`#qn}2Ct}|U$buZ)nfm9zn{Il z=00y;#d0JE?3J%L{(Zf_0%z#?{TKe;IqvPPSD$bt*FCy8XyMG?5}Pk|eEs77sow6V zAUNu*z8Jo~_ucNpxA*b057__C>F|=TfAv#*-mdjKo-ixtN5_6{*W3T0wcoGAOK{;# zU&GgTb{5|^4!ryM$<=q4`|HlvU0dv5zTU3#yvuHmvm)SVYwnE{m#g^weeT=?>X%lO zd|N#Kz1{!M{9@Bpw%dO=`FwNZmUO#cwfu2)`}UtZKL4fN|1CQe|KBBd{?}Gv z&a-#c&$v2glas|Mt=;y%-u`Lc+&eXIx@I1I#RPWptiv-(&sWRs_=t>GB!- z3%_0KxBdL*yzLCV%4hDI{!b5I@%x6cVrtE|dmzqYPaucKKSe8*)L&A(VQ?bn-5UGqE?oO`>2|8LHwT8@;}+x>J*ish5T#AYP@)LQL$Mrz5@ ze{X+1J2}ZowH%TvWsa@cZT^1$)48jKJr-a3yZ5%I!LK*Re|f+A|D;$^CG^_+<7;kh zbKTn@x;MMu$@sf=n(5OuH6Iu3&;Bwa^yYkULOq*$rs}`$`#s4__S4*!{hJp8+dd~EzP3*0I-AoKnVp^OEgWVhapV8A^F;F^Y_)aPrViPSaj+99{c#BhtK0)@J-wE zUz{yo?dsntfBtsYcfUTaX5IeK$@sfrT594-1E+|XlCP(x zuGTeNEq{5F;GtXh*4Ze5i-Kaw&FAv(l~+Ce)>^*LGHtGH^|#%iegY(P4jx-0Uvd9s z`JHX)cc0Bl*&Zwo?k#}x%ds`(cYp8OzVGigNVW?L5BHaC;zA_2?=cmxZ||>v2yTW> z1Lehn(r+K1=UMMA{B~~l^!&g3SjD7fn0)^D{8jjaU$58i|9UO@{2a^8Hzc)93=r9S z#l3xBxyx(*d{%7Ax$}44h5MT)I9+yPe*fcQ`n``2=dX`%RCe!^u`YWvEjn-K<38&! z@hu>EXXAc3TP?63*~8!O_!08rndh@Z`s*$n$T;>YltX^u?C0Qq*5Xtha0(8}+7BrX zr=YK&1t&TTQE)*FEk{w7&n^9?n07E`*TXjHynR2PnO}XitVnn1(;~)#1OMzVcpen8 Ujjyy~U|?YIboFyt=akR{0AoJ&YXATM diff --git a/doc/qtcreator/images/qtcreator-new-file-qrc.webp b/doc/qtcreator/images/qtcreator-new-file-qrc.webp new file mode 100644 index 0000000000000000000000000000000000000000..1daa33c4a1b90906c18610660ff65e247251b1a1 GIT binary patch literal 9724 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 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-new-file-qrc1.webp b/doc/qtcreator/images/qtcreator-new-file-qrc1.webp new file mode 100644 index 0000000000000000000000000000000000000000..f7ad0ed335bc898d50f7af296e89bf31a8667ba6 GIT binary patch literal 5148 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�DpPtO&VrZ&zyFS2uyfr6Ev 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 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-new-file-qrc2.webp b/doc/qtcreator/images/qtcreator-new-file-qrc2.webp new file mode 100644 index 0000000000000000000000000000000000000000..4a3d08e585c86d2d88f3749166d60670b5bf0640 GIT binary patch literal 6116 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 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-new-project-build-system-qt-gui.png b/doc/qtcreator/images/qtcreator-new-project-build-system-qt-gui.png deleted file mode 100644 index e0e5bcda818ade3fc739fae023338044d78dab6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8412 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

tR-&?GPukV$u=mN4 zx!Kny{$wwEx9;nLxT$g-`R+$w996%h%5PI`I%UbUua{?q-Z0bFi&(lpYFWXI=2elQ zwyS?==`T#1T9OCK-fe5r&YnBx_eJ;P&J9(GMzf|yUW=Ht^XjI=mwwY{70kG5`a0RV z{Qc{L>#wa2`js5A_EDS2|E!O%p39$HFVhwNCqMDF%ZrGkt$Vq^3HXDYhZ^%``TjYU z#hbo_p4&G=b^p0{>%N>d==k0M@`iKZ=2hnpoSnJ2)9v9Z{T&4ly}s?aJwq+amiK$b zq}<@mc2@QO+n0U&rm)J(zkbcml!u?!>zPffdDGp?KRK%A<(tdbonBX2L_WVIF23yB zztz(p#sAI9?_UTBxS7*UK3j>$KfN?7wC3gK>fHrFpd7GpO(dw#8q3THav|UO`}>o# z-k-3JiQRnd2c*nNTpQV)8X0T)TKwJZ!t3)=qu2Q9?|!?xUOd?|)Bem)Abxh81&%I@SNE z{{t7(x#!lG+kT6Yc-FbDRX+A1gSYiGNHi#IO2RDW&jx`?ITw)I1qDG#16p4ovmv@t z7)-g_E diff --git a/doc/qtcreator/images/qtcreator-new-project-build-system.webp b/doc/qtcreator/images/qtcreator-new-project-build-system.webp new file mode 100644 index 0000000000000000000000000000000000000000..fb0cc763bffba21b89738e79793f911764d32012 GIT binary patch literal 5280 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 S>!pis%RScewX$Bv7#RTb8!~7B literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-new-project-class-info.webp b/doc/qtcreator/images/qtcreator-new-project-class-info.webp new file mode 100644 index 0000000000000000000000000000000000000000..94380ac1578a6fdbd648e8a148770c48309c4b99 GIT binary patch literal 7124 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 Vw!GiEX=nFOhWQUquXz{E007CrwNL;6 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-new-project-kit-selection.webp b/doc/qtcreator/images/qtcreator-new-project-kit-selection.webp new file mode 100644 index 0000000000000000000000000000000000000000..bfaf14084181d5fadb04a8f81cd89d23eab21f21 GIT binary patch literal 11678 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 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-new-project-location-qt-widgets.webp b/doc/qtcreator/images/qtcreator-new-project-location-qt-widgets.webp new file mode 100644 index 0000000000000000000000000000000000000000..3f4eb8422c58822e0de13f0970469035c1d01dd1 GIT binary patch literal 6878 zcmWIYbaT5V#lR5m>J$(bVBvF8ih)62@o)>n)vm|eCdzo8v48Wm?)y7oLE(UxTT?`( z*XsQKo!@%5v_qX=a-OKs_CtGfe?Kyt^eO+0p{_~B%<>(T6?eR6JuUs#BRO~TQe`&X z&w0j~GiQdMK6B>GgzQ(<``>?GJxOPK-P9dwS6z9((=*jSqTZrW_IBPK zHdPDGtBx9i1-7d$>7^+z*#Aa5lF^}GeoIvKXS4UezjZsj4Op@CU}Rufg%0b1x|4cs z{|+bK_LvlM=kD&xss~FhSIhjf{doVQ`5(^xXZ%0@tuYV!rKhD{%l=ur*4os4m)-tL z<%=d-J@s02|1X36$rt@UwZHwFc6G^~d-Az$WbyN9~e{-gXKwEu|KpS^$K z)^E$Y&b=G+Cr0hvTz_)wUdQ+QC4Ng}J{On#I{ydfw`2R?^-myo~CFGpOuRvdzD?eTfZu~+uqw?*Y=Qi`qLM!jgQ_GKhlYwq_+R~f2WuFKm4nv+`6O6 z7ulD0V($gUlZuZkv^KiGe;EEm@cH9Jx8UQac;DskDE8#mRo&%zxyr~^x-TUt5G{aLW@$=^Gc>b$I(Popahc^?ybK&p4Gn$#M#vZ4>91-kKjBwww z#@#=4Ud8t1muIKEUA81%Kz^>7S^XUO>wnnmkGQgjeOE~D%i-S>b>si<#ew&_uUXCi zvVQ)mO$UXvfAPQnaYoU7pUR|do=g`fM})d>z4PTl*7Dt#_8*znl4E}1=ZwWg#tw1W zdn%=B{jXOYzddn{om;l*-=-hGZb%fyo{aw}{)buoXy>f6*V4Fe=Uf&J(Ld?EOMt61 zVD9sSYh^Azxt!zK5&XYFHc^66qxH12@xrK}XnkJ?*(mLo(~n3mJ|k-S|Ik&pHP*AQ zy1Bpe^SfK{{cFYHSCjZw2(rrUw0CTq6`fd7B`jThpv;-+?X7)@OS^C1WLi|Gn)Y1r zSHiFSC(GZyFFAg@_u7ojcRNa}0x-Ul6z{&Vj)Y~1+qc}(%8w#oBeb+|hyWle2e)4BC>>tgL4 zj|JQOH>qxH3+radYrCO!dwuhzX`6S;wcU(}5Gq!5KT@W==V8(NJ^Xvm%R8xQUDzt; zbLZtGt1V%d&L5GMsygreW8x`Y+j&2WMP5qoEG=!^bEw(8>8o(@WTVRNTUD2*R>gE{ z1uJIOFMlm~%s5o%HgCq+nK{qGx&EXViWGIepUCt-vZq7)ANzf`2ln0D0$;3kSs2n*&#WKB=4Hr4_!|S#Rx?i88jf#c$8de66b+`F_o8uGqO}I4&Q) znk_#|9T1s?J7W`u@ z*=W++rn%IEQ(XImayt87pXC`Yw^#~W!!|#6GhJ4BaNaG8pNWs8T2F^byzo9O^rE^) z@xJ}5}$TqY3z(=Lrl#MF=E4@u8Jn@uR$n!T=YO1B)6`3WH zt2LI%EbCaQk$fzQaZUU$&Dk8K6V)fzY5BH&;r}vK*mGXX%E}Ju0GIVQLJdBoHMZV- zr02cfV4L2%8$8dZ8SnYKbQZ`tZ7;*voE+3=>z*{W*rS)oed*)`=cHxta~@XP92N-` z39FHMcmDJCZdS`rmjimfnCS6;o82X_xAWR%l{4oidVO4QEJ1wR!yUc7>mF?qZ9gJb z)!c62I<@t!uy0{|hfUxW;q9gm7R|`{XXiG5t!|x++l9QGA1wj3x0Z4(xwqsI-(-nJ z{yt&i3He9w6y6IvD6;*fZBnuOL@mz061J;Sx&EXF7W!4X>jnRl_|#@mmw40i{TG9$ z^7HPmw9$Xw|9rxi4XS$!=0CDn|J>`0N&iFD$rsXow(D8V=g~M7_oFcUq{*iVyI(ri zpZBTG>)Lva|G^z?zq$H+#b&4Nc|Pi@9{6-icWLzO(-xci^>wU&X5>lvKjZz#?S1W0 z#gh|7vuaLH7O&eA+r^(}xy)kU(vr_-rQSYV5fN9Nc=K)5z2Xerzj}5G=eMr6c*l3H z_sFVucXXHPuRrVa`)l#JImMN>;Yml*-4{0HsQoToDLGwt?}j(0e=eRMJ+Jb{`gCu@ z6HE3#t~gR#QYj==u;S-4w%vA{UT>eWPi}J4o`()q&W=YW_-DvJZ~eVx?ZnE5b>4Z^ z-Y?B&pZt8r`M}?6$sdmXF+8H>^W)810lpo39+`0PTZ(h@cRrrDb(`U%_7tfP0?u<* zu5jruD_?R+{J>4cPv!-6dt=YB$#6flxc;wH=x;D9@3%>(Y&2U0IQ@G{uH+gur=8Dz z74f>W^6tueT#|28;r8j?Ri9Xu0b?2o^Wq_R{0W0!_aZDYUiL5_zKaxx_%Q-uR7@;nnYgC21{ zIdC}R;PS~Y6mL9n>`Z=W>z7nEuiV>3h0#xrMORnA#6q%MD2KD;Wntm+gnOshcE60_ z{w1WfKs7h@%^N2TrZ1e!6`XYMsBCDs8mf>ycgw?Rmv+~r&-LEB>Bh-Yp|mME(d*2F zIz9z1dwe=)Zs+QA7vG$;oG>FGX0nfPe5*qBwnbYPhFWO!uHRoYb8T?i^=(C4OW&=T zX`-00E5_^00=da4Yj?>g<<&L0;tT+>K^Q*sWnZ!h$*FU(T@4w}^#p~QvbX;`8mbxS7^p3c? zJo47edg(uPeVlW{Z8m-O!orX|zlG;L<;_gersPO-h& z>o=%58XNPc9-r&7yC5gtXtht;>nV{bkqgDEvR8R=@+M6(`BEk{wQ^PG4!^{uQ#(#% z>^yQhrlRIG$W?7yEbuf0>#FikvH_z`F8hpp!r zMH;S&#NQH8a#^~fb!JOd$G%zrw%E5mW0O44b7_O`1pA%@;biSLUC!(C)So*{`fB9c zRN0rKE214{u$m`rx7Owg)#A8WAxn?&IC(}@U9^b}c|FB5a7x8YZvVAh<{mB~Tvk(V zwdih?N`5P#b?4sG-bX9CkM6r`xjk(93;&y(ttA0#YFjx1HK!RGcfPzhgSTu><}Js> zn|kU>S+`k!7E1f``Fv4x$Ug)Mjuqi<0&kcyc{$Ri9?S_(Wn1rcDkzEVVO`g>IFs|i zBC2uE4n1CVs%b~wYJ)$rYZT9FdmM=iIx5VSnR;ttgNoC_kTrQTqPCDx7 z##FF<)v-}kGb^9$`MXl=OakZ5Bd234vO;GB9_*g5USiv=Bc;)`FQ+H$-ru~p<(Y7a z#G)NnTrCy~OmVkA+RnknwtG*jQuhQu$CjuWo<985FAufFnWvuRy%oT<*Eex;vYTek z=2*`HMP{+)U>M?977T$1S0BRomR zy}x`}RH?H30+U;^BA1v^v+5He{qlz&OZz|gy0{3Oce%=%`)JqIbVm;->E&+@m3v=X zvS!=H+_gscH2TA1);RT_Iks-~RlZd%Lf0dzKY#d~z%8?8u7Q2dZ22#j^GuU3th(^& z>H@9$Wf2z}!$osb=P{RBho1j@WE+?3a=x`*9@TCA!3X-()?1W%wt7uE==Yz0PwOFp zndN;#dsr8(aCk5!X6Ay$Vak2(YqU2AJ1E(G;7w=@R#Oyio+JH}eez7(_aXCI4`^OE zJN^5V^V6Qyis-HU-BG!SXLIWTO_f6*uRP_ndpj+8mb~QjbH@X^O>!&@Lzf)T6k#;& zW_eSUv*x4Sv97bz3OJRY$2QJX-MgOYYP{03!eeK5l zmOGiQyMK3hy4~IA@S|W+$Bkr0u;MMd`)8z79A}!iLw4naUHKa-WRjMP&V8rMb<<6v zw~uu~XiCL??l*5Q%#G46iz>WcdxXbG|Nqsz%eVEk)MR(&x4hQVIwrRG!NLdwB)UxcGnE;wwj=0Y**X_y&hGtPg7rS@a$``&X!ZUk}KD;Zw%!S zVqU(gt?rTKiMsnE5N_o3qL zg{CJ$>bU+qmq?a7`2T?-)60YX!u@juwEnU2-ur%ie?o1_U%s-mWq+-7U(P+{F)<|J zkH$ad?8?K9H&`p4`1{Q3ankHLa!GgTZ{f|FFQ%DT@YyRFbH4p0U4ORWtf8 zvW|*o3tXOhp#F^M{Zk*?@09MHXL(<0-j_E{9`~i@U9o>R_0n1Q0LGnL%ywTjIpw%; z`;<#D)~h>iFG<~?exosLW~`NK@#Y+jCq|N!SlwnW@76Lu{#`-yix}fwletkZ%_I}P zpKT~UU%7+j%F|a1Z#+M-FEAl5FZa*c2@meg{)y;NmV&~k3(*eDUcjU4yk&ZtQ>lXC9Bach+ zVCvU*ix`8w^Npep*6Ll@y++||%=u|oUM?yW=aqUk+=a<>s_ynT-L4SDrM82}})6o27GuXVE2t%P9xc1g2(AU25)m z`BBhLOTEIjl}j6SEaOhDNpEx^Brq5s68M8gf&oebu=fcfmOHM@~v^i1U&E$8Ig-(NN*%^1gcD#{$;22!k71 zvD1q7J+f2#X;OGeOL${g=)=dW7AmHv8vM|acp$d*$}+K%6Nj%Xdbrep<>Zp3<(7$G z)D-+|z4Rt9cza!#bx*~2_Eu53j3z}jo;80qx$QpVCG*Hr)u!=K%CB4pc7YY$#amJy z&lY+XsM*?iZtY14r89F*%E;dPtsXBHuYU1oPbbG}ZP%%@o3~ud{WZ}*M#Qt-#7CEP zt={p8?VGn7$<*|o)7W{d#>G5mPfT!n&}v3Dg%fkXbMv_R6~?`Be(`j=>bIBGeluis zZ_TLvud}B(-F<7^IsWBV{x?=+T+-w#@V>P0Q%Lqz;VH2)S5+eqG0YQL{3K~trn#rY zqiYG~tG535@Z>9}H`|-l$Gi8WU3k6ulgf)kgHEQ+dVSV&4tembDP8*QtjAnwyZbA} zRXX2YX><_rkXX=Xe&Xts!13k|)cFuWj#QH;h)x#MraeDfe`3D0+ z^+d1C6H&>!%=mDrkLlk}Z(n$u&aDbLI#Jw}J@~}hf)9}v2Xv(ti@mzwHi_qpo_c{y z+Pd1~ig}qmleFK(cwb&-5vO-6eAU_+Q?IM(s6Jevz@+7V?J@g;(yt$rms^^g;OJlP zyn6MipMIrE3ucO(G7vc-vhm8|?y8rc4%O)Fm!JALe(l;Bz1LMlr~cwLzIJU_O~j{H zOBP+Kv}ZB?+j)}TGj3`~NY!Ms?+GQ9t1IR|;XSD>?4ox5UG^v48L@d4pTFhbQ@5MZ z%pm2z_vhOkidzhK2X@?x`lhYPb@AV-tH=C1QpA6pf8_aN>+^kHBG>zl&wtRh$jiE~ zWk++P^j#(I*|z4c9(e+9JxlVI2ANy=8hr8nwnpgQ?d!rHJGARf50wZ7^Rw&~Ta=aD zlOx6v{n53jc^S>8%}#A-)8c#am#H%kEzL7-_<529V%&*nJT$r2K!gDu7C^K za-p-2o>0?m_|+|u%#kY_p^z(98zCCJ+e9n)Knd@qp6HW_T{F3qIp(ym>`9DhvgYca z$lJIUf8g8mo$oVR6n6}BoZ(-}R1ed(* zqYk&0Y)oOjpS11BTa#R_UqZ{cpL!(jRdwBJkR3X)%R6eG$n>hIwetIqE#<09+H^=T zsxxhSyw}m@`+@iQU+xqI6>`Vb9tOv_mWuv!;eu2tpn607!~Eo+A5wq%p0uZc_|Iop zUHczrw%^9=I=hnp-sk(ZySLm7I(+=gxAnV)Ulo+KT&VbbOuH_2?}zuI*V4St%FT{{ zS9YR&>rR24yS{B&e?4Nhu4#45`PQh|6 z950>ZSq2HwGdF1)-0x~smi5}XWyu{e%c%1;r%Go&w~d+cbLpnF*Oh1KUY(q&|Kf$_ z&o?*Q=Pj=>+jBz7$8@%?Y3&c^FpqB0Z8!d2u())~bB*_NSxGgS!(HcIZ`-8yCG~4Z zn)lX-7d6>;=X5{4xc)%N*)I=!yCubS(=1+mdY=E%sO#yJ*Xw@XXX9m=l4e(t>wSIK zxpT`+%K5k!2`v|T^>BCgtz|O&CXTvw(ifCN5;IS-33yD4jdD>I>aBGXi_!A_b46&D z-JS_AFD31A*0q1%vAA{JWYN=>Y^G=4Oir7|Bitp*yfE8R+{EDk6xzMCL;DXGO-H~-%0LIurhmG{|r9Td1!rYFCO3gTUC^ytBLv-C4j z*NS(_UCdd@xAaz!>vSmrjulfjc^|EmREsHC*|X>==jC?eBTi8f7FUXn#bJQ~Lg#Y@DFKvQ5xMVZpBNKGz>UZ+zUqb45{FZ!PDhJ^pRyM6;&OkB?t{ zb=s=eTe^SWF{`yue0J&3orTk^-&fuJTa-~DtncXB7<{ZjO6RxA>7YX#XZY(JW3HF~ z$Sm;GUGEmUk@K^r-RI0rM?7DM&Rh6)RY){f+w|v#$K|}*wx~R2&$2u%_WIYke`&9l zeSZ7MU_yOeX6+>N`5!XX%6Cc5>1FDi{j_RQvhd^ua!Ze0Qa{=0S+cJ8N5~$>mm5PY z|4&#EthDGs&{f1l6j(-X6IK~UgAoePg=Dt6)_lJDW55+s@PYdsF{#YwgdH=}!2RGe+ z#@TuO;j;_c*FFDKb|b}@an^OgFif# zGv+@#r2pyjAD;V%%|A>uQhq=2hu{@{JEwi~-amTt|F4a=|9=_vx+(7;DDIn?|K#;g ztBPMyCYP>1@cor#;~C$n{!)9zoR9@Ym!@xAuxz^W)6*9{>a~-ymh8FsVX4u&u$Bka TZ&Thf?wc$BZ21kVk0uNNILl-N literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-new-project-qt-versions-qt-gui.png b/doc/qtcreator/images/qtcreator-new-project-qt-versions-qt-gui.png deleted file mode 100644 index 292cac5e7eea4029823236a3b955e5afaffabbb2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17152 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 diff --git a/doc/qtcreator/images/qtcreator-new-project-qt-widgets.webp b/doc/qtcreator/images/qtcreator-new-project-qt-widgets.webp new file mode 100644 index 0000000000000000000000000000000000000000..4e4850594509f6894f9ef5b0f095a70b1f0178a0 GIT binary patch literal 11450 zcmWIYbaUIJ!@v;k>J$(bVBxb&hk-%=_MsStuU$>sa+jF=iOl~l-_S9G;e^0>CKh$O zGnUWwBknAi`*n`wn-cdq$?JB_xSTSTQ|j6p&k$kvsWvq?*VV6z zhKJAF;%0hha*?gf$!($9JZ%SeL&4nY!W)`GmJ>gBG46QXy}$iLDvP~RwfW*ZH@219 zq)+xwiM=S?+VGVkoW<`VX_Tvc#vk$0OI)+YYauF}GIMUYb z(8?0?B;f4z1`&6Q<>kMd93{aQci%@gIObFYrB3YPscUo7Qz;_YV#(!9fx^hFq#960`6 zPO|pm&;Rv>w{529Je@f+a{1)ccF&5knc7F!PuV#&IOvqh@{Dw?n8eLC|DGS%$=|ST z->zT(f6Je+^Xywz@WfyzpYdWTx8q#KnrGIyo!c+rw)6J??Y>Jib2Jm|4PyOuUe@oa zi@vQX?X$sBId$)5=UpnxFL+M%z3pfJ`NPyDx%s!|kNGV6O)^S=XqM(jK1YCKFh)mB`&Fq=J=`-DwLgVKujI0;sb^wQ6-%*CJlJG#%O z(PskFg`5A)Ob;H}X2rpD>1S}ULzttC2ji;~5jO(39S>NsE;#0_`{34cO%^N0>wJeC z1Y2f#X-A5@RHzVX)tR$)t#5c}R@RNLyua9)c3%9Z|Ka22S;<$rN;a?CX#3)C&F{MZ z-_9!De}COb=hwB5i@txizje{q)a#O4!queJ^R}?f?BEPZj-j~kjr)>9X)xc1T_wpgam zq<7Iq+c!7nUh=)Qs%Gu)ujf8jZZ+Ae6skHqZEN$<+v3rR0cX^#eVrDST~@kfEIxBq zRA}!nPFv>gT{=F#ynAZ*i=H$!v;Q!C@@Bta>-gu_cgt;3a+@gH!gTk0`nv0vZ%CSc zU%s-dBq@E@_V@bM8Pa9}@9S+3sBKwsJ8FM$wUySt)Rz())BoNUkCyhmc;nBC_*qjQ zq?vA;yDszPrlUeHzm@H~@7fviIwkV{3tvl{zijvGe?5{ua6q@&ng4BkgH+ht?IN3> zuT8T2GC?(~pm7rWx1xLdI<~IA;{WMe7K`f}`&z-J?HS3z!44KvcHa*&;ZAwj<>DM6 z`7S(S=AXUy&Rw^*oS8dsU1Z13m9pY*Ud+FBkx|?ycUQx#nRE9iWR=w=W-V|%d3&=Q zXYw<}*?JCDY;DpEsxqfkUv+9PQfX}elJN4CTZ-Fh-#b@sZ(-P(T>UeqiwJ+;Us*4XRK)i2F|m$a_@+x)kw@N2f)@(pqe z3iFw{<=@=jT(=>)Y4_x|MtvLI%1Qe?ZI`^MT&3rx^TMO#b@msIuM;-?EdHK+@cL=#F9lzx zY|1p2l1Y22+4}gp;*Za4mOi#iYnqB3mo;ex(@H!ASx%QSitBt#bZ*&XVY~b8=jSjnlv`_ zvR+_J@Y=MjV_QPR|9@5*UT02OBPpyq&Fts)zWG2RtIJUn%NO<2W?hQxc)?e>j>YzA zM6TVYHM=!3d=t!9t}>aT@wv;XM@M^#tEZ0ZCY|=IhFe+wJv!YJ3Ro|=cfDShyv$g_ z!hl()A$8-2Hl01uZ%%DKRK>9=ASFjbj@5BTL#KvnS41M~H}|)3J%PJdXr?VSalN82 z@xojWFH`NMD;K?SZ_}9TcYF+%wCkG4^A(T#t4|qj6l^%}oYinkhpX|?%(kU70^B;ebsk9CD0W&L%rkMl z^7rSS_^7oD?lx;zZDN{WAh?t*Gbl0TPM4(Pn(yxt*7qoNsIA~+kZhF*-LuSc3+u@u z*Ey-GVH``?Ol7XLO}VmUo>T3V9STOtOj{VPC0dMhO`!MuQl66bsZWb@* zi+^SvAmeUPTWzE?8c zL!Rf7)NiZf?3XzInMF-)oXxO5=`aKH^2SGvn-26g$QQo;cR1q0#0sZJ0hWAy;^#Gl z<7;eU+F2iNf4uLkT+p{z@l6uXio~YX2zX3;e?7MJ)2>ejPgE>eZPqXO@%8JYNt6C% zM(H!H*Va8TSNFVj`J(IQUmg{yzt}6VXI)K;nLfjMZTVxz93Pab{wNk`4w|o{z0um} z{zaKedyTvA*O?rj@@u#D_Wue0-)ujo&fdE@Hfn*v`3EoFK5Ngf+Uq|zzWQ~B#{54I zU+0-F_^{(hx3K=DkK&vf`bQ3)*1vuzC}ZoiqOe!F{b#l(?A*f;xGvUW)&386WG{uR zTf-(2w|4!NoY&W)^Z#C19=GcGyGv(x?Y#PC>I|K^k524%eAy?Ia(||OgOK;ZX})Wh zzWJY4Z-089@$xImr^Ebxr#3Ktf4*_y{EVu6>+CI4=4b5M|Lxk(iVaWLe>dOH@t?je z^3=_9@@JN>?JlcJw~O4q@6z3CS#eqGzRuly@K^T#WLqJ#zx(GI{CslZ!@}8}+Fb_> zombD_#W+#bz-CX&=DDgTw&~1Fs(99={ORon!Sd!ycbDW>RFuAdvo=`R`;hpzX$l}m zH1Ms+c+c zw*6qZk(l;ec9m@8nKv@qBM$w`|Mupe( z=CtSj7oQ(;W!Cq5*3xDYQ8?>c*P~671En_^MZWS~a`yOSiHPK9Ugk&cD{w`<;?O!H zR5Um1{PIVFLcZNSNzIpjUx&W(g>6z>L zP1hGrEbCmPbn8h_XVTY*l$jrFCQLc}?%cO&H{{H=&i&f6sCkElP0_=98;XC1ebDb{ z(g@Yin9(a*v~to!F@05$P5pOozl_uGmznGjJ%7$vtWcyWx!EKqB++A* zQ&>R4ta(9czPqiu116nxSP@_#%OJXfrQ|vzt69~l`vKZhI3CS6N(`7>#Z?--o^y>c zPwr)B`_oGC?l0yw?wNhIE$>6ez1G=VC#dYVwpaXd*Z=zc|8@7WO0OQ?`g*qcw)$;R z_y2#qdO|upe!cD8oQ$mvT-7-;i4Ie}kP=EJN6mEf$P#ZFxp83Pu2xk@vvcDTxW%>HP0lgV;rZ}HEw1Q^4LMNLGDAGWH$ zoR=r_e%iIpUo(Y6_|LPh*Pg|3cj4dan>lYQ`ETr+*1j$*h?m)X?#+o|*-39T_s)%6 zz11{#YZQ-@tZ;VSn`=CG6`VXfSMjfqSX^@^P+;ejj!3TAiHgtOP55o?EdS=f3N_EQ zogFD%&VkFbUNf;yW(;WbvPfhsJ@(OmrRl+r$t`+%9I9D=JGxJLF88RkzhEP{XWa{> zBbt@=k5!(E8gKme<>0T}(yRK{*X(38-1zKx^7Z1V?>Fw1-@Pw8TSGM}z&AfTD$%2P z+M;hqkIS%5^nN*G>DiB|u6kxqwnKIc37x&E27U7bF-ltZL0M41WI1WPzn` zW9iMuv!7~qs=pSWrxR9L^yrQH%l|f>V%-A#2^@RZWhke-^4xCS8-D5y$DPG5-~Nf; z%@@&|<-PcEevWs<8FI!)>wax3ni&|L4-8-}Cb z8eQ4MeRV&l9=?F^5tmX(06oyNoE z9HDPd?4I^s-Xe3wzdDxE-#fhTS6sX>>tXW!_jRYF)7%{{?|8cC+O@4YA7)M25~(V% z&1FkvVDz+w(brmz@9WghcgSv9^V|1h&{BzT<`dGHXY01Eo;pV=d^($Mt5A{MGmVaz zQ%7{RMsY-}+j1=OTCmp|&ZFkJ3)&A@Eb}msWDs4Ua_s6sIk78Ts*8Rsk1$j5$%+g+ zx}Nji!=@*Dlzv&<$y;*maEi2bE4$5R<;}_k{OK?3w(2gpz9m;z;BQ^mbH~jri_GI% zuCX*$N3Ol8a+9|qXo}5}L%x0OR#K+5IePBCO*h(|vM*)Tzxcf4@Q>-~pWDA*mVWu? zOYiRbCy%8S-IqlR8}GfJr)*=kBD4r>iyZd}Zu8CbA)J z@nb!Y!w+X%+Bfgh+JLRfitFCrKfP?za>t)(((m7A_a0N$J(IB~`t9wSt*fWH7;le= z=F}<3US-BME#pF0o@eN5$LvMvX;<$FS}rcx$$K_)!(ovNH-0;s?KLP|7;tu}cgVfN z*RPhZuAPy>@@mI^{=R9=vcFjV+)oq!GaK=GUlw|++BbF!mW<)3qwRN9{GH(^TW|U7fRo!zqgKwzqfn7_BPd$_ZRkCl*;Xs zx7wJy{fF+kHzp^!vlMShcQHPCyMFHb-EU;K&2;LI+2O8Vn{oBiDczG_zyC77cV9eY z!YrpljDDp{e7c`5HZm=~QMPF=_o{ob?D-P2t`x1d=~nro{3Ew7!IZtvZ? zC&~NX{@JI^p3G~kH=n(F?(aKHZ+|z}&R@Wk$#pW=|FGHTmoa$;W??C{rCLI&;Yt}9 zu3pU>kF^|^XIZu0t8qc;gEgNu9$YlPt?}h&XYpPC#gnESIeJk3uW!pa{_e8hKGJ{l z7ISGW>wA5ByD|IwX*#Es_VtM})MkV^1^I8i(06O%;w{S0UTlc@`t5|0-jr*>b4ul$ zC7z!P*s9#t_dR&Ny~v*Qoamid8YRoy|4(V;<*qnx7+|$y`od}9_gYL^dsei(@t9Dl zX4S@eR^#9~k8;Lsb8`B$yV=`w)FRdUagX^Bncb zjg_aQCeIOIQeLt|z}a-pIf2rv4U&&+T0YgXEcn0Z?QY>K{~fLKmqjyA+K^h_wae<< zsyXJY?Q2(C*1bPaV`Pwj`kc&(<0i{jFF9!y<{cs`ZJyU97kZuXZ<|{*=NEz1b*ny| zQ0v*SSw-j4goF!vvYY0*98uC}WVkSG%`R`X z>e``*sog#Y4@xh(F{Sj_j#c)XQ`7mLOb$?cJtZopHmAnUXYFN~KeuPs*b6`4*I4!S z=C-+8*tg!0JNxn71l`mATO_tBE#;fhd29ZY8F5T;ev-Mu`4aE?;~I}XG;cq!%H~<; zXNz|E4>`AHx~n|aOx@I%vZ$(i&E=~bC3CqlnNQsl+?JlEHZM~{HMBiPJ@N8_HHNBF zRi_>?Pz}zpSaoDk;?lB|{EwOHrtfd2_ifd0%QM)v*TXs7i|u6f*5eFTCcha9ReC~q zezmbp3Zb4=C3BPXR9t~Pm{*1ke7!Rd z?iJ+}a6c41mD|eJySd8$O4-@l+l=$wL&QC2uMy5#xzDU<+G~j?%O;qyNnd^E7J2Kz zih1+a>=Jf8yyMry=$Bh2N9l+AS0CJA^=ki(6v2bZo7bEw%jQi9^#dEZS3ssHFgm-s z>{*1J-JcaAil$Sd0&3T6tGN(!A;8voR!#iA25lC6vX8Z|5KJL>jYnWy4t+TNty zaXar;L`LqsE6wp^&5b<1dlipzQ;+(+eb~Wv@=JzPwaL^~7sF)zzO%*sc z|I?vr4>!|utA5loEOklZzAv!fDUHc@-%i(QPepo!3oKgGT;C#aC};JY z6?^L=tu?qVxb9x#?5$&`))sy3!l6$OL|m`j*?Z_F?`D}_Uxlyoulc#^>C=mkXU}dm zl}ew}5PZS-rj25c{nOS@|9bsnA1c%-g)m?J@+ihJVypYpqb+BSPrUi~$fLzdHo6nf zoU1vr%k{<;gVU+8iU&d`cU*SWH+JTG{*-^qk7sF#y~i@uAF%WUR&<7TwKDcPm}~Q| zb+=jPw@0Xw%SFWNHP@+Cd-tSCz02I89)9qm@TNA&_ldSj?LiUu5$|M4EkL z&Yw%M>Fd6nxN81AIBojEhTif+6K((epJ~wKP_QpANL%*k;-(Ath$OkOzmxUP1 zJW95hv#mvD~EZ57X z<&E;=4x#ynz9wq&)LG+ z{-h@Kc)`Q1276MumEt@tYzmID+nhQ#({0*Tu{QP-63nKD6m9q1Ti_jH$fmyA`N7*u z-}N^=F08JaaB|AEcgJt@Chxg7C%LF-{xTy=$vYnDD$QnmN|*Wc;;Zi_?7seO-KC0) z$9Dg6pO!ZNin>Vn{TuRABThzD9a+5C_q9Bud&cAGl3yo3>N$1dMRD2THIHUaNLri! z)m>wqe_L~!z-JeumhW16Z89C!QMKu_E3f?Ky|<%Lr|6KW%bp;=-Byn^v!^?X80?lc zIe&J==WA?yE1DOSxwQJYG^VnB5N^4ck&)-VI$-f@$9vaLq@0;md1d;?tUsa^-9MyH zbTEl+lWr8?J#=A~*7Q5q%^m;!kbkxE_u}58`!#1StheFYsA-<+*Qc{tI&xZa;F9aP z5`he}d<`w<2}I6MsVG+3V^wpo^|71-*x%Fh^xdbaDpU1Usn*GCa+Iy3x_5%BP zZ8xUO&eBOyQ)i05%QIzh9#e{7x4Ne0B+lvv)sIdWdK|)be(XA1_0w-}&GwI*J{=W2 zczK4hyOdDi<)4o{ZAzj?7^Os6i?%Tm9)7fFMzQcE?XNsEolJ$9v5epC0ZolfmqTpTXq^;iRtZWG*LRXk^X9^aA)MfcZkvU9w4uZfc@)gi-`qa|Vg!(N^Al%L-B7VKwQ z?;d@^sp(;^Sz+9dsgYtImv&JwICqEy>d~m8+WnpXaFvZ0snR&5P-`CHI2Ty!Hy7NWSm6eZVqy~(KXtYE>NaV=$2*^+DsfGbVJp}y zAAR;>*0}7oPD)FrX6FN^=bL^OXsLb_DpEUlQ9^p(OTQe`NsT|d4k*7pCi_N3Q#Z@k zd{R~HG%v3`EXx~>4Dwa~EOg;sz3^Xi{2Z09S2p?yWh?6J(AcZz-KrYbG%MDcEB67v zx{LaY2=$XYzw>eKeFu_o>S1MUxq3p_FZ)c%ZRVA0j(C5NuuF~7T+!BLemTsh(db0U z>??=Pt9-qp8XnTwIbC5@%Ze_^aC^z>7G1Ldn*#0?8&6DsbaB&x>Ho`WWlopOZY()f ztGx2M?aC`hyj`rV-!w*=e$tA(5F=OoQuOTO|6gu?tzdXH#lvw0)7yx7ed^tDvy$Ul z9?vY_tuiln@mG`DtuLN@@^1$VvGdoY>P+f?bY%Czl+Onu(+hgu{g$2~GUdg?i*7Td z>)82@tG{a0(zq_aa6h+u_JP(-#SLXg_8j^bPgRc5XAf84 zKHG!So^5F=(rcI_QYE^nrkd$B&(oBKB0Yw=r>n#l)l@Sny_x#o@Z;?j4+=lbDL*N&X(UoxKduJ1~k1m<;ObR(=)BODTHzRH{-dETE)U84Te0WM~oe$PKxZ- zwY{*^qD|nD!h5Fwjr(et)!r*9!Q>q>CugS6wdJ=Sf;KQwRL4R>qjU0^$V zxsp!bZ;9^{GtO*p-)+i}*OZqSY+&$ zzMtJ&5~>Sksx6x2;Sl7n-B;ek^QvR5?WC$#b2-|&OZntKzhB+8ZSB?ebK3)gR^M9D zVD0$+z&&jb3CWpmS-Y6k=2fk^zkB8KJfDe|0(>stoMNz3D|;8S+QBB53)a(I_0(6L z?%nY3nMn!j(pODaE`MEQ6?=U~LNk-&x>Hr}8ayXhs5{NLw(auHIRTS6Y770A7V?+| zeqCf8`#r*E^4ZU_^1O-jB_jmB^!Yt6a&mmpyl%k@?{zA#j+X2a@YU z^ywLAS>!iWuH8B3M%yKRpRxsEEV25lF0WO|>0KS}%Bk$_@HkcJ_n8MyLEUrCJZ)*e zB;OYsoOA7SfHu<=?`ieru8&?UH;Fvv-pCaA{zZhIy3qo=f-gEt^mhtf@t#n>{dUtY zp7o!cUp(7!`9`4YS)MYX&Y!#870zx~U-8gBXUmeG-)1DmsNSE)wdEq$lbC-m4GJEw z-RRMzEhqi^z2~meET82z2yVX0QhfL>|EZ*0dDU|HR<#))GHM;BDIeUOke^YvG1M+f z-IKR+%hCt3Ot(uXK6>=?8%xqF*CNp*^L4ZB#5LE=%J)||w(I{iqa%fCld7_Wou}uY ze^A~aAd%KoeoebrV9iJ2kc>nT3yc{M>SUq2OlT`)08kMVgN*PO4D3h#c| zbAH_xvxH?*P4%wV42{Yq&aJBRPH*D57iSfwnsNDStjF~%$bZPq>$MdqYPiJJDO)j>)@qE*?EfaG& z&aL>G$yBc~A+Tej>qfCd5pR7YjjNLEd9T`W-Pqe`oN+b8xp|AD@YM&1IQYQyoy9nitdmq^>;h(A8r{(*-g(nRXMoyr%J7Z^;S^8I$k&sFUURHlC2*J*iT`}5sP zSR%j8^_a8piRg^xn(BWXI@>0uYh0Wjq-K12_eJ{$|2BH;5&p!Z`Yz~{#bz6gW4s@| ze}1cY##7xURQfk^%}XJUs#k3wqxXDL{37XfuOafp_I5jG&c-y4%{Jk44S9cl3rN>c zypS8LeCCsfVP40@lev$bJ8qcIy!u4_=!Hj9=8L@XdbP6A^~o7Q`PX;j9_79iSz8yR z;Q8Rp#3BaCm!Bpl8L11U_l3-p-t}h*i($v(g`v?OE^6;-cxKYeXRqnl)9pX4`=t5A zKgF{DQup7M)Z;4>@O)OV=%jyF^y80aQCD`f$g12ciIr$HcK;QzKF(fKTkZBHo!f04 z#U=@j*QOlU$RQxY#QA9dZOM1FHYO{V_x{C;^x z&V1Wr+qL(#cb)-L$fAFO)odWa%Gf40oi~sBy6^L~9dzUNyRhqIA@|7yR@uFWw*L6v z&>OdV_eRSk--EzyhR++P1bUf5{)CA`;(smQ|7sOjyFU7My|1M54`oA^@`>;01_%*5V+{T+P!PbJ_j&l6kK_DA|3>$hxxQN6O9_f34&U4_I$nE51fi zFK|iRk-J?C*^7_X%JxUx3bZb2TQZMJWBvQK_??0Yx!F6{KNd8RZ8xiQu~R?b*T1X% z*rbT$Bk{8z`Y`*ZNxhh0^;5h(ccs9ey-C*J=E|9s8y-h@{fmI-xd8g*Zlj}-IP`MeAUVG zpXT>-JgIto_}{s|D(VO4&I=Fv^Q)@R(~{}zyr=f>4jldb@)P&Yn9i;_71v_ z1ZYm^+LKp!>BfiOyu$e^`_4WzOS<}FX?6IWFZ2HHZLd3D>v%G^q3h1)kl3CTg+E)( z1)^o97p_rye{0W^J#BM7IJuXm z`wPZU%j|*+*3*LDPs_g|nB=nm4{lOtz5Ko zJw!#jCTx0HYqsX);wxXv9!4hGb_jpinr?42Ma%0#-j?V4Ea&c;EPGJ&F0=oPqH99l z+4HnExkf+!x?q}6P}(})8R|wcwOiRk_XI6;Hi-%I&@4T_~@FTH3{}7hdq`HatH${(57Gc#1sz}qbXnCEi7bNd?@PJ#-43ui`m}lcD#sCwKU2AKm@UZ2g-Df6r88^alw~u5~Rw z!F2oCc}|bS6Oqn3%L`{sQ1x1#b!yE*<0WS#dKfF@w8To~6rx@(^jjpdam`9Y!7>T+ ziOM@)@XpBF6B^NDc2Ioj$At$Ez4oZQU*YX`)6~Nwda>sbn@cV)oi_=%>djPip7{6~ z8}mc4q|i#)WzliVQbVJjwXJHI-5L7y=?vkoOQXV`8q3e~cseIvDQv3mnUBAObXON` z+xYO3cjx(?Ip@rUR-ahyUgo^dm+z`_>C$O|l^-6~E^Ff!d$+3dx_$9dnW^(4P2&uU zFXa9`^IOi!|1)Q&^HU3pxKqn~YCe9vpm^+9`4QIQ@|R1)FaPhG@rpa}XW5KW`=+GZVpd3HblP5VRl53@fksaQE9!|ryod_%O}KlK@ZqJPBxaIFw7duV)Br}$sE M`sLl{&;Anz0D+_+vj6}9 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-new-project-summary-qt-gui.png b/doc/qtcreator/images/qtcreator-new-project-summary-qt-gui.png deleted file mode 100644 index 81faa7e18e621c923471343f7e15eebda2eaeaf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13342 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 diff --git a/doc/qtcreator/images/qtcreator-new-project-summary.webp b/doc/qtcreator/images/qtcreator-new-project-summary.webp new file mode 100644 index 0000000000000000000000000000000000000000..9a0babbf7e74b45f6fd375009cc1e93c6cec0a68 GIT binary patch literal 7578 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 RT_9mMZ~5n>xT7h5IRHc>erW&z literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-new-project-translation-file.webp b/doc/qtcreator/images/qtcreator-new-project-translation-file.webp new file mode 100644 index 0000000000000000000000000000000000000000..7a7549e7d756d6b7bd6deb90e23b3cc6075ada91 GIT binary patch literal 6642 zcmWIYbaQ(p$-ofq>J$(bVBvFDl7T^A@o)>nRj%9HCdzdFonHH__M4-NkHgZ}y1#?& zyq{_FfYq?^^OFltMJ2!Qnw7OY`i~5kW8w6|t8Y!Wm;K*=%Pi>rF}qZc^B;|jjrsJQ zpFcdeugQ0wu5tCu^7fOb&+LgyOG|5;ck%E4|KDGEm6?U#y?5;L#@8lsr{9L2+V*P2 zx@9Y8Z<%*TWAYD|zTE8m;I~}mNBpE1mtC_L%AS&>RI@jBV)3)5?)wUIZkNq|^ZJdR zgL*&1_k5L%DN?7FZ(XUev}?}7SN6Idla6jXyQf3+fXJrp2aM(9-!X*QX`cT7d`0gU zon4j1=Pc(=k*MO3iVf)GRPb7U_Q6Nx2pg81m)k6R}~Ry&1qlzB_;g!y=`Z| z*S*{;c!lfX|MWQ-Ua4|SG78}ga~{20{m(h+_KArp@0Q+7G1;aU|M=d1<)6CypB=C1 z^#5dckM-)k&iY%oHP?PKQU`Ex|6LsI~><(U(|L7f7ci1N={->1uljuKl z_HUZVu*f%T|HlR!LvpdEA!sjb<-#6Z<-Su7<4&Hh9{gZnW-?DO(-;M6819Vi4UA(6;v8-Dq;B$84 zH(Lkpa?PrBQ}^gA>|Q^&u(@(B_^YVM2zrDU>{w%)# zWu@`sr9ZAe4Zp9tzC!NeA=%ZXd>$(o&+J!rNq;`0(xtu>|!#h@Mh1V12ZNFB2ao%hH-RC*ae@^RM(6>_1T)CLN zMIcD&7R%!Fh5Wz&uG}2HH^4>fh5V1lUH1e2OREIG{`QNtY?*{)ZRY=$8B!Og^YxsZ zr?YcT;pC>4(g$-z^94KQ{_XyJ`TciMkq75*^m|(w*RwL64=w01GmA9mI&Aeu_O5%q z?Yr8?mH$J_tIa=3tcksK8`Qc^*hC8`jf)_M#gbnM;gBN&e}O|@7&jOK1`djg;h=9n@Y*5S9AJ{pYkk)?}pu1J9-zC>2T<-kq%Y( z@cpJ``bySa6Bl=UmDr-XhhfUbk8(Q?lw9O+;#s&OB4JbIpOpE-N> zZ^`3x%${#?_Wi`=al|cEQ7TDy>w&AHKMpGMY+tCmurX{dXAH-~6**g(rd*rb|2om) zjc~M6>L-p4go6Md8R&v0(PaOTQ?8>}or=Rk&tpk;1W$^ABbo ze|hn$-8F3$AC_+OE50_bbpN~v4S)S5@UiZXC2RGzsw}jbogcZT>EfJI%eKt=HvjD6 z3EoWo%l@VpyU6g_{qVf>Z}UuxB1^GV+CeX(*L5@eT&48$+LH^LBt_OqO}v^KaQew) zZ_(2kyOZB*2VE(0zGD!T>e$_2bCvJMU5>pc8ma=fa7**8>bPrQl73M7&UU%VwBRt6 zqf+mUee!mkPZeE%?27$?I^(KPzw3$1rI)jBoHzaGHL>26hIb!{X6N!Yr7YYW#8M?4 zmZq^WroqNZS$N&Ff}5$eZCm+%YFS)Mj#zQzqHAMHp#odsk_g3&-sXj?RF(WJU6Wr; zSlTy3hxP92-3zl53fxXOaW}j(da+q%Cvx<_gT6T{p<{f?HQ&VZRKRYcV$9E_>l@HC)0^0S#J*erQ0c8F>v%W zcI}$vmiFl2h2K|oKX4u^a;z1cU$ur|jXIMO*T>d*s}@D?$#PEq6uNbt?4o%gCP@>N zmK+lQGNWS#vrW9{uW7IQ)+9SdI_U@O@pEZ&B&9Oj% zNx^$GHL9EWmu>x@v1;bDIl(c959Cy9N#8$mjjt_hmiI(Y)4$ z>-5$o5xFx&)EGA(b3-?`@QB>#7!FOB5V z`GWdl%=J!8(%!{f^@i>77QJxCvhX1NzWyaMtBO4;SBTc!(=g{gmVBe9d16z0wTL5k zS@V<`Pb5@t3SQ@sd^eGMk-SHBv!cbM$;-~{KjblS(*v*1wh8C5Vh-LkPMw|>6_>GW zUXvbIN!sN?)`GjqHj3sU8$~vTT=L8*kaSC(nQ- zDL`T8x{fb0GuoP2m}^TE=2mjAQ|7eY(V@(HcZGx|(S!k@0 zI?>SS?82bgBQN3Sp;e_Jx5_l@hrngF)Jwml1jU${7wX9zG?8&CNU>;qkR!X0UA%C~M8?Agt+vdQSpGUB9u?fv zZlAe(p+ZiFGGq6oG%wGjT@!UA*c0_1TIXtfIC#--#cRhZ!KL$sRqkX;ToQaI=det8 z!m&;%-n#{onv+zDUL<_4cz0aTH1+8kiS`Ch<3H>RH{5r2vgj9aQkXf#E{KPx#mkN% z)1u^>l)Av2waVWfC`C!>ClsE)a8Tm~dt&3{uMUmPO36!v+66R}w3c@~Rw&`rR63)u zW(m*pH!Tq|Y7=f`N))jderLEP$g-qxk(;vlin+Q%nu?x(E-bv$-qn%%&HS9j=2=o( zK0SDHyTP4n=MrOoW@bePc0Eq>333qv)dhmOz3j)01zG+o=sb{FVWDB=rr{%E{lwbC z-Far?+9%2Fcdkx4VC}&MGCkRxBi%(orBmL@Md3uQ$|^?r%{KcSd}*=h(d0oBY!Bz?}>7xla_6e=S+0GlrSmEY%$l$jadrJr-U6;mUGNv zeS83%>{=eCJo#b8vzhzoe3La>Unq0$ygXrM%WvJ;7kAGy6TS9%;;~Mt-a8BC2=t?aYTJ$muvjGqOPM{6(4IB{hyTP#U)?$jBVm( zm&m2Y`EL^4)_z?0wrYXnjb3#(uflon3b7o9< zG^OVNgHkSIr=qYt6I0sBElf&=jLYh$d|;Ik`{wm3R%%s8%EXnw!(6V^-ceVzQgli! z|CzXjd+Os=(>WRB);wDxT9OuQ^l{-7!GHR@4sP9&x7YQwlV`c-;%9zqr#q~*DY$yt zrF%(W^GTLDB7#aE6KxiXe@rpZ9!0rj>87iiKkfS3Fv40eb~vR$)0wgIP%hhN%jtJnfFBTrabxm?1iEOUt-~& zAg)XE4^H^dy2ilqoadUVpZW8HcI${rI)_&VxUv*Kf42_*)r&6BG=~*T2 z%CO7COT?k%*;2)o&s?|+QX0h{b>*givvW4zyFcJ^?XFeNcU`!^Cn@CJB|a;|@tkr> z$X=f};%@{dn<(wtv@pBfCh-cBf5&xG^|_IESTB}1Zojwa!Ih#fH+JoDX=Af=nc^3) zRAfrUKNoJJnL(P{U!@-6S+n%P)%pcLISl?coU+<+D5?A2A>l`{XE`rQHa3ZI&HO9H zx_sK=-IF$bm6_n&VzFupll}!I4ekX2CEbygq58tYUX@0X&nzzHulzjs<`wbeaQpjt zVYLs=Z)%O(XS)8q_>22NU3q(#T4?wm6&Bi?kiPro|6M=*qKt*tZ96IAKkf6Qk4^>0 zpVaiR2+CM~+mZ5XXVGev7Y|N+`PeVaDl1X^{z&9W#dy~J%XYNfT>H*z)hWZv#kb}4 zKeQU3eLZPYN#xJWFDkFx{~SH@>-~wQwP%V~FZoma=c~1r4`cmCi@k9wjA8rwm2GTR zwrG{Q?Q=cI!1|-RtZK?Lp_rmLpU)qb39UM^GfgEyq@rhT?xg&sk0*)mS=pjhd1%J* z2TDJ6^RyS966O?PlS_^g;`hAK#xfy>GgNIxi@*noP`P#MLb?=o3a#=HXjk|kF_Xv6 zx%l(;*hy)tv;@!3h%pdqX80gcY?E?DZ(1eKgoBFF(;_66?m4mMn#mJ~OwacdPkL9z zZV>Zj6n$&d{^os?!o!bQxv~NRL8=a3k;Snt4lgsi1TwSNWnbY<pL(rQ_6BR;w;xQ9J7mlceX^UUblRUf3Wt*w=j~!vm&+fjP zaB^agX*l<$$i?@bu!&j5_}p~-R_<6Jrs6o~`599UEwi_kXD%jLh5boMy*k_1Zz8v* zwn`!{=)(vB%=2yO}~4%?%(~SzxSVPvVD2{ zTb;E0_KLfMQ~9B6`Tw1}?;mT|+&@G8$l=w0j=t*o*t0vm`qCR)bMD)hv}c>2s@E>sTl(Ph zo~pld&;GysXIA(_vY0Q~vphm$#13e%&l&cvbhjUCpubRVUV#|EpbhT{PBycjNr@#$tE7 zNzW!QubNijck$ommnw4hY_os!)`W`O_xk*}UUrH}u=%MI`43hv+tI+PeD;d&$NTTw z`pSPkRo?rzWas}C!tZ;Y_a9W-->6@yUp4E(rWr~lGFM-@N1b_Ux2Sw?+>+Uae;Vqq zFaE!2+qTxQ#H_r~_cORZ<`tc*_$!gKG5^8og**C=_s!ThZDnPJ=3Sxd?*ISBG=|PN z{kLeV=u0)rJu(_~e#+ne7~T;1viF7Nqy610f2Yb+bA0^x>&5=%hx?{nE|c5X^)+sN zx$yj-FF&2Ta_5oV&ZDp2C9apRKJ$Su`@Nm(qvQ=w6WaG&?OVC{e5dXv$$4?_CR_ix zvGKRN#QaBhlQ*i!>-bLm!dte-Y(4(6+wZ82=0S-SEB$f~ZZdNJUl;c^wteT(*Lkm{J_<<* za^?s*UKEaW`C0$>Op^VM=@qENB1cUAXG6`|tD1PVZrb8GI3HB9cjqzouCJcyKo3|HXfc-*Gq z!fMO^89NnJmPepk3UbZ)XGbec9o@N|#6Wi6bm?4vaqJa3O+F5=*zE7b!_|gh1?D9)igKuJ9GDaQf2#WkQ!B+%5V{$ zfCk04Uo@T^{;t0`Z*gR1+KGwZV*A7EzIsf(&@W`b<#Y39+Z>M_?z3kGt^aXVxztI* zxK-)R`58g$e_U2>bz*95)Vw^yMfuK|DR)KZS1s|I(IQ~5v}PYbDUL6s&-siyF*V>gXv^l ziFI1Z<{$cj2RKBm^X6T=yJ99+7UxRozh^#Pb9<$E>0v}$NZ|a{E55V6bNJ-oHMgJF zD|CCrsuhPL4}R23{=I*4Su?Lu^yRi+j?DHKPEKJcz1ybnv-6wo!s`t??+dMzQRqCj z*4Q9?zhlV8kY&ljQ}m8!tp1y)Rp;*!E1!1y^pS0ml?&>*S1@^Y_~hvNFFDt%d-|Sh!ou$ElUv8+I_=AZZEuy_Vs&?}^q4ncSJ}Kt(Vs3?88NJ! ze|ewk6)oOlwv+rhgN#fz^_2QW-B*O@NIUvpuCm& z-aO;g2IXhnjM__YE#>=NC6t|N6}HJs?ReV0z`H@lqAOLGtmEB$`|3Wm5Ys)f9<#Q! zWjm}2n!h?Ie^HNbmilYgxas$1zBit3GTGAQqTHdB@Xo1)EYe%Hu5JO4VP zR(SJxl;E|M(V@pX#Nv-vF&5dE?Jqi7-n8n8j@qtU&zC*=EI(ma)x4)gmG6tquAO?d zearnbNA6$qz9}93v#a!0t@U){^NL0rr+wbK_R%%vt*wA6`}Xndv)m+9X>7dh_U`y~dF9)` ztad;3M9;;)BNkK~O|`gj|JTPyfBE$zZ?&$7|GL_J)};T3E1wr`S9!6ZUXRt!zlm?% zzLxJFTsW;PyziYEaktaqI2f|C8mu zCdwDoz1&joV7#_LqSnxfsYfSA#X(}B!pjn&a*j@p#ve%nVs```w)AGJubaHZ)T=k^ zbl+UhB=yNtxUZO95{t?0Z?t;Mg~l$@y>7=db_$bo1{w z#pgfYu{~eB{`;Pu_w%aD=HE^Ko_GJ&-SqF9)<&=AEPH$F>YpSLv;3Pyk9*DIZlAoD zyuAPIUbES=`Q}=czF2nbywv~se!qTBOgy~cXrh&J58u?PsVOhsoxkPZwi8o-x_ajS5e02x4qrpcBkn)x%UxIIPVsw#8urYI?QV>V^N^+XZst@L|5L` zueriLZLs)N_3xZ*q7&bpjjw+_x&7g+?C$mce^-31xZYdM_vYrzn!>;9tPh31JwAD( ziTryGe-7vE`}fv;mtARi{Mfb6CojItw5_~8@5+O{$L{}G_94pL%x(U>f6sWfxeL`6 zA9}#PNT1grPLKQl?|LOAB_*RPDGII zj~+if_+hbQ_O(x+if%-Ht(WGE-y?dOzwSfxhb@~7Yd#-ZJH52%+10M=RbPF6J%6}6 zTEE8l_vVzCmF$bp%VZr|v3mK=q6^1DjxOKn7G{$$SMYkY(nLkKuYTPf9X-iTbAMIW z|CfI;S z+gDySPS1;t+#C`4Q#vs<=A@7&--ol@;&HKC%bi_ZQr^r8JKMMQ&@9n!v44-o|2ca9 z&)NH5)r%ux9^6`yI~P1 zWQ}-zSJxensyxe;p7i(U{Qp1W|9_4Dz9RDG;)a!P-?kcmYz~|2Tlcy9+=rL?L9S~` zMP56dWtZ0fmi29^v3>XSeLm;2d=9Lh8~!t`pZ)V!)&E6zS9f{w>CbxC zL?`}=Ra&a6EvfP5MYiqk4|-we!e72IaepyA(#7T2w#=*VBbcwQnUG)q`*!{J^7`<= z&5LfoD9h}8e=p;DL-_eE^RCq8{W}o$Jt6$ni=>;)cb`qJe;M)iL^#N1lQut5pS^i+ z4&D(LRgZSHj!a4Wtba>4d+Yg)ud+L*ygTI`w<$ow`hCIqpIzts{>CaP8Tp#N{_^s& z_R7foeLvGyM8167_Vs&O==C+%6y7p&x4#W~KK1!GgHW4_o2k=7->G)x-My^ry>;@L zlydLHtIaPpJKuVpniDOzI`SrCvVK&B@#(TlUw6A`eNPkpzU64yWzlD=zrX1K#rW~4 z-sZNmwh{UJ|CarDlh{A&>i3xrYv=EuWv8ia>8gFr=GThIotY>0muyxS`Q@S4x_H{% zz;OErJJq}Hi}Fu1n6B=>8>ww=zIuz<*LnJ;-Yza`o0DDl%NCt|^*ZyWv*SztwNrD$ zX3tfxp0I9rXxvT5!>7IaQjUI)ooc$VOnS$fY8}I^uhqUKtZ#0cIRA=eMubjHZON2< z(>-22NGa~%o;d0H`g5 zrl!w(t~X=q-R~2v>LP4z+x|+Z;taqwOv+BD2r%e9EoRzY+wYv+ts@5bfnRm@H zd4KiIjw`o?Yz@TMhW#y_Qa9Zrt>InDvN*&4eBtNA&)*aj6qKCa^WoEy_xpao`@e4P zhbOn9e_YHDXfIW4I5CpKq!ySTWd%uUV8m$lt=eywlpSs_6|LDSW4T<+{w zbp!Hr==-3L&A@FRj)L`3^8%> zt2zt}rrZn;XPFoRHebI*GT9xdLiEp_-%Q1XYRN3YI#^QN26iko3U zn(y+k7cUEcd;Q$HSkveW(2eY54Ii8n5rRliI6sGGT`aB_Ue*Afu*#E8I22+2+mh9EBJK|y_Za240oMmeDcGlHm`&;!09k$&;$HdxwvFDTW&n2&2e`iG9ID7f7_q3|ZeCcgDdjj??p3=K#NB+vd zZAqf)pR~TJtaEKHYemko@4o#z#d!WLr|tW4`^}8D9rHi0tGoV@ z;JU!;Yc}o72=98f`(owvS@+A>{P&&RKJD=HdGRj_kLX%|df|BZ&4anA6ZLcVs;|Gd zGx8?mV^eMOiL0v?2s4;w=Vpg(x|wa-`A#$J=?`eVwWlg+ox3jH>->FVAm zEDTxKqOPn-*?n7=H*xlioQBQ(&$5mext{In(~Uc!_WRD7n};f2Z2T8^H+j)h&3)P$ zW}ohvY6s1}WvX4Q*!C|gte%~BvAZrPuGYM`e8?^2?5k^Q{CYEN*P4dRofUc`cxsQ? zy}%^p_>1?}oKapKxcS-(=GhEu+@;NOBtAE{-PQI<F>gRT; zuU)=<{oV95d&ccwlCtx|el41EG5Epat68u3q|(mY?yC6si0j;0t-mW0uAcbZE*t*O z^YFxLYhJXg#$IM@$XpZ2^Y_l0H|Yl1@+N0Q7kpbirF_bt6Q6T;eAyLwbC&S_ylWcS zVH@B6oT12&CB|^zNX46r{Hr4w7`~-3GOUPXV0eAgnSWjoD7)l8JgI&KlB*JevaShd zi7_UXJbgH$_l$XEqHxeYiy+W`LpY4k{B44ElX=n+Oj3$-rlZwlk!N_ zofYq57AmT?E9=j*zVz?giO=G}?5feKI+Yu0_ZXG_*kmdBcH;JaOS8E0g}zXMZlo1wnaq3Cw<4@NYwPN~-rHjPeB^v=gSKYpCaw%zA~pHe z9p`HnuUB7PH);Lc->eKhzjsC+oqXqXc34H-_YDa@Kkhr`x6$Z1;`+~`19w+EJr(?JiMA;>!;CA%n}br97N1->P=VwK6&b6-0b5|!nd4D;VBQ&K4!M)d&<=CPQ%Dqt0OkIZCkbe=On2Y z!PdQfSN9(9%?b{Ae=R+GvqG4eWN_qWwbW(Ts&09$b6t?OcJ-{SvsUk$Wh!WzJy(W( ze$%Y2+q|V0E3I1FEDfa@oM!=)zFCDuYBT;K3e@FR5$i2_vzJdM7zyZ zv-e&&T0CDTQctx$k#G9{mmPm@g~cz~_54-fd;Y-wtNY&FU%lz-jtv%BdQW$)ex0!2 zE;ajf*S{avW1BXLzkS^QZQHHv{G0dZcUeE)`v0TBoBmTPBZc>wudY~p?90PWx$pX? z{)xWJ%RBvV?yQ{#Ij>8Vx0jrWf4bGc&^F%uulgE;ikfNK>ms7}*rvW*BKA)(*z$Df z_ai#DZH_EAGylCeZpFW7+1V=_ug%<4zViRmh$7WJ#}rn2bA|sA-uCYHr1;!V=RNOk z*|J}B!Lir?W$DK!PG~Jm0q9rQ19Rmj^BS4$ELs4{rUEE zzi#=F4L8?WS!cIDKB<0gMWk@;1%s-^$Ie8GJpHcU^*_j!?d3n_CF}3c-_*JC@2;hv zC(V8O>bJgYo`2+H53jkA>vpK8-97kPcjX`MtM#kf_nrH4Z_T&OGTveV{n4?hWv*W; zqEFpBEN8B}HhxNYf%ug}uL9@Xm($KY`Aa_XW7WD>rggqarDYAXM5|w($i1v}|3g>& z-e3D=YyX_O5^;WUenN_4`1%&r*JVdm6ui(=H)71s(C*N@_R!`wsop$tHMx;^2LyoHRvqHBm-jU+= zYv$7vwuae!_nuGk+IykFG zs@S#8DXfh6_-j?9>UxWo;>~Tbn@`n!4O^cU`e&}rzWkX-19u8dTXS19`+8S>?W;Aq zU;j_J8q;)fYW)ZMTUR&Vd0l%>KJ{H~#YTJi%0Gps*@yfa&(~WhZCBs3*-t!QcxL2b zuIM{g`rfU2+_{(EUqo%$z1Lwp_hvmkccbcEeVpFSz?gsU*Vd(3{@4G#tJ(eex^vLL zo|1b$Y=ew8pUb!MD~msD3t9ViWozhj)mQmnv+uK-ZmM#5UcU3w3%8uV{XIL&&aSFC zdTjTNn__0?e!qM_xvjK+-txNK?6q}U%U4ZZ+qktpwQBwIR`U%tg;UnI+&=YPYTDXZ z?Z01FZr=9g|ME4*g?jo6KG@%~t^ZxMS8*<9_dFKM8IO;@3*4;sZ*tpD@7j{@6T|MS z8ErmidQPlo9@j0q*_(DJzWcax>7;1qWB>W4?a%wUC*|LT{MWU!PyczVxp?xd|I4%9 zN1nScy!nx=cICnocdk}0oMbO%d(3P~>9UgQYyXR4*2Fm6t&cHtpAot8Q@ah<|93im zl^;)rn(MB;$sblGe&qxxHFZthR`a*NZ)a6#{F=|%llJF@eY+8PRr34Ye(oz)6Q=y! zx;EnPs(kn8|NMbRvu56ZcP--l=lq1k!Y^^0r?0>5+M1oZ-!3%U`+xnP*LnwUbbtHq zzWdp&=x^WE|DC=Uam)Ra_MZuT(ssYkT+X_7MEZwYZ*XO+t=q11JWnTocD}89epOcP z7Pk+lqhJ3x7xlO4N44oARSPrk`W=4v%9C=l!#>`()sC~VwO2RVyZY;b`F5e3uic-2 zD6uZ7()G0ArtJ)G>wWSv1^${h>3}*d9U%|`>O+W4thrZ3J%)*s(#;rd?p5ick?QL9Y3}* zZK?nJ^D)~@>t%2MSeogrFP!7a%#d~M=!va{*)=KKpQko4GF+=ZyQ(nodbXCH@9ocr zZZa^u-jG&$?(C}S!0V5eW>&{p%)Y39_QcnB$9}K5+Ni$cpKDl`c*e;;rxj~1q(#Wj zUc2w@t&q8=BZ|HreVQtt#&TuNjn=Bw`nRJ>GjGikKbN-F`s}K@j)m`JPq7K@v~xOo zV)1uX-}Qf-=O5x+8~Js)Zk>6_|9woy7Npsl+Fd_;>fb`07#6cq+1p*-m%r^PFw43& zAzmZwskXbEW#NWrzTQ{X{4zbQ-q*PG`k6P?_=;9_9~3?=G&^Zj$B)J*E+?eyFHTEKih9(R{rw$ zqLSlxexDPyP1{rQJ|yqS#-r13{=QmU_j0c1C+>~a97c7Q`_K4%T@@MXz5m1dDK9pi zw%>oe$lrc#%Fk!^F)}lkNM#4U;wur|ufOyBeUb8+`qS^bd(3BEB~x4Ccy?ApU+A8- zIjizT-_M=-+v@ksvwzl2IcB!^-9Pyc23ww%WcZ zbw2xSn*M*uGiS;cnQr@~Kk=qv@ZQ+#k^)unyX#KY-ZUBrOocHO7pEf+cjtIv|l`FRR_KmPBvT<87i-TH|!th<)r#m zGBqNm+MgC)xBH$JdRKO#rS;h;fqijNFZS*Idu`2+OZxUV_a}X-+Q0p;?)?|}2R~$o zWxFSQPq8-Tme`OM`;*Z$`x3vDSl@{+cJH?7R%c}H+z`0(zmP4z)HRtU;b&LnR5 z?h`EExx%y}{(WxY^$^#EH>cgK2(L9VjOzE&XPVw)R=VTE(WOfdeS9Rx&b!!q|C6Vu z#L9m@Z(99q(fX&mV;+A`Zen~U`dz8!P<8lSYVc-iNjQPrCtHK+K!?vo8!^#kl6Zu5Ar zT$jiCSFTsj{=X#gVbAXq()T`3Zo9htfOy{edHY_3KVwQL{hk)8_xI3g*XgnUewy+n zevjMtl2v5(l2uz*ya`|MJ#NLZohjWL`)!W*Kr{-s>;lz1I40xp4d0m62u4CTR?&-5Xa&-hJ({ zv*L})JWY$Gr`K6#^Zj8w{N>7`*J+FlJ}zf}9pCL2yZ5ctdmV-i=XCXWcBkd;{(e7a z&d=r1>-Jup&CRgp{j9G~CS+fGxHF#$ z)d8!D?7p@B{~^5p>pA_u2me<+SiZ05C;R)GyK<|KO6&?3Id%6{spz?v=VB5$7!pp* zt9f+hRCbs~=>9LqzT1DB{r<_EAD3pk@B8q!{-^c-=gaGUewE+#^h@>j`v!B8Oj>3= z6>4HQpk-P2W?o}fm`3QrK-TiwkGGH4e>^)mzV7qF_{!IZ_kX*#c>lMsAKzBS*MIh2 z|8KiCe@)5fujZ>G*W7q^cD8xmor>0ujuR3pIg`wC@5QA5F8%iArepTCJL3Cm-|O%D zd1C#((zKUv)AxOvEC2tO_52@i%l~~{eZThM_xpcW-v9gV(dqpEzn0qHE&R_N{>~<3 zy+rA|e-mS-s+Z26bo8C^dEL~0gR=EcC-2^vUH0LfZuY77>nH8ong6jhVs_uw(%0Ai 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 diff --git a/doc/qtcreator/images/qtcreator-new-qt-gui-application.png b/doc/qtcreator/images/qtcreator-new-qt-gui-application.png deleted file mode 100644 index d2b3496c301bdcc7511fb6c1f091b051ad5ddf98..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13749 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 diff --git a/doc/qtcreator/src/android/deploying-android.qdoc b/doc/qtcreator/src/android/deploying-android.qdoc index 75f497cc6d7..84107b00ef4 100644 --- a/doc/qtcreator/src/android/deploying-android.qdoc +++ b/doc/qtcreator/src/android/deploying-android.qdoc @@ -227,7 +227,7 @@ If you use CMake as the build system, you must specify the Android package source directory, \c QT_ANDROID_PACKAGE_SOURCE_DIR, in the CMakeList.txt - file, as instructed in the \l{Locking Device Orientation} + file, as instructed in the \l{Lock device orientation} {mobile device tutorial}. To use \QC to create an Android manifest file and to open it in the Android diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger-example.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger-example.qdoc index 964bbaf5e1b..dd12571c8dc 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger-example.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger-example.qdoc @@ -1,4 +1,4 @@ -// Copyright (C) 2018 The Qt Company Ltd. +// Copyright (C) 2024 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only // ********************************************************************** @@ -14,11 +14,12 @@ \ingroup creator-tutorials - \title Debugging a C++ Application + \keyword {Debugging a C++ Application} + \title Tutorial: C++ debugging \brief How to debug a C++ application. - This tutorial uses the \l{Creating a Qt Widget Based Application}{TextFinder} + This tutorial uses the \l{Tutorial: Qt Widgets application}{TextFinder} example to illustrate how to debug Qt C++ applications in the \uicontrol Debug mode. @@ -95,5 +96,5 @@ (\uicontrol {Step Into}), and \inlineimage icons/debugger_stepout_small.png (\uicontrol {Step Out}). - \sa {Creating a Qt Widget Based Application}, {Debugging}, {Debuggers}, {Debugger} + \sa {Tutorial: Qt Widgets application}, {Debugging}, {Debuggers}, {Debugger} */ diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc index a6bc84a87b0..b59003193aa 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger-setup.qdoc @@ -140,7 +140,7 @@ \l{https://docs.python.org/3/library/pdb.html}{PDB} is a source code debugger for Python applications. You can use it to debug projects that have a - \l {Creating a Qt for Python Application with Qt Widgets}{.pyproject} + \l {Tutorial: Qt Widgets and Python}{.pyproject} configuration file. Install Python and set the interpreter to use in \uicontrol Projects diff --git a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc index 6880c27b5a2..f941fda579e 100644 --- a/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc +++ b/doc/qtcreator/src/debugger/creator-only/creator-debugger.qdoc @@ -207,9 +207,9 @@ expressions. For more information, see \l{Debugging Qt Quick Projects} and - \l{Debugging a Qt Quick Application}. + \l{Tutorial: Qt Quick debugging}. - \sa {Debugging a C++ Application}, {Debug}{How To: Debug}, {Debuggers}, + \sa {Tutorial: C++ debugging}, {Debug}{How To: Debug}, {Debuggers}, {Debugger}, {Kits} */ @@ -263,7 +263,7 @@ \section1 Debug Python projects - For \l {Creating a Qt for Python Application with Qt Widgets}{Python} projects, + For \l {Tutorial: Qt Widgets and Python}{Python} projects, start debugging the \c main.py file. If you encounter problems, check the active build target in the \l{Build for many platforms}{kit selector}. diff --git a/doc/qtcreator/src/debugger/qtquick-debugger-example.qdoc b/doc/qtcreator/src/debugger/qtquick-debugger-example.qdoc index e7141a99f22..18f410b49dd 100644 --- a/doc/qtcreator/src/debugger/qtquick-debugger-example.qdoc +++ b/doc/qtcreator/src/debugger/qtquick-debugger-example.qdoc @@ -19,7 +19,8 @@ \ingroup creator-tutorials - \title Debugging a Qt Quick Application + \keyword {Debugging a Qt Quick Application} + \title Tutorial: Qt Quick debugging \brief How to debug a Qt Quick application. diff --git a/doc/qtcreator/src/debugger/qtquick-debugging.qdoc b/doc/qtcreator/src/debugger/qtquick-debugging.qdoc index e44a2f93fc9..d0b227bf436 100644 --- a/doc/qtcreator/src/debugger/qtquick-debugging.qdoc +++ b/doc/qtcreator/src/debugger/qtquick-debugging.qdoc @@ -26,7 +26,7 @@ JavaScript variables, as well as change their values temporarily at runtime. For an example of how to debug Qt Quick Projects, see - \l{Debugging a Qt Quick Application}. + \l{Tutorial: Qt Quick debugging}. \if defined(qtdesignstudio) \note In this section, you are using advanced menu items. These are not diff --git a/doc/qtcreator/src/overview/creator-only/creator-getting-started.qdoc b/doc/qtcreator/src/overview/creator-only/creator-getting-started.qdoc index f41033c3e0d..8c54ecbe91c 100644 --- a/doc/qtcreator/src/overview/creator-only/creator-getting-started.qdoc +++ b/doc/qtcreator/src/overview/creator-only/creator-getting-started.qdoc @@ -39,18 +39,18 @@ \li \inlineimage icons/tutorials.png \li \inlineimage icons/api-reference.png \row - \li \b {\l{Building and Running an Example}} + \li \b {\l{Tutorial: Build and run}{Building and Running an Example}} To check that \l{https://www.qt.io/download-qt-installer} {\QOI} created \l{Kits} {build and run kits}, open an example application and run it. If you have not done so before, go to - \l{Building and Running an Example}. + \l{Tutorial: Build and run}. \li \b {\l{Tutorials}} Now you are ready to start developing your own applications. Pick a tutorial to follow in \l{Tutorials}. To start developing - for mobile devices, select \l{Creating a Mobile Application}. + for mobile devices, select \l{Tutorial: Mobile application}. \li \b{\l {Qt Documentation}} For more examples, as well as the details about using Qt tools diff --git a/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc b/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc index 83808a6a1e0..bef1f7cbb8f 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-files-creating.qdoc @@ -150,7 +150,7 @@ \list 1 \li Select \uicontrol File > \uicontrol {New File} > \uicontrol {Qt} > \uicontrol {Qt Resource File} > \uicontrol Choose. - \image qtcreator-add-resource-wizard.png {New File dialog} + \image qtcreator-new-file-qrc.webp {New File dialog} \li Follow the instructions of the wizard to create a resource collection file (.qrc). \li Open the resource file in the resource editor. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-build-run-tutorial.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-build-run-tutorial.qdoc index eb8e2a14ee1..206e028e348 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-build-run-tutorial.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-build-run-tutorial.qdoc @@ -14,7 +14,8 @@ \ingroup creator-tutorials - \title Building and Running an Example + \keyword {Building and Running an Example} + \title Tutorial: Build and run \brief How to build and run a Qt example. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc index 92858ff6078..7bf47440696 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-creating.qdoc @@ -52,7 +52,7 @@ which plugins you have installed. If you do not get to choose, the project usually uses CMake as the build system. - \image qtcreator-new-project-build-system-qt-gui.png {Define Build System dialog} + \image qtcreator-new-project-build-system.webp {Define Build System dialog} You can use wizards also to create plain C or C++ projects that use qmake, Qbs, or CMake, but do not use the Qt library. diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-libraries.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-libraries.qdoc index fc66a62e8a7..4dfbc400c01 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-libraries.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-libraries.qdoc @@ -91,7 +91,7 @@ For more information about the project file settings, see \l{Declaring Other Libraries}{qmake Manual: Declaring Other Libraries}. - \sa {Using an Internal Library in a qmake Project}{Tutorial: Using an Internal Library in a qmake Project}, + \sa {Tutorial: Use internal libraries with qmake}, {Add subprojects to projects}, {Add libraries to CMake projects}, {Use project wizards}, {Creating Projects} */ @@ -103,7 +103,7 @@ \ingroup creator-tutorials - \title Using an Internal Library in a qmake Project + \title Tutorial: Use internal libraries with qmake \brief How to create your own library and link your application against it when using qmake as the build system. @@ -114,7 +114,7 @@ \note This tutorial only applies when you select qmake as the build system for the subdirs project. - \section1 Creating a shared library + \section1 Create a shared library To create a shared library: @@ -154,7 +154,7 @@ list, select a subdirs project. For example, \e MyApplication. \endlist - \section1 Linking an application to the library + \section1 Link an application to the library To link a project to the shared library: diff --git a/doc/qtcreator/src/python/creator-python-development.qdoc b/doc/qtcreator/src/python/creator-python-development.qdoc index 10f054dcdab..6b8c3f30c82 100644 --- a/doc/qtcreator/src/python/creator-python-development.qdoc +++ b/doc/qtcreator/src/python/creator-python-development.qdoc @@ -113,7 +113,7 @@ \uicontrol {REPL Import File}. To also import all functions from the file, select \uicontrol {REPL Import *}. - \sa {Creating a Qt for Python Application with Qt Widgets}, - {Creating a Qt for Python Application with Qt Quick}, + \sa {Tutorial: Qt Widgets and Python}, + {Tutorial: Qt Quick and Python}, {Activate kits for a project} */ diff --git a/doc/qtcreator/src/python/creator-tutorial-python-application-qt-widgets.qdoc b/doc/qtcreator/src/python/creator-tutorial-python-application-qt-widgets.qdoc index 13b1f216380..58610d3f20d 100644 --- a/doc/qtcreator/src/python/creator-tutorial-python-application-qt-widgets.qdoc +++ b/doc/qtcreator/src/python/creator-tutorial-python-application-qt-widgets.qdoc @@ -8,7 +8,8 @@ \ingroup creator-tutorials - \title Creating a Qt for Python Application with Qt Widgets + \keyword {Creating a Qt for Python Application with Qt Widgets} + \title Tutorial: Qt Widgets and Python \brief How to develop a Qt widget-based application with Python. @@ -22,7 +23,7 @@ \l {https://doc.qt.io/qtforpython/tutorials/index.html} {Qt for Python Examples and Tutorials}. - \section1 Creating an Empty Window Project + \section1 Create an empty window project To create a Qt for Python application that has the source file for a main class: @@ -75,7 +76,7 @@ using pip. \endlist - \section1 Adding Qt Widgets Imports + \section1 Add Qt Widgets imports The wizard adds the imports to the \c mywidget.py source file for access to the QApplication and the base class you selected in the Qt Widgets module, @@ -90,7 +91,7 @@ from PySide6 import QtCore, QtWidgets \endcode - \section1 Adding a Widgets-Based UI + \section1 Add a widgets-based UI The wizard adds a main class with the specified name that inherits from the specified base class: @@ -118,7 +119,7 @@ ... \endcode - \section1 Adding Signals and Slots + \section1 Add signals and slots Then, add a signal and a slot to implement the random function: @@ -131,7 +132,7 @@ self.text.setText(random.choice(self.hello)) \endcode - \section1 Adding a Main Function + \section1 Add a main function The wizard adds a main function, where it creates a QApplication instance. As Qt can receive arguments from the command line, you can pass any arguments to @@ -144,7 +145,7 @@ ... \endcode - \section1 Instantiating the MainWindow Class + \section1 Instantiate the MainWindow class The wizard instantiates the \c MainWindow class and shows it: @@ -155,7 +156,7 @@ ... \endcode - \section1 Executing the Qt Code + \section1 Execute the Qt Code Finally, the wizard calls the \c app.exec() method to enter the Qt main loop and start executing the Qt code: @@ -165,11 +166,11 @@ sys.exit(app.exec()) \endcode - \section1 Running the Application + \section1 Run the application Select the \inlineimage icons/run_small.png button to run the application. - \sa {Creating a Qt for Python Application with Qt Quick}, + \sa {Tutorial: Qt Quick and Python}, {Develop Qt for Python Applications} */ diff --git a/doc/qtcreator/src/python/creator-tutorial-python-application-qtquick.qdoc b/doc/qtcreator/src/python/creator-tutorial-python-application-qtquick.qdoc index f8570d1bbad..d270a7cba37 100644 --- a/doc/qtcreator/src/python/creator-tutorial-python-application-qtquick.qdoc +++ b/doc/qtcreator/src/python/creator-tutorial-python-application-qtquick.qdoc @@ -8,7 +8,8 @@ \ingroup creator-tutorials - \title Creating a Qt for Python Application with Qt Quick + \keyword {Creating a Qt for Python Application with Qt Quick} + \title Tutorial: Qt Quick and Python \brief How to develop a Qt Quick application with Python. @@ -22,7 +23,7 @@ \l {https://doc.qt.io/qtforpython/tutorials/index.html} {Qt for Python Examples and Tutorials}. - \section1 Creating an Empty Project + \section1 Create an empty project To create a Qt for Python application that has a main QML file: @@ -65,7 +66,7 @@ using pip. \endlist - \section1 Adding Qt Quick Imports + \section1 Add Qt Quick imports The wizard adds the following imports to the \c {main.py} source file for access to QGuiApplication and QQmlApplicationEngine: @@ -78,7 +79,7 @@ from PySide6.QtQml import QQmlApplicationEngine \endcode - \section1 Adding a Main Function + \section1 Add a main function The wizard also adds a main function, where it creates a QGuiApplication instance and passes system arguments to the QGuiApplication object: @@ -89,7 +90,7 @@ ... \endcode - \section1 Loading the QML File + \section1 Load the QML file The following lines in the main class create a QQmlApplicationEngine instance and load the generated QML file to the engine object: @@ -115,12 +116,12 @@ ... \endcode - \section1 Designing the UI + \section1 Design the UI Open the \c {main.qml} file in the \uicontrol Edit mode to design a Qt Quick UI. - \section2 Adding Imports + \section2 Add imports Add imports for Qt Quick Controls and Layouts: @@ -131,7 +132,7 @@ import QtQuick.Layouts \endcode - \section2 Adding Properties and Functions + \section2 Add properties and functions The wizard adds a main window: @@ -158,7 +159,7 @@ } \endcode - \section2 Adding Qt Quick Controls + \section2 Add Qt Quick Controls Add \l {Text} and \l {Button} QML types within a \l {ColumnLayout} type to design the UI: @@ -182,11 +183,10 @@ You can also use \l{Qt Design Studio Manual}{\QDS} to design Qt Quick UIs. - \section1 Running the Application + \section1 Run the application - Select the \inlineimage icons/run_small.png - button to run the application. + Select \inlineimage icons/run_small.png to run the application. - \sa {Creating a Qt for Python Application with Qt Widgets}, + \sa {Tutorial: Qt Widgets and Python}, {Develop Qt for Python Applications} */ diff --git a/doc/qtcreator/src/qtquick/creator-only/creator-mobile-app-tutorial.qdoc b/doc/qtcreator/src/qtquick/creator-only/creator-mobile-app-tutorial.qdoc index b6f01f38a59..60c9b29f4df 100644 --- a/doc/qtcreator/src/qtquick/creator-only/creator-mobile-app-tutorial.qdoc +++ b/doc/qtcreator/src/qtquick/creator-only/creator-mobile-app-tutorial.qdoc @@ -7,7 +7,8 @@ \nextpage creator-how-tos.html \ingroup creator-tutorials - \title Creating a Mobile Application + \keyword {Creating a Mobile Application} + \title Tutorial: Mobile application \brief How to create a Qt Quick application that uses Qt Quick Controls and runs on Android and iOS devices. @@ -24,7 +25,7 @@ \image creator_android_tutorial_ex_app.png - \section1 Setting up the Development Environment + \section1 Set up the development environment To build the application for and run it on a mobile device, you must set up the development environment for the device platform and configure a @@ -41,7 +42,7 @@ \include qtquick-tutorial-create-empty-project.qdocinc qtquick empty application - \section1 Adding Images as Resources + \section1 Add images as resources The main view of the application displays an SVG bubble image that moves around the screen when you tilt the device. @@ -54,7 +55,7 @@ \skipto qt_add_qml_module \printuntil ) - \section1 Creating the Accelbubble Main View + \section1 Create the Accelbubble main view Create the main view in the \e main.qml file by adding an \l Image component with \e Bluebubble.svg as the source: @@ -113,7 +114,7 @@ \printuntil } \printuntil } - \section1 Locking Device Orientation + \section1 Lock device orientation The device display is rotated by default when the device orientation changes between portrait and landscape. For this example, it would be @@ -153,7 +154,7 @@ \skipto set_target_properties \printuntil ) - \section1 Adding Dependencies + \section1 Add dependencies You must tell the build system which Qt modules your application needs by specifying dependencies in the project file. Select \uicontrol Projects to @@ -184,7 +185,7 @@ For more information about the CMakeLists.txt file, see \l{Getting started with CMake}. - \section1 Running the Application + \section1 Run the application You can now deploy the application to a device: diff --git a/doc/qtcreator/src/qtquick/creator-only/qtquick-app-tutorial.qdoc b/doc/qtcreator/src/qtquick/creator-only/qtquick-app-tutorial.qdoc index b3b91a8d89e..ab1e9afe08c 100644 --- a/doc/qtcreator/src/qtquick/creator-only/qtquick-app-tutorial.qdoc +++ b/doc/qtcreator/src/qtquick/creator-only/qtquick-app-tutorial.qdoc @@ -7,7 +7,8 @@ \nextpage creator-how-tos.html \ingroup creator-tutorials - \title Creating a Qt Quick Application + \keyword {Creating a Qt Quick Application} + \title Tutorial: Qt Quick application \brief How to create a Qt Quick Application in the \uicontrol Edit mode. @@ -33,7 +34,7 @@ \QC generates a component file, \e Main.qml, and opens it in the \uicontrol Edit mode. - \section1 Deploying Applications + \section1 Deploy applications The main view of the application displays a Qt logo inside a rectangle in the top left corner of the view and two empty rectangles. @@ -46,7 +47,7 @@ \skipto qt_add_qml_module \printuntil ) - \section1 Creating Custom QML Types + \section1 Create a custom QML type Because the \l Window QML type requires that you add states into child components, use the wizard to create a custom QML type called @@ -58,7 +59,7 @@ \li Go to \uicontrol File > \uicontrol {New File}. \li Select \uicontrol Qt > \uicontrol {QML File (Qt Quick 2)}. \li Select \uicontrol Choose to open the \uicontrol Location dialog. - \li In the \uicontrol {File name} field, enter a name for the custom + \li In \uicontrol {File name}, enter a name for the custom QML type: \e Page. \li Select \uicontrol Next to open the \uicontrol {Project Management} dialog. @@ -117,7 +118,7 @@ Next, make the image move between the rectangles when users click them by adding states and by connecting mouse clicks to state changes. - \section1 Connecting Mouse Clicks to State Changes + \section1 Connect mouse clicks to state changes To make the image move between the rectangles when users click them, add states to the Page component where you change the values of the \c x and @@ -139,7 +140,7 @@ Because you develop with Qt 6, you must specify the connections as functions. - \section1 Adding Page to the Main View + \section1 Add Page to the main view Open \e Main.qml for editing and add an instance of the Page custom component to it: @@ -151,7 +152,7 @@ Press \key {Ctrl+R} to run the application, and click the rectangles to move the Qt logo from one rectangle to another. - \section1 Animating Transitions + \section1 Animate transitions Create transitions to apply animation to the image. For example, the image bounces back when it moves to \e middleRightRect and eases into diff --git a/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc b/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc index f7181c59cf1..6864010554e 100644 --- a/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc +++ b/doc/qtcreator/src/qtquick/creator-only/qtquick-creating.qdoc @@ -95,9 +95,9 @@ \QC creates a QML file, \e Main.qml, that you can modify in the \uicontrol Edit mode. - \sa {Create Qt Quick UI Prototypes}, {Creating a Mobile Application}, - {Creating a Qt for Python Application with Qt Quick}, - {Creating a Qt Quick Application}, {Creating Projects}, + \sa {Create Qt Quick UI Prototypes}, {Tutorial: Mobile application}, + {Tutorial: Qt Quick and Python}, + {Tutorial: Qt Quick application}, {Creating Projects}, {Developing Qt Quick Applications} */ diff --git a/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc b/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc index 22d887c161c..03abe50380a 100644 --- a/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc +++ b/doc/qtcreator/src/qtquick/creator-only/qtquick-tutorial-create-empty-project.qdocinc @@ -4,11 +4,11 @@ /*! //! [qtquick empty application] - \section1 Creating the Project + \section1 Create the project \list 1 - \li Select \uicontrol File > \uicontrol {New Project} > + \li Go to \uicontrol File > \uicontrol {New Project} > \uicontrol {Application (Qt)} > \uicontrol {Qt Quick Application}. \image qtcreator-project-qt-quick.webp {New Project dialog} @@ -16,11 +16,11 @@ \li Select \uicontrol Choose to open the \uicontrol {Project Location} dialog. - \li In the \uicontrol Name field, enter a name for the application. + \li In \uicontrol Name, enter a name for the application. When naming your own projects, keep in mind that you cannot easily rename them later. - \li In the \uicontrol {Create in} field, enter the path for the project + \li In \uicontrol {Create in}, enter the path for the project files. You can move project folders later without problems. \li Select \uicontrol Next to open the @@ -28,11 +28,10 @@ \image qtcreator-project-qt-quick-details.webp {Define Project Details dialog} - \li Deselect the \uicontrol {Create a project that you can open in \QDS} - check box. + \li Clear \uicontrol {Create a project that you can open in \QDS}. \note This tutorial shows how to create the application in the - \uicontrol Edit mode. If you leave the check box selected, the + \uicontrol Edit mode. If you leave the checkbox selected, the following instructions won't apply. \li Select \uicontrol Next to open the \uicontrol {Kit Selection} dialog. diff --git a/doc/qtcreator/src/qtquick/qtquick-toolbars.qdoc b/doc/qtcreator/src/qtquick/qtquick-toolbars.qdoc index 78641697655..96a313b8b45 100644 --- a/doc/qtcreator/src/qtquick/qtquick-toolbars.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-toolbars.qdoc @@ -107,6 +107,6 @@ To pin toolbars by default, select \uicontrol {Pin Qt Quick Toolbar}. \if defined(qtcreator) - \sa {Creating a Qt Quick Application} + \sa {Tutorial: Qt Quick application} \endif */ diff --git a/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc b/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc index 4596d46da2e..9d07d59384a 100644 --- a/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc +++ b/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc @@ -7,9 +7,10 @@ \nextpage creator-how-tos.html \ingroup creator-tutorials - \title Creating a Qt Widget Based Application + \keyword {Creating a Qt Widget Based Application} + \title Tutorial: Qt Widgets application - \brief How to use the integrated \QD to create a Qt widget based application + \brief How to use the integrated \QD to create a Qt widget-based application for the desktop. This tutorial describes how to use \QC to create a small Qt application, @@ -19,54 +20,54 @@ \image qtcreator-textfinder-screenshot.png - \section1 Creating the Text Finder Project + \section1 Create the Text Finder project \list 1 - \li Select \uicontrol File > \uicontrol {New Project} > - \uicontrol {Application (Qt)} > \uicontrol {Qt Widgets Application} - > \uicontrol Choose. + \li Go to \uicontrol File > \uicontrol {New Project} > + \uicontrol {Application (Qt)} > \uicontrol {Qt Widgets Application}. - \image qtcreator-new-qt-gui-application.png {New Project dialog} + \image qtcreator-new-project-qt-widgets.webp {New Project dialog} - The \uicontrol{Project Location} dialog opens. + \li Select \uicontrol Choose to open the \uicontrol {Project Location} + dialog. - \image qtcreator-intro-and-location-qt-gui.png {Project Location dialog} + \image qtcreator-new-project-location-qt-widgets.webp {Project Location dialog} - \li In the \uicontrol{Name} field, type \b {TextFinder}. + \li In \uicontrol{Name}, type \b {TextFinder}. - \li In the \uicontrol {Create in} field, enter the path for the project files. + \li In \uicontrol {Create in}, enter the path for the project files. For example, \c {C:\Qt\examples}. \li Select \uicontrol{Next} (on Windows and Linux) or \uicontrol Continue (on \macos) to open the \uicontrol {Define Build System} dialog. - \image qtcreator-new-project-build-system-qt-gui.png {Define Build System dialog} + \image qtcreator-new-project-build-system.webp {Define Build System dialog} - \li In the \uicontrol {Build system} field, select \l {CMake} + \li In \uicontrol {Build system}, select \l {CMake} {CMake} as the build system to use for building the project. \li Select \uicontrol Next or \uicontrol Continue to open the \uicontrol{Class Information} dialog. - \image qtcreator-class-info-qt-gui.png {Class Information dialog} + \image qtcreator-new-project-class-info.webp {Class Information dialog} - \li In the \uicontrol{Class name} field, type \b {TextFinder} as the class + \li In \uicontrol{Class name}, type \b {TextFinder} as the class name. - \li In the \uicontrol{Base class} list, select \b {QWidget} as the base + \li In \uicontrol{Base class}, select \b {QWidget} as the base class type. - \note The \uicontrol{Header file}, \uicontrol{Source file} and \uicontrol{Form file} - fields are automatically updated to match the name of the class. + \note \uicontrol{Header file}, \uicontrol{Source file} and \uicontrol{Form file} + s are automatically updated to match the name of the class. \li Select \uicontrol Next or \uicontrol Continue to open the \uicontrol {Translation File} dialog. - \image qtcreator-new-qt-gui-application-translationfile.png {Translation File dialog} + \image qtcreator-new-project-translation-file.webp {Translation File dialog} - \li In the \uicontrol Language field, you can select a language that you + \li In \uicontrol Language, you can select a language that you plan to \l {Use Qt Linguist}{translate} the application to. This sets up localization support for the application. You can add other languages later by editing the project file. @@ -74,7 +75,7 @@ \li Select \uicontrol Next or \uicontrol Continue to open the \uicontrol {Kit Selection} dialog. - \image qtcreator-new-project-qt-versions-qt-gui.png {Kit Selection dialog} + \image qtcreator-new-project-kit-selection.webp {Kit Selection dialog} \li Select build and run \l{Kits}{kits} for your project. @@ -82,7 +83,7 @@ \li Select \uicontrol Next or \uicontrol Continue to open the \uicontrol {Project Management} dialog. - \image qtcreator-new-project-summary-qt-gui.png {Project Management dialog} + \image qtcreator-new-project-summary.webp {Project Management dialog} \li Review the project settings, and select \uicontrol{Finish} (on Windows and Linux) or \uicontrol Done (on \macos) to create the project. @@ -111,12 +112,12 @@ If you selected CMake as the build system, \QC created a CMakeLists.txt project file for you. - \section1 Filling in the Missing Pieces + \section1 Fill in the missing pieces Begin by designing the user interface and then move on to filling in the missing code. Finally, add the find functionality. - \section2 Designing the User Interface + \section2 Design the user interface \image qtcreator-textfinder-ui.png {Text Finder UI} @@ -141,7 +142,7 @@ \uicontrol Sidebar. For example, to find the \uicontrol Label widget, start typing the word \b label. - \image qtcreator-textfinder-filter.png {Filter field} + \image qtcreator-textfinder-filter.png {Filter} \li Double-click the \uicontrol{Label} widget and enter the text \b{Keyword}. @@ -199,7 +200,7 @@ For more information about designing forms with \QD, see the \l{\QD Manual}. - \section2 Completing the Header File + \section2 Complete the header file The textfinder.h file already has the necessary #includes, a constructor, a destructor, and the \c{Ui} object. You need to add a private function, @@ -218,7 +219,7 @@ \endlist - \section2 Completing the Source File + \section2 Complete the source file Now that the header file is complete, move on to the source file, textfinder.cpp. @@ -258,7 +259,7 @@ QMetaObject::connectSlotsByName(TextFinder); \endcode - \section2 Creating a Resource File + \section2 Create a resource file You need a resource file (.qrc) within which you embed the input text file. The input file can be any .txt file with a paragraph of text. @@ -269,32 +270,32 @@ \list 1 - \li Select \uicontrol File > \uicontrol {New File} > + \li Go to \uicontrol File > \uicontrol {New File} > \uicontrol Qt > \uicontrol {Qt Resource File} > \uicontrol Choose. - \image qtcreator-add-resource-wizard.png {New File dialog} + \image qtcreator-new-file-qrc.webp {New File dialog} The \uicontrol {Choose the Location} dialog opens. - \image qtcreator-add-resource-wizard2.png {Choose the Location dialog} + \image qtcreator-new-file-qrc1.webp {Choose the Location dialog} - \li In the \uicontrol{Name} field, enter \b{textfinder}. + \li In \uicontrol{Name}, enter \b{textfinder}. - \li In the \uicontrol{Path} field, enter the path to the project, + \li In \uicontrol{Path}, enter the path to the project, and select \uicontrol Next or \uicontrol Continue. The \uicontrol{Project Management} dialog opens. - \image qtcreator-add-resource-wizard3.png {Project Management dialog} + \image qtcreator-new-file-qrc2.webp {Project Management dialog} - \li In the \uicontrol{Add to project} field, select \b{TextFinder} + \li In \uicontrol{Add to project}, select \b{TextFinder} and select \uicontrol{Finish} or \uicontrol Done to open the file in the code editor. \li Select \uicontrol Add > \uicontrol {Add Prefix}. - \li In the \uicontrol{Prefix} field, replace the default prefix with a slash + \li In \uicontrol{Prefix}, replace the default prefix with a slash (/). \li Select \uicontrol Add > \uicontrol {Add Files}, to locate and add @@ -304,7 +305,7 @@ \endlist - \section1 Adding Resources to Project File + \section1 Add resources to the project file For the text file to appear when you run the application, you must specify the resource file as a source file in the \e CMakeLists.txt file that the @@ -314,10 +315,9 @@ \skipto set(PROJECT_SOURCES \printuntil ) - \section1 Compiling and Running Your Application + \section1 Build and run your application - Now that you have all the necessary files, select the - \inlineimage icons/run_small.png - button to compile and run your application. + Now that you have all the necessary files, select + \inlineimage icons/run_small.png to build and run your application. */ diff --git a/doc/qtcreator/src/widgets/qtdesigner-overview.qdoc b/doc/qtcreator/src/widgets/qtdesigner-overview.qdoc index 29d2c7d34b1..724fbba6125 100644 --- a/doc/qtcreator/src/widgets/qtdesigner-overview.qdoc +++ b/doc/qtcreator/src/widgets/qtdesigner-overview.qdoc @@ -119,5 +119,5 @@ To import device profiles from .qdp files, select \uicontrol Open. To save them as .qdp files, select \uicontrol Save. - \sa {Creating a Qt Widget Based Application}, {Adding \QD Plugins} + \sa {Tutorial: Qt Widgets application}, {Adding \QD Plugins} */ diff --git a/doc/qtcreator/src/widgets/qtdesigner-plugins.qdoc b/doc/qtcreator/src/widgets/qtdesigner-plugins.qdoc index 3ce3dc02f7c..2ba9886f8bf 100644 --- a/doc/qtcreator/src/widgets/qtdesigner-plugins.qdoc +++ b/doc/qtcreator/src/widgets/qtdesigner-plugins.qdoc @@ -69,5 +69,5 @@ \MinGW or installing a Qt version that was built with Microsoft Visual Studio, depending on which configuration you want to use for your applications. - \sa {Creating a Qt Widget Based Application}, {\QD} + \sa {Tutorial: Qt Widgets application}, {\QD} */ From ad7de40a9db79f3acbfae96dfd4cdd33346337d3 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Mon, 17 Jun 2024 17:30:19 +0200 Subject: [PATCH 13/77] IosToolTaskAdapter: Don't leak the IosToolHandler on destruction The TaskAdapter may be destructed at any point in time, even when the task is still running (i.e. when the task tree was canceled). Make sure the internal IosToolHandler gets deleted in this case. Amends 150441bf88177f6c2325d832b44c8ec82ab73352 Change-Id: I1ae4d324390c38d4faf9ec32f83c66295ed18532 Reviewed-by: Eike Ziller --- src/plugins/ios/iostoolhandler.cpp | 8 ++++---- src/plugins/ios/iostoolhandler.h | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/plugins/ios/iostoolhandler.cpp b/src/plugins/ios/iostoolhandler.cpp index 420e119e741..0626a552533 100644 --- a/src/plugins/ios/iostoolhandler.cpp +++ b/src/plugins/ios/iostoolhandler.cpp @@ -992,12 +992,12 @@ IosToolTaskAdapter::IosToolTaskAdapter() {} void IosToolTaskAdapter::start() { - task()->m_iosToolHandler = new IosToolHandler(Internal::IosDeviceType(task()->m_deviceType)); - connect(task()->m_iosToolHandler, &IosToolHandler::finished, this, [this] { - task()->m_iosToolHandler->deleteLater(); + task()->m_iosToolHandler.reset(new IosToolHandler(Internal::IosDeviceType(task()->m_deviceType))); + connect(task()->m_iosToolHandler.get(), &IosToolHandler::finished, this, [this] { + task()->m_iosToolHandler.release()->deleteLater(); emit done(Tasking::DoneResult::Success); }); - task()->m_startHandler(task()->m_iosToolHandler); + task()->m_startHandler(task()->m_iosToolHandler.get()); } } // namespace Ios diff --git a/src/plugins/ios/iostoolhandler.h b/src/plugins/ios/iostoolhandler.h index 33d413e3cfc..3f81fded81d 100644 --- a/src/plugins/ios/iostoolhandler.h +++ b/src/plugins/ios/iostoolhandler.h @@ -82,7 +82,7 @@ public: private: friend class IosToolTaskAdapter; - IosToolHandler *m_iosToolHandler = nullptr; + std::unique_ptr m_iosToolHandler; StartHandler m_startHandler; Internal::IosDeviceType m_deviceType = Internal::IosDeviceType::IosDevice; }; From 7dab192007c1f210cbace26e0ce0c961fa1af3ce Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Fri, 12 Jul 2024 10:17:36 +0200 Subject: [PATCH 14/77] Bump version to 14.0.0 Change-Id: I4c85e3faa9d22bbf05db94fc76adec2aa215dcaa 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 d60cfdaf2ac..b24847b7705 100644 --- a/cmake/QtCreatorIDEBranding.cmake +++ b/cmake/QtCreatorIDEBranding.cmake @@ -1,6 +1,6 @@ -set(IDE_VERSION "13.0.84") # The IDE version. -set(IDE_VERSION_COMPAT "13.0.84") # The IDE Compatibility version. -set(IDE_VERSION_DISPLAY "14.0.0-rc1") # The IDE display version. +set(IDE_VERSION "14.0.0") # The IDE version. +set(IDE_VERSION_COMPAT "14.0.0") # The IDE Compatibility version. +set(IDE_VERSION_DISPLAY "14.0.0") # The IDE display version. set(IDE_COPYRIGHT_YEAR "2024") # The IDE current copyright year. set(IDE_SETTINGSVARIANT "QtProject") # The IDE settings variation. diff --git a/qbs/modules/qtc/qtc.qbs b/qbs/modules/qtc/qtc.qbs index 04016cbb25e..9e50abc5e27 100644 --- a/qbs/modules/qtc/qtc.qbs +++ b/qbs/modules/qtc/qtc.qbs @@ -4,16 +4,16 @@ import qbs.FileInfo import qbs.Utilities Module { - property string qtcreator_display_version: '14.0.0-rc1' - property string ide_version_major: '13' + property string qtcreator_display_version: '14.0.0' + property string ide_version_major: '14' 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: '13' + property string ide_compat_version_major: '14' 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 From 95f2f56e0208d968dd9e2990e35129aabd7a791d Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 11 Jul 2024 16:08:09 +0200 Subject: [PATCH 15/77] Doc: Update screenshot of Preferences > C++ > Quick Fixes Change-Id: I82775c2bea4e5c07bd7e769728786873b46ea8ff Reviewed-by: Christian Kandeler --- .../qtcreator-refactoring-options-templates.png | Bin 9582 -> 0 bytes .../qtcreator-refactoring-options-templates.webp | Bin 0 -> 6916 bytes .../creator-only/creator-cpp-quick-fixes.qdoc | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) delete mode 100644 doc/qtcreator/images/qtcreator-refactoring-options-templates.png create mode 100644 doc/qtcreator/images/qtcreator-refactoring-options-templates.webp diff --git a/doc/qtcreator/images/qtcreator-refactoring-options-templates.png b/doc/qtcreator/images/qtcreator-refactoring-options-templates.png deleted file mode 100644 index a5e53b37bc9ef718abcda1be5de8d532adbd3ad2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9582 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%0Du~p90c_`#E zx#tAmyY*gf{bENQBPDGjMI3lS+0=?W(&esJ9PnT5vonNIko!pW^K%uIn>6^ADSoki c&S4iR(spXmk;$%!E8cu!eJXCUZHgQN08Uvi7ytkO literal 0 HcmV?d00001 diff --git a/doc/qtcreator/src/editors/creator-only/creator-cpp-quick-fixes.qdoc b/doc/qtcreator/src/editors/creator-only/creator-cpp-quick-fixes.qdoc index ad5577b7a9b..011ea869b2e 100644 --- a/doc/qtcreator/src/editors/creator-only/creator-cpp-quick-fixes.qdoc +++ b/doc/qtcreator/src/editors/creator-only/creator-cpp-quick-fixes.qdoc @@ -58,7 +58,7 @@ and \c to access the parameter and current value. Use \c to access the type and \c for the template parameter. - \image qtcreator-refactoring-options-templates.png {Settings for handling custom parameter types} + \image qtcreator-refactoring-options-templates.webp {Settings for handling custom parameter types} Usually, arguments are passed by using a \c const reference. To pass arguments of a particular type as values, list them in the From 6c5717844db6cdaafc0cc47b5f765d0e9acd055a Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Fri, 12 Jul 2024 11:55:11 +0200 Subject: [PATCH 16/77] CMakePM: Disable CMake actions after clearing CMake configuration This way the user will not have actions that will result in the following error: "Error: could not load cache". Change-Id: I4b4f2015e1215d4c12c6aefc03f4ee5b419016c3 Reviewed-by: Alessandro Portale --- src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp index 8a65c45b7f9..4db4b78a09b 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildsystem.cpp @@ -1239,6 +1239,7 @@ void CMakeBuildSystem::clearCMakeCache() path.removeRecursively(); emit configurationCleared(); + emitParsingFinished(false); } void CMakeBuildSystem::combineScanAndParse(bool restoredFromBackup) From 5181f6e37bfa10e9548abc8c17d2b2e441dec067 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 8 Jul 2024 13:15:27 +0200 Subject: [PATCH 17/77] German translation: QML, RemoteLinux, ScreenRecorder, TextEditor, Utils MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I710949be8dc74e03c5ce0cfc52cd727017b7de08 Reviewed-by: Robert Löhning --- share/qtcreator/translations/qtcreator_de.ts | 77 +++++++++++--------- 1 file changed, 44 insertions(+), 33 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index ee4d7c78fa6..b7da46cf95e 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -47061,7 +47061,7 @@ Weitere Informationen finden Sie auf der Dokumentationsseite "Checking Code JavaScript can break the visual tooling in Qt Design Studio. - + JavaScript kann das visuelle Tooling in Qt Design Studio stören. Duplicate import (%1). @@ -47446,23 +47446,23 @@ Sie können eine Annotation "// @uri My.Module.Uri" hinzufügen, um de Turn on - + Einschalten Allow versions below Qt %1 - + Versionen niedriger als Qt %1 erlauben Use advanced features (renaming, find usages, and so on) (experimental) - + Erweiterte Funktionen verwenden (umbenennen, Verweise finden und weiteres) (experimentell) Use from latest Qt version - + Neueste Qt-Version verwenden Create .qmlls.ini files for new projects - + .qmlls.ini-Dateien für neue Projekte erstellen QML Language Server @@ -50080,13 +50080,15 @@ Zusätzlich wird die Verbindung zum Gerät getestet. Use SSH port forwarding for debugging - + SSH-Portweiterleitung zum Debuggen verwenden Enable debugging on remote targes which cannot expose gdbserver ports. The ssh tunneling is used to map the remote gdbserver port to localhost. The local and remote ports are determined automatically. - + Mache Debuggen auf entfernten Zielen möglich, die gdbserver-Ports nicht direkt bereitstellen können. +Es wird SSH-Tunneling verwendet, um die entfernten gdbserver-Ports auf localhost abzubilden. +Die lokalen und entfernten Ports werden automatisch bestimmt. &Username: @@ -50189,7 +50191,7 @@ Der Steuerprozess konnte nicht gestartet werden. Device "%1" is disconnected. - + Gerät "%1" ist nicht verbunden. Remote Linux @@ -50214,17 +50216,19 @@ Der Steuerprozess konnte nicht gestartet werden. Created directory: "%1". - + Verzeichnis wurde erstellt: "%1". + Copied %1/%2: "%3" -> "%4". %1/%2 = progress in the form 4/15, %3 and %4 = source and target file paths - + %1/%2 kopiert: "%3 -> "%4". + Failed to deploy files. - + Deployment der Dateien ist fehlgeschlagen. Device is considered unconnected. Re-run device test to reset state. @@ -50366,15 +50370,15 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e %1 failed to start: %2 - + %1 konnte nicht gestartet werden: %2 %1 crashed. - %1 ist abgestürzt. + %1 ist abgestürzt. %1 failed with exit code %2. - + %1 ist mit Rückgabewert %2 fehlgeschlagen. Deploy files @@ -50752,7 +50756,7 @@ Wenn Sie noch keinen privaten Schlüssel besitzen, können Sie hier auch einen e Cropping - + Zuschneiden Crop and Trim... @@ -54517,15 +54521,15 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen. Open Type Hierarchy - Klassenhierarchie öffnen + Klassenhierarchie öffnen Meta+Shift+T - Meta+Shift+T + Meta+Shift+T Ctrl+Shift+T - Ctrl+Shift+T + Ctrl+Shift+T Move the View a Page Up and Keep the Cursor Position @@ -54713,23 +54717,23 @@ Bestimmt das Verhalten bezüglich der Einrückung von Fortsetzungszeilen. Sort Lines - + Zeilen sortieren Go to Previous Word (Camel Case) - + Zum vorhergehenden Wort springen (Camel Case) Go to Next Word (Camel Case) - + Zum nächsten Wort springen (Camel Case) Go to Previous Word (Camel Case) with Selection - + Vorhergehendes Wort markieren (Camel Case) Go to Next Word (Camel Case) with Selection - + Nächstes Wort markieren (Camel Case) Meta+Shift+S @@ -55969,15 +55973,15 @@ Außer Leerzeichen innerhalb von Kommentaren und Zeichenketten. Type Hierarchy - Klassenhierarchie + Typenhierarchie No type hierarchy available - Keine Klassenhierarchie verfügbar + Keine Typenhierarchie verfügbar Reloads the type hierarchy for the symbol under the cursor. - + Lädt die Typenhierarchie für das Symbol unter der Einfügemarke neu. @@ -56735,7 +56739,7 @@ Die Trace-Daten sind verloren. watch is not implemented. - + "watch" ist nicht implementiert. Refusing to remove the standard directory "%1". @@ -57206,11 +57210,11 @@ Die Trace-Daten sind verloren. Failed to open output file. - + Die Ausgabedatei konnte nicht geöffnet werden. Failed to write output file. - + Die Ausgabedatei konnte nicht geschrieben werden. Command failed. @@ -57241,7 +57245,7 @@ in "%2" aus. Default - Vorgabe + Vorgabe Show %1 Column @@ -57318,7 +57322,14 @@ To prepend to a variable, use VARIABLE=+VALUE. Existing variables can be referenced in a VALUE with ${OTHER}. To clear a variable, put its name on a line with nothing else on it. Lines starting with "##" will be treated as comments. - + Geben Sie eine Umgebungsvariable pro Zeile ein. +Um eine Variable zu setzen oder zu ändern, verwenden Sie VARIABLE=WERT. +Um eine Variable zu deaktivieren, stellen Sie der Zeile "#" voran. +Um einen Wert an eine Variable anzufügen, verwenden Sie VARIABLE+=WERT. +Um einen Wert einer Variable voranzustellen, verwenden Sie VARIABLE=+WERT. +Existierende Variablen können in einem WERT mit ${ANDERE} verwendet werden. +Um eine Variable zu leeren, schreiben Sie nichts als ihren Namen in eine Zeile. +Zeilen, die mit "##" beginnen, werden als Kommentare behandelt. &OK @@ -57436,7 +57447,7 @@ Lines starting with "##" will be treated as comments. No Lua interface set - + Keine Lua-Schnittstelle eingestellt From 751cfa7bc382997535ead9435b0f9ea815a41cf5 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Fri, 12 Jul 2024 11:06:49 +0200 Subject: [PATCH 18/77] CMakePM: Do not allow staging dir setting for clean build step CMake will fail with an error for the "--target clean install" combination. Change-Id: I6de31539a3ead57bbcde5ce9905a22c9aeb3fd12 Reviewed-by: Marcus Tillmanns --- src/plugins/cmakeprojectmanager/cmakebuildstep.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp index aacd273f63e..1e0c4594ceb 100644 --- a/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp +++ b/src/plugins/cmakeprojectmanager/cmakebuildstep.cpp @@ -226,7 +226,8 @@ CMakeBuildStep::CMakeBuildStep(BuildStepList *bsl, Id id) : useStaging.setSettingsKey(USE_STAGING_KEY); useStaging.setLabel(Tr::tr("Stage for installation"), BoolAspect::LabelPlacement::AtCheckBox); - useStaging.setDefaultValue(supportsStageForInstallation(kit())); + useStaging.setDefaultValue(supportsStageForInstallation(kit()) && !isCleanStep()); + useStaging.setEnabled(!isCleanStep()); stagingDir.setSettingsKey(STAGING_DIR_KEY); stagingDir.setLabelText(Tr::tr("Staging directory:")); @@ -522,6 +523,11 @@ void CMakeBuildStep::setBuildPreset(const QString &preset) QWidget *CMakeBuildStep::createConfigWidget() { auto updateDetails = [this] { + const bool haveCleanTarget = m_buildTargets.contains(cleanTarget()); + useStaging.setEnabled(!haveCleanTarget); + if (useStaging() && haveCleanTarget) + useStaging.setValue(false); + ProcessParameters param; setupProcessParameters(¶m); param.setCommandLine(cmakeCommand()); From 491c0ab7a6eefd7b351f04b8ffeeee96fcd2f6d9 Mon Sep 17 00:00:00 2001 From: Semih Yavuz Date: Thu, 11 Jul 2024 11:49:54 +0200 Subject: [PATCH 19/77] Restart qmlls when project info changes When the project info changes, we should update the qmlls version which the current opened document is using. Fixes: QTCREATORBUG-31208 Change-Id: Ief338efd863ea7472a4e5b68a5b6e7d601fd0f80 Reviewed-by: Fabian Kosmale Reviewed-by: Christian Stenger --- src/plugins/qmljseditor/qmljseditordocument.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/plugins/qmljseditor/qmljseditordocument.cpp b/src/plugins/qmljseditor/qmljseditordocument.cpp index 53c064a99cf..60e32961f5e 100644 --- a/src/plugins/qmljseditor/qmljseditordocument.cpp +++ b/src/plugins/qmljseditor/qmljseditordocument.cpp @@ -481,6 +481,10 @@ QmlJSEditorDocumentPrivate::QmlJSEditorDocumentPrivate(QmlJSEditorDocument *pare &QmllsSettingsManager::settingsChanged, this, &Internal::QmlJSEditorDocumentPrivate::settingsChanged); + connect(modelManager, + &ModelManagerInterface::projectInfoUpdated, + this, + &Internal::QmlJSEditorDocumentPrivate::settingsChanged); // semantic info m_semanticInfoUpdater = new SemanticInfoUpdater(); From ba8fe5601f4d6426c6d06a2616414ccf48e337d9 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 12 Jul 2024 14:16:27 +0200 Subject: [PATCH 20/77] QmlJSEditor: Fix warning Amends a8a3d79592b92d7cb7826c21541f25e317a28909. Change-Id: Ifbab600c148d71cf1763f1c23290a98a3066c359 Reviewed-by: hjk --- src/plugins/qmljseditor/qmljseditordocument.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qmljseditor/qmljseditordocument.cpp b/src/plugins/qmljseditor/qmljseditordocument.cpp index 60e32961f5e..ee8fea0a41c 100644 --- a/src/plugins/qmljseditor/qmljseditordocument.cpp +++ b/src/plugins/qmljseditor/qmljseditordocument.cpp @@ -770,7 +770,7 @@ void QmlJSEditorDocumentPrivate::settingsChanged() auto lspClientManager = LanguageClient::LanguageClientManager::instance(); if (newQmlls.isEmpty()) { qCDebug(qmllsLog) << "disabling qmlls for" << q->filePath(); - if (LanguageClient::Client *client = lspClientManager->clientForDocument(q)) { + if (lspClientManager->clientForDocument(q)) { qCDebug(qmllsLog) << "deactivating " << q->filePath() << "in qmlls" << newQmlls; lspClientManager->openDocumentWithClient(q, nullptr); } else From cee9270699479beb559b5353ac967e920ac1095f Mon Sep 17 00:00:00 2001 From: David Schulz Date: Thu, 11 Jul 2024 14:37:15 +0200 Subject: [PATCH 21/77] TextEditor: Add action to clear a selection Change-Id: I5467a5ef30413418d65a9ac22f1c22d58ee0ee60 Reviewed-by: Eike Ziller --- src/libs/utils/multitextcursor.cpp | 6 ++++++ src/libs/utils/multitextcursor.h | 1 + src/plugins/texteditor/texteditor.cpp | 11 +++++++++++ src/plugins/texteditor/texteditor.h | 1 + src/plugins/texteditor/texteditorconstants.h | 1 + src/plugins/texteditor/texteditorplugin.cpp | 2 ++ 6 files changed, 22 insertions(+) diff --git a/src/libs/utils/multitextcursor.cpp b/src/libs/utils/multitextcursor.cpp index 7e991d3cd31..4eb77569224 100644 --- a/src/libs/utils/multitextcursor.cpp +++ b/src/libs/utils/multitextcursor.cpp @@ -239,6 +239,12 @@ void MultiTextCursor::removeSelectedText() mergeCursors(); } +void MultiTextCursor::clearSelection() +{ + for (auto cursor = m_cursorList.begin(); cursor != m_cursorList.end(); ++cursor) + cursor->clearSelection(); +} + static void insertAndSelect(QTextCursor &cursor, const QString &text, bool selectNewText) { if (selectNewText) { diff --git a/src/libs/utils/multitextcursor.h b/src/libs/utils/multitextcursor.h index c1099013095..fb4f307cde7 100644 --- a/src/libs/utils/multitextcursor.h +++ b/src/libs/utils/multitextcursor.h @@ -69,6 +69,7 @@ public: QString selectedText() const; /// removes the selected text of all cursors that have a selection from the document void removeSelectedText(); + void clearSelection(); /// inserts \param text into all cursors, potentially removing correctly selected text void insertText(const QString &text, bool selectNewText = false); diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index 291074c23fe..8ced95c0fc0 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -2343,6 +2343,13 @@ void TextEditorWidget::selectWordUnderCursor() setMultiTextCursor(cursor); } +void TextEditorWidget::clearSelection() +{ + MultiTextCursor cursor = multiTextCursor(); + cursor.clearSelection(); + setMultiTextCursor(cursor); +} + void TextEditorWidget::showContextMenu() { QTextCursor tc = textCursor(); @@ -4244,6 +4251,10 @@ void TextEditorWidgetPrivate::registerActions() .setContext(m_editorContext) .addOnTriggered([this] { q->selectWordUnderCursor(); }) .setScriptable(true); + ActionBuilder(this, CLEAR_SELECTION) + .setContext(m_editorContext) + .addOnTriggered([this] { q->clearSelection(); }) + .setScriptable(true); ActionBuilder(this, GOTO_DOCUMENT_START) .setContext(m_editorContext) diff --git a/src/plugins/texteditor/texteditor.h b/src/plugins/texteditor/texteditor.h index 7fc56e87337..0546b21e045 100644 --- a/src/plugins/texteditor/texteditor.h +++ b/src/plugins/texteditor/texteditor.h @@ -430,6 +430,7 @@ public: virtual bool selectBlockUp(); virtual bool selectBlockDown(); void selectWordUnderCursor(); + void clearSelection(); void showContextMenu(); diff --git a/src/plugins/texteditor/texteditorconstants.h b/src/plugins/texteditor/texteditorconstants.h index 2597deb6bba..e7f9fbd3d9f 100644 --- a/src/plugins/texteditor/texteditorconstants.h +++ b/src/plugins/texteditor/texteditorconstants.h @@ -143,6 +143,7 @@ const char GOTO_BLOCK_END_WITH_SELECTION[] = "TextEditor.GotoBlockEndWithSelecti const char SELECT_BLOCK_UP[] = "TextEditor.SelectBlockUp"; const char SELECT_BLOCK_DOWN[] = "TextEditor.SelectBlockDown"; const char SELECT_WORD_UNDER_CURSOR[] = "TextEditor.SelectWordUnderCursor"; +const char CLEAR_SELECTION[] = "TextEditor.ClearSelection"; const char VIEW_PAGE_UP[] = "TextEditor.viewPageUp"; const char VIEW_PAGE_DOWN[] = "TextEditor.viewPageDown"; const char VIEW_LINE_UP[] = "TextEditor.viewLineUp"; diff --git a/src/plugins/texteditor/texteditorplugin.cpp b/src/plugins/texteditor/texteditorplugin.cpp index c774fed0438..047f0a3f973 100644 --- a/src/plugins/texteditor/texteditorplugin.cpp +++ b/src/plugins/texteditor/texteditorplugin.cpp @@ -544,6 +544,8 @@ void TextEditorPlugin::createEditorCommands() .setDefaultKeySequence(QKeySequence(Tr::tr("Ctrl+Shift+Alt+U"))) .addToContainer(M_EDIT_ADVANCED, G_EDIT_BLOCKS); TextActionBuilder(this, SELECT_WORD_UNDER_CURSOR).setText(Tr::tr("Select Word Under Cursor")); + TextActionBuilder(this, CLEAR_SELECTION) + .setText(QCoreApplication::translate("QtC::Terminal", "Clear Selection")); TextActionBuilder(this, GOTO_DOCUMENT_START).setText(Tr::tr("Go to Document Start")); TextActionBuilder(this, GOTO_DOCUMENT_END).setText(Tr::tr("Go to Document End")); From 4e40c6b2b4ea3356f23f3131aaee2b4f1e101ed1 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 27 Jun 2024 17:19:02 +0200 Subject: [PATCH 22/77] Doc: Add documentation for the SDK Tool MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QTCREATORBUG-31082 Change-Id: I0d81240805bb2d0ae9c5bb8f9a42be7af90c6d69 Reviewed-by: Kai Köhne --- doc/qtcreator/config/style/qt5-sidebar.html | 1 + .../src/reference/creator-sdk-tool.qdoc | 757 ++++++++++++++++++ 2 files changed, 758 insertions(+) create mode 100644 doc/qtcreator/src/reference/creator-sdk-tool.qdoc diff --git a/doc/qtcreator/config/style/qt5-sidebar.html b/doc/qtcreator/config/style/qt5-sidebar.html index 340da73317c..72f53f74494 100644 --- a/doc/qtcreator/config/style/qt5-sidebar.html +++ b/doc/qtcreator/config/style/qt5-sidebar.html @@ -76,6 +76,7 @@

  • Glossary
  • Keyboard Shortcuts
  • Known Issues
  • +
  • SDK Tool
  • Technical Support
  • Version Control Systems
  • Analyzers
  • diff --git a/doc/qtcreator/src/reference/creator-sdk-tool.qdoc b/doc/qtcreator/src/reference/creator-sdk-tool.qdoc new file mode 100644 index 00000000000..c1f7f3b56eb --- /dev/null +++ b/doc/qtcreator/src/reference/creator-sdk-tool.qdoc @@ -0,0 +1,757 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only + +/*! + \page creator-sdk-tool.html + \previouspage creator-reference.html + + \ingroup creator-reference + + \title SDK Tool + + \brief Configure CMake and set up compilers, debuggers, devices, Qt versions, + and kits from the command line. + + \QOI uses the SDK Tool (\c sdktool) to configure CMake and set \l {Kits}{Kit} + preferences, such as compilers, debuggers, devices, and Qt versions. You can + use it from the command line to set Qt and \QC preferences automatically for + all users of a computer, for example. For a single user, it is usually easier + to make changes in \preferences > \uicontrol Kits. + + To use the SDK Tool, enter the following command in the \c {Tools\sdktool\bin} + directory in the Qt installation directory: + + \badcode + sdktool [OPTION] [OPERATION [OPTIONS]] + \endcode + + For information about the options and operations that your SDK Tool version + supports, enter: + + \badcode + sdktool --help + \endcode + + \section1 Value Types + + The operations add settings in the form \c { :} to the + configuration that they create. The supported \c TYPE values are: + + \list + \li \c bool + \li \c int + \li \l QByteArray + \li \l QString + \li \l QVariantList + \endlist + + \section1 SDK Path + + \QOI and the \QC stand-alone installer both install \c sdktool. The + \c sdktool from an installer defaults to the location from where the \QC + from the installer reads the information that the SDK Tool writes. + To point \c sdktool to some other \QC installation, set \c --sdkpath + depending on whether you use \QOI or an offline installer. + + \list + \li \QOI: \c {/Tools/sdktool} + \li \QC stand-alone installer: + \list + \li On Windows and Linux: \c {/share/qtcreator/} + \li On \macos \c {Qt Creator.app/Contents/Resources/} + \endlist + \endlist + + \section1 Options + + The following table summarizes the available options. + + \table + \header + \li Option + \li Description + \row + \li \c {--help | -h} + \li Display help on SDK tool options. + + Enter \c {--help } to get help on the options + required for the operation. + \row + \li \c {--sdkpath= | -s } + \li Set the path to the files that the SDK tool writes. + \endtable + + \section1 Operations + + The following table summarizes the available operations. + + \table + \header + \li Operation + \li Description + \row + \li addAbiFlavor + \li Add a system architecture (ABI). + \row + \li \c {addCMake} + \li Add the path to a CMake tool. + \row + \li \c {addDebugger} + \li Add a debugger. + \row + \li \c {addDev} + \li Add a device. + \row + \li \c {addKeys} + \li Add settings as \c { :} key-value pairs. + \row + \li \c {addKit} + \li Add a build and run kit. + \row + \li \c {addQt} + \li Add a Qt version. + \row + \li \c {addTC} + \li Add a compiler. + \row + \li \c {find} + \li Find a setting value. + \row + \li \c {findKey} + \li Find a setting key. + \row + \li \c {get} + \li Get settings. + \row + \li \c {rmCMake} + \li Remove the path to a CMake tool. + \row + \li \c {rmDebugger} + \li Remove a debugger. + \row + \li \c {rmDev} + \li Remove a device + \row + \li \c {rmKeys} + \li Remove settings. + \row + \li \c {rmQt} + \li Remove a Qt version. + \row + \li \c {rmTC} + \li Remove a compiler. + \endtable + + \section1 Adding a System Architecture (ABI) + + \section2 Syntax + + \badcode + sdktool addAbiFlavor --flavor --oses (,)* + \endcode + + \section2 Options + + The following table summarizes the available options. + + \table + \header + \li Option + \li Description + \li Required + \row + \li \c {--flavor } + \li Name of the system architecture (ABI). + \li \inlineimage ok.png + \row + \li \c {--oses (,)*} + \li Operating system that the ABI applies to. + \li \inlineimage ok.png + \endtable + + \section2 ABI Flavor Example + + To add Yocto Poky on Linux, enter: + + \badcode + ./sdktool addAbiFlavor \ + --flavor poky \ + --oses linux + \endcode + + \section1 Adding CMake Tools + + \section2 Syntax + + \badcode + sdktool addCMake --id --name --path [ ] + \endcode + + \section2 Options + + The following table summarizes the available options. + + \table + \header + \li Option + \li Description + \li Required + \row + \li \c {--id } + \li ID of the CMake installation. Can be any ASCII (7-bit) string. + + If you do not use a version number in the string, the registered + CMake keeps the ID when you update this CMake installation, and + therefore, all kits are automatically updated to use the new + version. + \li \inlineimage ok.png + \row + \li \c {--name } + \li Name of the CMake installation. + \li \inlineimage ok.png + \row + \li \c {--path } + \li Path to the CMake executable. + \li \inlineimage ok.png + \row + \li \c { } + \li Additional settings as key-value pairs. + \li + \endtable + + For more information, see \l{Add CMake tools}. + + \section2 CMake Configuration Example + + To add a CMake tool on Windows, enter: + + \badcode + sdktool addCMake \ + --id "my.custom.cmake" \ + --name "Custom CMake" \ + --path "C:\Program Files\CMake-3.30\bin\cmake.exe" + \endcode + + \section1 Adding Compilers + + \section2 Syntax + + \badcode + sdktool addTC --id --language --name --path --abi [OPTIONS] + \endcode + + \section2 Options + + The following table summarizes the available options. + + \table + \header + \li Option + \li Description + \li Required + \row + \li \c {--abi } + \li ABI of the compiler in a format that + \c {ProjectExplorer::Abi::fromString()} can parse. + \li \inlineimage ok.png + \row + \li \c {--id } + \li ID of the toolchain in the format \c {ToolChainType:some_unique_part}, + where the toolchain type can be one of the following, or something + else provided by a plugin: + \list + \li \c {ProjectExplorer.ToolChain.Msvc} for Microsoft MSVC + compilers. This compiler is automatically detected, so + you don't need to add it with the SDK tool. + \li \c {ProjectExplorer.ToolChain.Gcc} for GCC on Linux or + \macos. + \li \c {ProjectExplorer.ToolChain.Clang} for Clang. + \li \c {ProjectExplorer.ToolChain.LinuxIcc} for LinuxICC. + \li \c {ProjectExplorer.ToolChain.Mingw} for MinGW. + \li \c {ProjectExplorer.ToolChain.ClangCl} for Clang/CL. + \li \c {ProjectExplorer.ToolChain.Custom} for a custom + toolchain. + \li \c {Qt4ProjectManager.ToolChain.Android} for Android. + \li \c {Qnx.QccToolChain} for QNX QCC. + \li \c {WebAssembly.ToolChain.Emscripten} for Emscripten. + \endlist + Check the classes derived from \c {ProjectExplorer::ToolChain} + for their IDs. + + \c {some_unique_part} can be anything. \QC uses GUIDs by default. + \li \inlineimage ok.png + \row + \li \c {--language } + \li ID of the input language of the toolchain: \c C or \c Cxx. + \li \inlineimage ok.png + \row + \li \c {--name } + \li Name of the toolchain. + \li \inlineimage ok.png + \row + \li \c {--path } + \li Path to the compiler executable. + \li \inlineimage ok.png + \row + \li \c {--supportedAbis ,} + \li List of ABIs that the compiler supports. + \li + \row + \li \c { } + \li Additional settings as key-value pairs. + \li + \endtable + + For more information, see \l{Add compilers}. + + \section2 Compiler Example + + To add a GCC compiler on Linux, enter: + + \badcode + ./sdktool addTC \ + --id "ProjectExplorer.ToolChain.Gcc:company.product.toolchain.g++" \ + --language Cxx + --name "GCC (C++, x86_64)" \ + --path /home/code/build/gcc-6.3/usr/bin/g++ \ + --abi x86-linux-generic-elf-64bit \ + --supportedAbis x86-linux-generic-elf-64bit,x86-linux-generic-elf-32bit \ + ADDITIONAL_INTEGER_PARAMETER int:42 \ + ADDITIONAL_STRING_PARAMETER "QString:some string" \ + \endcode + + \section1 Adding Debuggers + + \section2 Syntax + + \badcode + sdktool addDebugger --id --name [OPTIONS] + \endcode + + \section2 Options + + The following table summarizes the available options. + + \table + \header + \li Option + \li Description + \li Required + \row + \li \c {--abis } + \li Comma-separated list of system architecture definitions. + \li + \row + \li \c {--binary } + \li Path to the debugger executable. Can be an absolute path, the + value \c auto, or an ABI. Finds the appropriate debugger for MSVC + toolchains where \QC does not know the binary path. + \li + \row + \li \c {--engine } + \li Debugger engine type: + \list + \li 1 for GDB + \li 4 for CDB + \li 8 for PDB + \li 256 for LLDB + \endlist + \li + \row + \li \c {--id } + \li Unique ID of the debugger. + \li \inlineimage ok.png + \row + \li \c {--name } + \li Name of the debugger. + \li \inlineimage ok.png + \row + \li \c { } + \li Additional settings as key-value pairs. + \li + \endtable + + For more information, see \l{Add debuggers}. + + \section2 Debugger Example + + To add a GDB debugger on Linux, enter: + + \badcode + ./sdktool addDebugger \ + --id "company.product.toolchain.gdb" \ + --name "GDB (company, product)" \ + --engine 1 \ + --binary /home/code/build/gdb-7.12/bin/gdb \ + --abis arm-linux-generic-elf-32 \ + \endcode + + \section1 Adding Devices + + \section2 Syntax + + \badcode + sdktool addDev --id --name --type [OPTIONS] + \endcode + + \section2 Options + + The following table summarizes the available options. The options to use + depend on the device type. + + \table + \header + \li Option + \li Description + \li Required + \row + \li \c {--authentication } + \li Authentication method: + \list + \li 1 for all authentication methods + \li 2 for SSH authentication using a public and private key + pair + \endlist + \li + \row + \li \c {--b2qHardware } + \li Boot to Qt platform info about hardware. + \li + \row + \li \c {--b2qSoftware } + \li Boot to Qt platform info about software. + \li + \row + \li \c {--debugServerKey } + \li Debug server key. + \li + \row + \li \c {--dockerClangdExecutable } + \li Path to the Clangd executable in the Docker container. + \li + \row + \li \c {--dockerMappedPaths } + \li Semicolon-separated list of Docker mapped paths. + \li + \row + \li \c {--dockerRepo } + \li Docker image repository. + \li + \row + \li \c {--dockerTag } + \li Docker image tag. + \li + \row + \li \c {--freePorts } + \li Free ports. + \li + \row + \li \c {--host } + \li Host name or IP address of the device. + \li + \row + \li \c {--id } + \li Unique ID of the device. + \li \inlineimage ok.png + \row + \li \c {--keyFile } + \li Path to the user's private key file. + \li + \row + \li \c {--name } + \li Name of the device. + \li \inlineimage ok.png + \row + \li \c {--origin } + \li Whether the device was detected automatically: + \list + \li 1 for a manually added device + \li 2 for an automatically detected device + \endlist + \li + \row + \li \c {--osType } + \li Operating system on the device: + \list + \li \c Android.Device.Type + \li \c BareMetalOsType + \li \c QdbLinuxOsType + \li \c DockerDeviceType + \li \c Ios.Device.Type + \li \c Ios.Simulator.Type + \li \c McuSupport.DeviceType + \li \c Desktop + \li \c WebAssemblyDeviceType + \li \c QnxOsType + \li \c GenericLinuxOsType + \endlist + \li + \row + \li \c {--password } + \li Password for password authentication. + \li + \row + \li \c {--sshPort } + \li Port number for SSH connections. + \li + \row + \li \c {--timeout } + \li Timeout for reusing the SSH connection in seconds. + \li + \row + \li \c {--type } + \li Device type: + \list + \li 1 for a hardware device + \li 2 for an emulator, simulator, or virtual device + \endlist + \li \inlineimage ok.png + \row + \li \c {--uname } + \li Username to access the device. + \li + \row + \li \c { } + \li Additional settings as key-value pairs. + \li + \endtable + + For more information, see \l{Develop for Devices}{How To: Develop for Devices}. + + \section2 Linux Device Example + + To add a remote Linux device (hardware device) on Linux and use SSH keys to + authenticate to the device, enter: + + \badcode + ./sdktool addDev \ + --id " LinuxDevice1" \ + --name "My Remote Linux Device" \ + --type 1 \ + --authentication 2 \ + --freePorts "10000-10100" \ + --host "10.10.10.15" \ + --keyFile "/usr/.ssh/qtc_id" \ + --origin 1 \ + --osType "GenericLinuxOsType" \ + --sshPort 22 \ + --timeout 10 \ + --uname "root" + \endcode + + \section1 Adding Qt Versions + + \section2 Syntax + + \badcode + sdktool addQt --id --name --qmake --type [OPTIONS] + \endcode + + \section2 Options + + The following table summarizes the available options. + + \table + \header + \li Option + \li Description + \li Required + \row + \li \c {--abis } + \li Comma-separated list of system architecture definitions. + \li + \row + \li \c {--id } + \li ID of the Qt installation. \QC automatically sets the ID when it + detects Qt versions installed on the computer. + \li \inlineimage ok.png + \row + \li \c {--name } + \li Name of the Qt installation. + \li \inlineimage ok.png + \row + \li \c {--qmake } + \li Path to the qmake executable in the Qt installation. + \li \inlineimage ok.png + \row + \li \c {--type } + \li The type of the Qt version: + \list + \li \c {Qt4ProjectManager.QtVersion.Android} for Android. + \li \c {Qt4ProjectManager.QtVersion.Desktop} for a desktop Qt. + \li \c {Qt4ProjectManager.QtVersion.Ios} for iOS. + \li \c {Qt4ProjectManager.QtVersion.QNX.QNX} for QNX. + \li \c {RemoteLinux.EmbeddedLinuxQt} for Embedded Linux. + \li \c {Qt4ProjectManager.QtVersion.WebAssembly} for + WebAssembly. + \endlist + The string returned by \c {QtVersion::type()}. + \li \inlineimage ok.png + \row + \li \c { } + \li Additional settings as key-value pairs. + \li + \endtable + + For more information, see \l{Add Qt versions}. + + \section2 Qt Version Example + + To add a self-built Qt 6.8 version on Linux, enter: + + \badcode + ./sdktool addQt \ + --id "company.product.qt" \ + --name "Custom Qt" \ + --qmake /home/code/build/qt-6.8/bin/qmake \ + --type Qt4ProjectManager.QtVersion.Desktop \ + \endcode + + \section1 Adding Kits + + \section2 Syntax + + \badcode + sdktool addKit --id --name --devicetype [OPTIONS] + \endcode + + \section2 Options + + The following table summarizes the available options. + + \table + \header + \li Option + \li Description + \li Required + \row + \li \c {--builddevice } + \li The ID of the device to build applications on. + \li + \row + \li \c {--cmake } + \li The ID of the CMake executable to use for building the project. + \li + \row + \li \c {--cmake-config } + \li Parameters for the CMake configuration of the kit. You can add + multiple entries of this type. + \li + \row + \li \c {--cmake-generator :::} + \li The CMake Generator to use for producing project files. + \li + \row + \li \c {--debugger } + \li Path to the debugger to use for the kit. Do not use this option + with \c {--debuggerid}. + \li + \row + \li \c {--debuggerengine } + \li The type of the debugger set with \c {--debugger}. Do not use + this option with \c {--debuggerid}. + \li + \row + \li \c {--debuggerid } + \li One of the IDs used when adding debuggers with the + \c {addDebugger} operation. Do not use this option + with \c {--debugger} and \c {--debuggerengine}. + \li + \row + \li \c {--device } + \li The device to run applications on. + \li + \row + \li \c {--devicetype } + \li The type of the device to run applications on: + \list + \li \c {Android.Device.Type} for Android devices. + \li \c {Desktop} for code running on the local desktop. + \li \c {Ios.Device.Type} for iOS devices. + \li \c {Ios.Simulator.Type} for iOS simulators. + \li \c {GenericLinuxOsType} for embedded Linux devices. + \li \c {WebAssemblyDeviceType} for web browsers. + \endlist + The string returned by \c {IDevice::type()}. + \li \inlineimage ok.png + \row + \li \c {--env } + \li Environment variable values for the build environment. You can + add multiple entries of this type. + \li + \row + \li \c {--icon } + \li Path to the image to use as an icon for the kit. + \li + \row + \li \c {--id } + \li ID of the kit. \QC automatically sets the ID when it + detects Qt versions installed on the computer. + \li \inlineimage ok.png + \row + \li \c {--toolchain } + \li One of the IDs used when adding compilers with the \c {addTC} + operation. is: \c C, \c Cxx, \c Nim, or something set + by a plugin. + \li + \row + \li \c {--mkspec } + \li The \c mkspec configuration that qmake uses. Omit this option + to use the default \c mkspec of the set Qt version. + \li + \row + \li \c {--name } + \li Name of the kit. You can use variables to generate the kit name + based on the kit elements you set with the other operations, such + as the Qt version. + \li \inlineimage ok.png + \row + \li \c {--qt } + \li One of the IDs used when adding Qt versions with the \c {addQt} + operation. + \li + \row + \li \c { } + \li Additional settings as key-value pairs. + \li + \endtable + + For more information, see \l{Add kits}. + + \section2 Kit Example + + To add a kit that uses the GCC compiler and the self-built Qt to build + applications on Linux, enter: + + \badcode + ./sdktool addKit \ + --id "company.product.kit" \ + --name "Qt %{Qt:Version} (company, product)" \ + --debuggerid "company.product.toolchain.gdb" \ + --devicetype GenericLinuxOsType \ + --sysroot /tmp/sysroot \ + --Ctoolchain "ProjectExplorer.ToolChain.Gcc:company.product.toolchain.gcc" \ + --Cxxtoolchain "ProjectExplorer.ToolChain.Gcc:company.product.toolchain.g++" \ + --qt "company.product.qt" \ + --mkspec "devices/linux-mipsel-broadcom-97425-g++" \ + \endcode + + \section1 Adding, Getting, and Finding Keys + + Enter the path to a file relative to the top-level settings directory and + without .xml extension, followed by one or more \c { :} + key-value pairs. + + \section1 Removing Configured Items + + To remove a CMake tool, compiler, debugger, device, Qt version, or kit, + enter: + + \badcode + rm --id + \endcode + + Where \c is the ID of the item. + + \sa {Manage Kits}{How To: Manage Kits}, {Installation}, {Kits} +*/ From 1c272072e522ac4b25bcef6d17ae51eb51d735d1 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 9 Jul 2024 12:48:47 +0200 Subject: [PATCH 23/77] ClangCodeModel: Fix displaying ifdef'ed regions ... that are started by an indented preprocessor directive. clangd potentially sends regions not starting at line boundaries (in this case erroneously, but potentially also on purpose), which TextDocument::setIfdefedOutBlocks() does not expect. Fixes: QTCREATORBUG-31204 Change-Id: I9126263b9501edbbab1fbc22cc59c5ee1ae814c2 Reviewed-by: David Schulz --- src/plugins/clangcodemodel/clangdsemantichighlighting.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/clangcodemodel/clangdsemantichighlighting.cpp b/src/plugins/clangcodemodel/clangdsemantichighlighting.cpp index 2b52ee4d143..50de3ede0af 100644 --- a/src/plugins/clangcodemodel/clangdsemantichighlighting.cpp +++ b/src/plugins/clangcodemodel/clangdsemantichighlighting.cpp @@ -259,7 +259,7 @@ void handleInactiveRegions(LanguageClient::Client *client, const JsonRpcMessage const QList inactiveRegions = params->inactiveRegions(); QList ifdefedOutBlocks; for (const Range &r : inactiveRegions) { - const int startPos = r.start().toPositionInDocument(doc->document()); + const int startPos = Position(r.start().line(), 0).toPositionInDocument(doc->document()); const int endPos = r.end().toPositionInDocument(doc->document()) + 1; ifdefedOutBlocks.emplaceBack(startPos, endPos); } From 94a44dfacfbf5a05d0e99964e74dec7031a70f1a Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 12 Jul 2024 14:08:56 +0200 Subject: [PATCH 24/77] Update qbs submodule to HEAD of 2.4 branch Change-Id: I2804ab27c73c946455762d0889209f94036f24e3 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 0336494de6c..65096dc8307 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit 0336494de6c4e394b7354ca78dcb2192f01f9fc6 +Subproject commit 65096dc8307979b973cd1fe3e01bc959384d2a20 From 8ff043893335c69646de5809b32bfdf2ad18a3b7 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 15 Jul 2024 11:03:39 +0200 Subject: [PATCH 25/77] Doc: Fix names of UI elements in Qt Widgets tutorial Change-Id: Id3ca5dc8c10bffe441d1eefdb84e3ed588df33fe Reviewed-by: Eike Ziller --- doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc b/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc index 9d07d59384a..5f68781285a 100644 --- a/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc +++ b/doc/qtcreator/src/widgets/qtdesigner-app-tutorial.qdoc @@ -123,7 +123,7 @@ \list 1 - \li In the \uicontrol{Editor} mode, double-click the textfinder.ui file in the + \li In the \uicontrol {Edit} mode, double-click the textfinder.ui file in the \uicontrol{Projects} view to launch the integrated \QD. \li Drag the following widgets to the form: @@ -139,8 +139,8 @@ \image qtcreator-textfinder-ui-widgets.png {Adding widgets to Text Finder UI} \note To easily locate the widgets, use the search box at the top of the - \uicontrol Sidebar. For example, to find the \uicontrol Label widget, start typing - the word \b label. + \uicontrol {Widget Box}. For example, to find the \uicontrol Label widget, + start typing the word \b label. \image qtcreator-textfinder-filter.png {Filter} From f75821fe9968f66e591bd4516810589d66da7d8a Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 15 Jul 2024 10:55:08 +0200 Subject: [PATCH 26/77] Doc: Update tutorial names also in sidebar TOC Change-Id: I4532ef5bbaeee8852dac6b0d9c52ae26d0cc1e32 Reviewed-by: Eike Ziller --- doc/qtcreator/config/style/qt5-sidebar.html | 24 ++++++++++----------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/doc/qtcreator/config/style/qt5-sidebar.html b/doc/qtcreator/config/style/qt5-sidebar.html index 72f53f74494..5977847f100 100644 --- a/doc/qtcreator/config/style/qt5-sidebar.html +++ b/doc/qtcreator/config/style/qt5-sidebar.html @@ -30,16 +30,16 @@ @@ -61,7 +61,7 @@
  • Test
  • Use Qt Creator
  • Use the UI
  • -
  • See All
  • +
  • How To
  • @@ -88,6 +88,6 @@
  • Preferences
  • UI Design
  • Views
  • -
  • See All
  • +
  • Reference
  • From 6a8f1a76835a0ddc56df50b30e98b893b5c89e8e Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 10 Jul 2024 10:53:15 +0200 Subject: [PATCH 27/77] German translation: QmlProjectManager MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: If8a3842dea59910d00c43322eacf24efb1de4bc7 Reviewed-by: Robert Löhning --- share/qtcreator/translations/qtcreator_de.ts | 101 ++++++++++--------- 1 file changed, 53 insertions(+), 48 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index b7da46cf95e..90436e62b88 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -48561,7 +48561,7 @@ Speichern fehlgeschlagen.
    Override device QML viewer: - + Statt QML-Viewer auf Gerät verwenden: System Environment @@ -48574,31 +48574,31 @@ Speichern fehlgeschlagen. QML Utility QMLRunConfiguration display name. - + QML-Werkzeug No QML utility found. - + Kein QML-Werkzeug gefunden. No QML utility specified for target device. - + Für das Zielgerät wurde kein QML-Werkzeug angegeben. Qt Version: - + Qt-Version: Qt 6 - Qt 6 + Qt 6 Qt 5 - Qt 5 + Qt 5 QML Runtime - + QML-Runtime No script file to execute. @@ -48614,7 +48614,7 @@ Speichern fehlgeschlagen. Update QmlProject File - + QmlProject-Datei aktualisieren Warning while loading project file %1. @@ -48622,164 +48622,169 @@ Speichern fehlgeschlagen. No Qt Design Studio installation found - + Es wurde keine Installation von Qt Design Studio gefunden Would you like to install it now? - + Möchten Sie es jetzt installieren? Install - Installieren + Installieren Unknown - Unbekannt + Unbekannt QML PROJECT FILE INFO - + QML PROJECT FILE INFO Qt Version - - + Qt-Version - Qt Design Studio Version - - + Qt Design Studio-Version - No QML project file found - Would you like to create one? - + Keine QML-Projektdatei gefunden - möchten Sie eine erstellen? Generate - + Erstellen Qt Design Studio - Qt Design Studio + Qt Design Studio Open with Qt Design Studio - + Mit Qt Design Studio öffnen Open - Öffnen + Öffnen Open with Qt Creator - Text Mode - + Mit Qt Creator im Textmodus öffnen Remember my choice - + Meine Auswahl speichern Export Project - + Projekt exportieren Enable Automatic CMake Generation - + Automatische CMake-Erstellung aktivieren Use MultiLanguage in 2D view - + MultiLanguage in der 2D-Ansicht verwenden Reads translations from MultiLanguage plugin. - + Liest Übersetzungen aus dem MultiLanguage-Plugin. Failed to start Qt Design Studio. - + Qt Design Studio konnte nicht gestartet werden. No project file (*.qmlproject) found for Qt Design Studio. Qt Design Studio requires a .qmlproject based project to open the .ui.qml file. - + Es wurde keine Projektdatei (*.qmlproject) für Qt Design Studio gefunden. +Qt Design Studio benötigt zum Öffnen der .ui.qml-Datei ein .qmlproject-basiertes Projekt. Set as Main .qml File - + Als .qml-Hauptdatei setzen Set as Main .ui.qml File - + Als .ui.qml-Hauptdatei setzen Project File Generated - + Projektdatei erstellt File created: %1 - + Datei erstellt: + +%1 Select File Location - + Dateipfad auswählen Qt Design Studio Project Files (*.qmlproject) - + Qt Design Studio Projektdateien (*.qmlproject) Invalid Directory - + Ungültiges Verzeichnis Project file must be placed in a parent directory of the QML files. - + Die Projektdatei muss in einem den QML-Dateien übergeordneten Verzeichnis erstellt werden. Problem - + Problem Selected directory is far away from the QML file. This can cause unexpected results. Are you sure? - + Das ausgewählte Verzeichnis liegt weit entfernt von der QML-Datei. Dies kann zu unerwarteten Ergebnissen führen. + +Sind Sie sicher? Cannot find a valid build system. - + Es kann kein gültiges Build-System gefunden werden. Cannot create a valid build directory. - + Es kann kein gültiges Build-Verzeichnis erstellt werden. Command: - + Kommando: Arguments: - Argumente: + Argumente: Build directory: - Build-Verzeichnis: + Build-Verzeichnis: The Selected Kit Is Not Supported - + Das gewählte Kit wird nicht unterstützt You cannot use the selected kit to preview Qt for MCUs applications. - + Das gewählte Kit kann nicht zur Vorschau von Qt for MCUs-Anwendungen verwendet werden. Cannot find a valid Qt for MCUs kit. - + Es kann kein gültiges Kit für Qt for MCUs gefunden werden. Qt for MCUs Deploy Step - + Qt for MCUs Deployment-Schritt From 6e798889431c9e8d663e6c725b67913c91994032 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Sat, 13 Jul 2024 12:33:22 +0200 Subject: [PATCH 28/77] CMakePM: Fix code model for cross-compiler CMake presets CMake Project Manager is using a small CMake project as a compiler probe when a CMake preset is being setup. Now this CMake project is saving more variable as cache variables. These CMake variables could be only visible inside the CMake preset probe project via a CMake toolchain file. CMAKE_SYSROOT was important to be set in the Kit. The CMAKE_C| XX_COMPILER_TARGET variables are set to override the original triplet for the code model. Fixes: QTCREATORBUG-31249 Change-Id: I3c3294b839629c22ce760596b92b2b393eed6a8b Reviewed-by: Alessandro Portale --- .../cmakeprojectimporter.cpp | 80 ++++++++++++++----- 1 file changed, 61 insertions(+), 19 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp index 69511b0fc07..d3f1f07ed19 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp @@ -46,6 +46,19 @@ namespace CMakeProjectManager::Internal { static Q_LOGGING_CATEGORY(cmInputLog, "qtc.cmake.import", QtWarningMsg); +class ToolchainDescriptionEx +{ +public: + Utils::FilePath compilerPath; + Utils::Id language; + QString originalTargetTriple; + + operator ProjectExplorer::ToolchainDescription() const + { + return ProjectExplorer::ToolchainDescription{compilerPath, language}; + } +}; + struct DirectoryData { // Project Stuff: @@ -64,7 +77,7 @@ struct DirectoryData QString toolset; FilePath sysroot; QtProjectImporter::QtVersionData qt; - QVector toolchains; + QVector toolchains; QVariant debugger; }; @@ -321,12 +334,30 @@ static CMakeConfig configurationFromPresetProbe( const PresetsDetails::ConfigurePreset &configurePreset) { const FilePath cmakeListTxt = importPath / Constants::CMAKE_LISTS_TXT; - cmakeListTxt.writeFileContents(QByteArray("cmake_minimum_required(VERSION 3.15)\n" - "\n" - "project(preset-probe)\n" - "set(CMAKE_C_COMPILER \"${CMAKE_C_COMPILER}\" CACHE FILEPATH \"\" FORCE)\n" - "set(CMAKE_CXX_COMPILER \"${CMAKE_CXX_COMPILER}\" CACHE FILEPATH \"\" FORCE)\n" - "\n")); + cmakeListTxt.writeFileContents(QByteArray(R"( + cmake_minimum_required(VERSION 3.15) + + project(preset-probe) + + foreach (file_path_value + CMAKE_C_COMPILER CMAKE_CXX_COMPILER CMAKE_SYSROOT QT_HOST_PATH CMAKE_MAKE_PROGRAM) + if (${file_path_value}) + set(${file_path_value} "${${file_path_value}}" CACHE FILEPATH "" FORCE) + endif() + endforeach() + + foreach (path_value CMAKE_PREFIX_PATH CMAKE_FIND_ROOT_PATH) + if (${path_value}) + set(${path_value} "${${path_value}}" CACHE PATH "" FORCE) + endif() + endforeach() + + foreach (string_value CMAKE_C_COMPILER_TARGET CMAKE_CXX_COMPILER_TARGET) + if (${string_value}) + set(${string_value} "${${string_value}}" CACHE STRING "" FORCE) + endif() + endforeach() + )")); Process cmake; cmake.setDisableUnixTerminal(); @@ -574,9 +605,9 @@ static QMakeAndCMakePrefixPath qtInfoFromCMakeCache(const CMakeConfig &config, return {qmakeLocation, resultedPrefixPath}; } -static QVector extractToolchainsFromCache(const CMakeConfig &config) +static QVector extractToolchainsFromCache(const CMakeConfig &config) { - QVector result; + QVector result; bool haveCCxxCompiler = false; for (const CMakeConfigItem &i : config) { if (!i.key.startsWith("CMAKE_") || !i.key.endsWith("_COMPILER")) @@ -593,7 +624,10 @@ static QVector extractToolchainsFromCache(const CMakeConfi } else languageId = Id::fromName(language); - result.append({FilePath::fromUtf8(i.value), languageId}); + result.append( + {FilePath::fromUtf8(i.value), + languageId, + config.stringValueOf("CMAKE_" + language + "_COMPILER_TARGET")}); } if (!haveCCxxCompiler) { @@ -612,10 +646,14 @@ static QVector extractToolchainsFromCache(const CMakeConfi const FilePath linker = config.filePathValueOf("CMAKE_LINKER"); if (!linker.isEmpty()) { const FilePath compilerPath = linker.parentDir(); - result.append({compilerPath.pathAppended(cCompilerName), - ProjectExplorer::Constants::C_LANGUAGE_ID}); - result.append({compilerPath.pathAppended(cxxCompilerName), - ProjectExplorer::Constants::CXX_LANGUAGE_ID}); + result.append( + {compilerPath.pathAppended(cCompilerName), + ProjectExplorer::Constants::C_LANGUAGE_ID, + {}}); + result.append( + {compilerPath.pathAppended(cxxCompilerName), + ProjectExplorer::Constants::CXX_LANGUAGE_ID, + {}}); } } } @@ -1052,7 +1090,7 @@ bool CMakeProjectImporter::matchKit(void *directoryData, const Kit *k) const const bool compilersMatch = [k, data] { const QList allLanguages = ToolchainManager::allLanguages(); - for (const ToolchainDescription &tcd : data->toolchains) { + for (const ToolchainDescriptionEx &tcd : data->toolchains) { if (!Utils::contains(allLanguages, [&tcd](const Id &language) { return language == tcd.language; })) continue; @@ -1065,7 +1103,7 @@ bool CMakeProjectImporter::matchKit(void *directoryData, const Kit *k) const }(); const bool noCompilers = [k, data] { const QList allLanguages = ToolchainManager::allLanguages(); - for (const ToolchainDescription &tcd : data->toolchains) { + for (const ToolchainDescriptionEx &tcd : data->toolchains) { if (!Utils::contains(allLanguages, [&tcd](const Id &language) { return language == tcd.language; })) continue; @@ -1117,7 +1155,7 @@ Kit *CMakeProjectImporter::createKit(void *directoryData) const SysRootKitAspect::setSysRoot(k, data->sysroot); - for (const ToolchainDescription &cmtcd : data->toolchains) { + for (const ToolchainDescriptionEx &cmtcd : data->toolchains) { const ToolchainData tcd = findOrCreateToolchains(cmtcd); QTC_ASSERT(!tcd.tcs.isEmpty(), continue); @@ -1126,7 +1164,11 @@ Kit *CMakeProjectImporter::createKit(void *directoryData) const addTemporaryData(ToolchainKitAspect::id(), tc->id(), k); } - ToolchainKitAspect::setToolchain(k, tcd.tcs.at(0)); + Toolchain* toolchain = tcd.tcs.at(0); + if (!cmtcd.originalTargetTriple.isEmpty()) + toolchain->setExplicitCodeModelTargetTriple(cmtcd.originalTargetTriple); + + ToolchainKitAspect::setToolchain(k, toolchain); } if (!data->cmakePresetDisplayname.isEmpty()) { @@ -1335,7 +1377,7 @@ void CMakeProjectImporterTest::testCMakeProjectImporterToolchain() config.append(CMakeConfigItem(key.toUtf8(), value.toUtf8())); } - const QVector tcs = extractToolchainsFromCache(config); + const QVector tcs = extractToolchainsFromCache(config); QCOMPARE(tcs.count(), expectedLanguages.count()); for (int i = 0; i < tcs.count(); ++i) { QCOMPARE(tcs.at(i).language, expectedLanguages.at(i)); From bd1829b56fe4c052d4f1994b08552443502aa4bd Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 15 Jul 2024 11:00:21 +0200 Subject: [PATCH 29/77] Doc: Update screenshots of Python project wizards Task-number: QTCREATORBUG-30604 Change-Id: Ia4da792a1270cd25686e9fe02765f81d24232ae2 Reviewed-by: David Schulz --- ...w-project-qt-for-python-kit-selection.webp | Bin 5796 -> 8858 bytes ...new-qt-for-python-app-project-details.webp | Bin 4374 -> 5048 bytes ...n-app-qt-quick-empty-project-location.webp | Bin 6178 -> 6104 bytes ...t-for-python-app-widgets-define-class.webp | Bin 5968 -> 6120 bytes ...r-python-app-widgets-project-location.webp | Bin 6080 -> 6084 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/doc/qtcreator/images/qtcreator-new-project-qt-for-python-kit-selection.webp b/doc/qtcreator/images/qtcreator-new-project-qt-for-python-kit-selection.webp index f7c3be17d5b7658dc6ca0d7490ff45a10eb40a0a..d8f942244966c31fdf4c8eb8bc40f5aeaff05001 100644 GIT binary patch literal 8858 zcmWIYbaR`e#J~{l>J$(bVByoI#K54hc({e(D%ay}y)vDDr|+${v{O!EvNHdbt~<}| z{A;fN8sameidt_U6Wg7)GuYygo%vg?`_iqCbfhjF5#n3nqpkJl_BQQ2<&*!9{X6yG z-baJY)6LI%7W22?dHFOqLgv$^=`(GtUoTAy>lbgEnKg6fOv$3JmiNEU4SpJQv~*Rn zugFd7NvYnO{3jJ1pS1fpSH!l^RX!zN+Pm*wTAf>c>)AP>IXga@yB@MCGB5ryTc~&9 zBE6eop6^dC-@qtuw@Wqh_O?AIzwY_UYocDiG4bx+NVor?ZKYc>gk+Ze`)vG0^6zq1 z&q;U9R!vl3W?L}Nw5_6O-k!AYKl5Lv<+3Xa?=PHkb;-olR~^}RPJAu%d8z+{8{2N1{hDi)Ud+j)kokXi z!8XoSUsc#EiWUh!xVCMr*{=7gr+DHYaH-V3+Anaa-0q8_;qA#^?hD>F>q~hbH?!;z z!}Z^D-G7+>LH$SS9`^hr=NmQ!?l}I=y(*Gx-{Eu1rtf7GnwI`lD>eVv$#}=g z#~FX+1O7+n{IR;%bpKfVgZmrg8Czs$S$#|UBlVB%=i;Be{12vY*eKuF`t-WrKhqoY zr~l)A&Df^uy}zs1{@Csf8|5-?9J4O0c)5LpT)~a}q?dPp7_-Q(nfIsik8l%TSH4rG z?S~CQu0i%*5w@HHC(<~%R^O?UKXB@}h^>73Jq?c^AKj+avu?NAQ18b0`PA-0{!>q7 zLr+h*`tkJKcH6mY^S>5oo5#`` zXI34*+Uw+|wJu&OjjNV)FTZg4qlWbRWxm=^dzgMU-T(AQde-rOf=pbtbGIE0XW4sD zpMRSKlkBz`^{J({^L>?5y4e3ouKRk0`@#Dk+imJwlaKfP)jfBuTg1H8FvdG~-=;&` zwtiaD7an%KM)JK3)5Ht&l4d8yIQvhCZ~qwhV(D6gK=a&ta{B2P=dcJ}H$VNfrrr9` zQjxx5&AHC&pZM;aGnL^~-IuB5kBuHOUf;d=)}zAfO}F!cjxsBYcHTdDd#BjvoOQ02 z-W63TexWrR^QHd?@|nxuyJ1mfrZ%Jf%x8}!r4!yfKN});^U8|uJaQE%OkZI>yskqc`EYI#}9r`t<&azH)K*@MhaKkKxNFweH`JOAHp;)LfXu z(dkgL^Uh&02Csvk7Gx**I+v}guz2aQTz$)0zxS`VHMw?mx4(HXHQCbN(z|k%SC!vI zoxjq{{&D_qT)Mcvt9`D7j-&sDZky6Kt8K0~Nf$SK6Jfn_?;UT-LEEB$z5}s3x0^XV z(pxop19LvucO;wLtY7TsyX|C|@vYzo4@A~7>-;uv{V2F=`7X|;rBg#3QZ}qrmt(2$ zYoFk45$c;)y{t-d~6XM@>C zjXS(81qGJgWeeCBFuZttXVX#UZ7(Nr@jQOKroBk4a+O-duZrgLA$1{rKh7&|m~pSd zs&2_Hy~T$oE2)o?chy}WMdipY4avHHXB4kIe9&e3UaHJv%?;CI9m@=v#mzNdJ$R*c=x|b% zb^bo)gIW*%^mI;$2%7Se$+z&}h8f`nH+XJtOgtc*oTTfzH21?St`mudJPIK%nhaI8 zXb2x%VH&gR*U?4ZhAjt~nY=eF3^QO`Q{5n8AlDGUX#QWT+0HSE@y+?qvhRGEbBv92 zH}jghC%INMpD8K5JY&XsjU+WLt)x$Exjmh8nxeynw*2b6V0CJSgu@CAhl8`&G9KP5 zuk63(8tT6E?$wi=+mbpsOnn6A3kQW{9^dugg5v#UGp*mhIMa3Jj!v&Z(et!!rY;e& zSZAJo7l$Q3Jl0q|eeSm_!7u9b-2$GVmJkawuZuH&_L(F&_pV>E;v|RYC)pJql1#2S zOVcEif4C*NILKId2l-gpypSkZo|gUN{dK+@M-@X396b5pps>O;DVf6sVfD5)3W@%W zt%o@s&!1Xzc|)(^24jA8_4Jl=A&>ShspJT0?4N#c!L(UEXC3GKXjsS+S`z87gl|`f zkF)tf4UdVBKNM_wac(!4O>al6fJFHjVek~^6GD}*x zSt~3+R%pSwsRtPTadQQxE^9pEz*Sgq!SW8n``CWT4PBxf!NRN@%{MIqSl1-69=zXo zkC#L3^(!yyrUP1G25+>3{%;9ftKKPk(DKNFE>W8q;b&H?E1WFb;(WP4+UB?UWdXwv z&suie=D4%5=$V|8&%7^pTUAu8mheq)w9T=Y9TBLbajN61C8L0P{fgFrd1ua)*A%<2 zi}EPoaq2EGxiiD>JHzP&pRS-r!^=uHD*iT(Bd}RqfGf>0N=Qt0vzl5%h2o zesRH*;|k9$i6x~Uc=#52S+6@Yr@VA~u20Xp-3#;WT<+$1JW>DpiowLm@PurkB#-r+ z*+*9`$dWy4mA=c9n{tm>_=N&HN)=siC`pB;eK^~^W6>g4 z_R0l*c}kN$mYN?q+pe)Rp}Tj5`hI~xk)$OH1r*C$QZMwGtlT9#v6cC$k@-u${TBnK z@1A|;$b_cO&Z|Ka*(K!ruBsTH307Ix`R*)}$%O+iB~682H|4YOx=+8Lu)=ylz;1^R{^}bXQH?XOwdO)EYS%xsQp5yG&XWjMsQ- z9J+pYg1P*nO!qtLPtXPLRz3 zx*{x3oyQ_<(eO=9I5|^9(Y^6^SaJICrxOnTC<^{l z_Nm1AQR=icXO`W)6}INcEdSWIJKl0{J^tNfUf!efhaJ}&Tv=^?ixVoGbP|e)waW^r z@{`;7|1jFz<&cn(I~sMg*gS`UZJ!|TBuD8w?aW`ZCM7gXc4evv2r2OG)H;4~UgP1d z?9bfdgBM*WED>^~YKlM5@_{yL5Q_naCWQmaM+@{=crZ_c%WK9Zh-g!Hq-F zSxl*KZqtO73=48kzM428UnC?m;iTN}Zy^b1)i=Czx#=aca`r5*@J|}N>y}LnU%80; z_!`~hq)pe{FS~Aa{Pp4Fv6>^<>ddAe4n)s56|%^Km-R&0Ck@^}-(aO+paB*UDs%yZBr32wR_T3jZ5aHQ`bJZ80OE?e{t!H zAVc1U6y*z|=PPG?-9LA3e)GlOQH3|(`W`4`h$vr_quO=F*LSIQ<&<{;Q*BR&);)#=Zd;-&;M6FUwi8Oz3W}) z&e^Ol)t7$1`)7@%my3k$uN!Bd_gjUtRJNQu=6+{)knGgp+9N4d4fY0YMGu3!c4Xh{ z?9Yo+JMk|iFh)M>eYK6=zU_t5DoQ`$gcgUZ z<@mT+alCS4k^V1o;AcO|Gg^A)IaDO`PbQm&GNl+wZ4?`U10lH^AA#!H2%4! zDXlqQf2USdDX`y~w`XmME^mVE?Vpuq4;GxC`fag$>4S?Gs}>pf%@3McHf!0ubMNm2 z%`EGB;+OI#J;~_TQa;_s_LBc+KImecqqKIJfaNRIIYK9#?kwbQ+HiZpiyh4Oj-Rp< z*d{cm;OqU`)oDGFXXC!gE3EYEFNycM^nT*jq@JU%{~1TDajh?XuPt=gCC>b=X~3~1 znvQB`0}P#unR@Qzt6SQ)^roKW5jB=v6?S*MZp7-kw+Bvs((2KW@V-9RZu{X0#tK5m z^7fy7aagNo+rp!MlbDlshKi>?SXA-jms!M*iQc^m60I?+f4KPq0yauGzu7Z|u}#d{ z?ejwg3GXZW?<`rk(1y{zMkeRtmRHv;*>^;}KR%sv!kKOSA#)c#I-Qi8yKt+`r{dcZ z!K?iG)0Un6q{VNt;T@yaijKn!oL4iQbL90Rw4GbU4tlh8ry3={WvSO?Z(H`u zZe!=3`Oml#w>vT1ek`9@U3pc_A(l7)%eJg+7yk4mzY8xm8UD~0C^`O~x9zdPj*hz7 zW=;EDvVUoF+RC2V7pSd0b;8Vw(j$l0yB<8$^*tcQTy{-kU;{@%1Vis3{^bYj7qSNS zvt7EV@h{KlY#YC*@evj41tn|;#lwH~i)-6BeArpV9u{`5Gk4MgtJrAf<9EF|Ot=^? zOnl;WjOj)w&&Qq_Jl}-W7}gz=I3OHvzId8phBE6J#y3Cu(*9=f@|(GRne_TCN8Km+ zq}6(Q>-$dH&sBD0uUpkp{PSMzQI-4MfiJ>$r#!jgq{(B&ao7NyG8q~i7H*Z9d4<#I z++mqBPIf;Yl%@Pp4>mpMzI&V5XJqp6oU&ZqEp~f2q&~7luPwT}KX%j6kOh&P-!dd+ z)h*?3tXq5bkHxasXpa=`EsL37NNS}`?%SNOc1lg)?rm?3`!cVKiEz#q3zSaX+QM`( z(dpaa|68-OjqM>4N!D?4H*=%+oIC2-$LkXJ@!A@R#S>Q-_HLiyRor<-y;0|F`>n01 z^&cP>>_4mYn>~%UW!J8D({s!YKO}_LH5oBHWthzv%Ct#g--_7iZPt&cm*pnjxF0v2 zcUfs^)x9Xj#|rC{cI@nkdD`W^xo%5b?7nyR^{(gl7^*68XI!#d5gW~C0Cvks)t;vI zg5;>%4W|FnQntrteJpa|V@^1Z?A*R+z4c+@zLS&_Yp=RGsoS?4Fll&^_Ni|zV`PEI z|LdTj_^~uLIzq)t7W(bpcFbza4}bXz zz5P2SYqn&s-ud$F+gn^1@e_E*_?BXMM1iw0DB3CwjPG4tr#rP{`L=9rj|U&qq$lQH z51Vj6^_gDH#+a+?bU*c7{J{3E<=4WbXWkoQ9Jv{0lxw^=ao2mpGp~IO+ve7!zuMOoT$X;>8(FKd~@{I_0xXe z+A4ZX`R;ogrNCs13%(E3|7xpGPdK@1;-t8x-<7|_t-B!HbIsq}zIFCToyXhCavSA& z?r}&hS+Xl)_b&4-VUyR zG`#wKg4_4s*NRPduC3FxoM7?aYe|9XW3yt%5JToDpXvGge;_Xw6OP9;lDN9{e=%AH;mp!mn* z?C{%51h7O#gY zRVS>(ycY5(v~2w)r`ovNc=6ZOq4%2GHrL9^t!{d|_vEcv0kh8`xNNQB zyfw#PCO=iGe&d-|bAIK==g&jk@1MVsKK&=tW2J2SyHi3;`fuOP{5DIww|h<5ua2%~ z$)#&|9@=s0S$5W})4Jg^Yi-uJVJK!yh5Mw*VWvLVi2~v*6?N{OJsD;+2sZc zPxNk_?Y}3bj5mw-3D;7A%y};+RB5(a=sQeYv+;Ck)-Da*U2QAwELmv$L?|tyve8d3 zN4QteKlba)pWIx#BcQf?OX*zG-gJ8U0k=EWY*%z0lU!rZ8hsZ|pRCBE$FzR_?aNo(T>5G0bb&PgZw=-)UpEF$;QKx`y)wsmYD%Wnk%ma28^YJ`>T3GW+4fDy z@433@-m|Ax$DPT$x<5*9P2lX~y5ZB>a!Nlqoe$bq+v9PlM1k{om&%f+z=pG5WtTFj zOnvs?gND+kw;OJjcI-`S7o72Q*K04ur;$6;r?kUUw@6solB9y^U9NVDiSkl zKUOEs`ObO9NXG5qVjrhOg)>uEWcuGu{atZcU8Fd*_g0M8nnc@)E=N~|I0Q9MmifeH z)!ou16PwYv{NY*E1?p?>Y9$ILnORB1c1YxM*Ua4f?DD>%ka@1F6=&3cp2)`e-7|f9 zsv^^Ao$1=A_E&f;y{lT5+_9xwJ?NY9C66e$|x0zx~44D&o5)m9g>8)hWN6T11>RZ;4%Kx@!1-hkU`2A{)6T({Lj>e}B~%-}fr4 z+dp6IWAeNAlBZ_dEu3MUeP!LV-~6*KvS({>WIkZNq-GrTjS09eGdiijrX_rRi!*rz}J;ip%Cvxh48ZYa~sjDnk*my@VfVtrU?`0N| zpK3zxX@2S@Vq%jtCf{+Kxj!QTn^kY)Q458)h^rJ~&~cd_U|=$)#_3$@`B_ zwp%zuI{OOS?aJ$^&4F=iy%^;tY?HYV$*%EiMZz{?iTsv{3zoEtZ@#KHNmOpxTXn_h z9cq#tTe{1orl>90;GuGmD?pJ`P-N-bFN~_(@kIt)K?~$8dqtczO?IDgbxUZI_PDyT zDD#I(XvL!|9_RcTRTnSZlymH9otCJdsmJXe1JB%Z5uQ123pVjw&8}dg% zj`GgF!X|&Xi{+hQ0Tc6EqE8ZT9D1%%NcG`zt!F`{$olHROBqyou}iaJKt`B z33I;D>EnYb!puZO~efPYt6){0z> zU;XO2=+ec%=N#|0TR4L|`-SC*S#_Hq8?My|U;iXxU?PE#3b zw>Tz=^!_tvNNAXwP#~A~;f-?itM1RWl@6BmF!WF6!yN9u=G^ zuJ3izKi1%gh6l6Hk_wT;f+=hHv?s4U%o~((`ACZn?_Aba7LkiP#rnTyF0i^zMbt`SoT$E zmtI_$>zgaA$3nkts6DpbG)v#e^4XI9D8>a$(Q~<^zMNiqE_;sM0=_Byks(5<&sEkN zJeLl?>HO{EIjODtt+#f+%`5oT&{ueT^^93To8Nm^&a^zg1(Z7>aRSjr@vfUF*7Dv{hW>9!rUu4x-RLjO~oVsHs;@EVKlv&`seuqW~SEVZL>Y+ zDm=0AIaY7<&sdOGuI#<`)Q;tL_g^P4-h5syYcN6Y{C6weB9{aCPx=p(cU^k+Gj6$a zAIFbHe*`~dTzdX9Zn-Oz_ss8?&HdL~P6#sEPqAmZXJgSj?|o_1la2=cQ}T@d@0MKr zyw|T=M(~5Tp zCw>PR{VV=pBl(~6u)>n9GLrvKt~l$vBn>QQQM@ja{>T05#EQ@V4bwr?5e2m&QqTv zw@;g>bud@*hErkXtm3IpH^0+SE^T^kw1Krack=1kMN?ZNr%#(`bg)$NM$^sfPc|)! zNo`%@ecEH@gIzp12V*9`x)ic*Q`)tqsY{9q6jY^#!pYor=|Ytak!4Xnl!UQJrI zkG2l-oLOpS{x6}!CX)GBo!(WK85V7&^A`DTp27e1Z^pGa$w)i5 zsxPX4mL$4&tz71JBYB&2E`8gx&FmL zYUjQkTPn5gS;OR4*Nf#vBqR#NY9*Sa;nofjg}{T73B=qt7`G(al|zY57{t zT{qT$T=0N{VFvf-GyHD~7Z_Z5Ryj$!FqP~6i%QGv^*t|Q3@*9!@-o>)KoG;71b?A_lUt~qO@w6I{};5aNGrf)5c(+a;C1jt_5B0p(#cMg1T9N+P4fx0dEB`dEPp=tqIc06)j@co3kUiLuWBa4az84PuQvUv^NVw!f{r3mYKeVd6 zIAC(G_r0=uGw(UorR4_?Nq_X^FsW#Y^swuQKfwOshIZk;CT_nv-ksd<+kd*Q*~8x} zSi^YJZ(eQ_$EN&hfMU%KzE+@XF8q%TNRW Duu1eN literal 5796 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 diff --git a/doc/qtcreator/images/qtcreator-new-qt-for-python-app-project-details.webp b/doc/qtcreator/images/qtcreator-new-qt-for-python-app-project-details.webp index 14494a04d374d609a6341b4a83fc49e101488a35..19dedb05a247595b239c584cfd1b82d8d9c7cfaa 100644 GIT binary patch literal 5048 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 literal 4374 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�JZJtx0Ru}WqadZ}n_&`;IP^d^Fh%0 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 literal 6178 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 N^Z&&};f5n~831(#+B*OM diff --git a/doc/qtcreator/images/qtcreator-new-qt-for-python-app-widgets-define-class.webp b/doc/qtcreator/images/qtcreator-new-qt-for-python-app-widgets-define-class.webp index 681df512fbe766bfd55a996a3363c2dbe7dada26..d8883c7168ddd20a160d666402831a5d288508bf 100644 GIT binary patch literal 6120 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 diff --git a/doc/qtcreator/images/qtcreator-new-qt-for-python-app-widgets-project-location.webp b/doc/qtcreator/images/qtcreator-new-qt-for-python-app-widgets-project-location.webp index 7e0a84b938282662053f109ecbf050a9fd70182e..8d61b5bc21570a4a850519a73d6bdae5a7f54d02 100644 GIT binary patch literal 6084 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 literal 6080 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 Date: Tue, 16 Jul 2024 12:35:29 +0200 Subject: [PATCH 30/77] ClangTools: Fix warning GCC 14.1.1 claims a dangling reference when using make_pair(). Using the constructor instead makes the warning go away. Change-Id: I10b4af781c36a6ae4d5a525e875cd369d2a051b6 Reviewed-by: hjk --- src/plugins/clangtools/clangtoolsplugin.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/plugins/clangtools/clangtoolsplugin.cpp b/src/plugins/clangtools/clangtoolsplugin.cpp index d0cea985b51..a53987c3d87 100644 --- a/src/plugins/clangtools/clangtoolsplugin.cpp +++ b/src/plugins/clangtools/clangtoolsplugin.cpp @@ -177,10 +177,11 @@ void ClangToolsPlugin::registerAnalyzeActions() widget->toolBar()->addWidget(button); const auto toolsMenu = new QMenu(widget); button->setMenu(toolsMenu); - for (const auto &toolInfo : {std::make_pair(ClangTidyTool::instance(), - Constants::RUN_CLANGTIDY_ON_CURRENT_FILE), - std::make_pair(ClazyTool::instance(), - Constants::RUN_CLAZY_ON_CURRENT_FILE)}) { + for (const auto &toolInfo : + {std::pair( + ClangTidyTool::instance(), Constants::RUN_CLANGTIDY_ON_CURRENT_FILE), + std::pair( + ClazyTool::instance(), Constants::RUN_CLAZY_ON_CURRENT_FILE)}) { ClangTool * const tool = toolInfo.first; Command * const cmd = ActionManager::command(toolInfo.second); QAction *const action = toolsMenu->addAction(tool->name(), [editor, tool] { From 5aa48c1518ed7f4ec78c598fdf69bfa8c9869864 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Tue, 16 Jul 2024 12:42:59 +0200 Subject: [PATCH 31/77] Utils: Fix modifier filter for multi cursor events on mac It seems the keypad modifier is almost always set, but the alt modifier blocks usable shortcuts. Change-Id: I09e5d3a07bdc7ca2f81c3822097c412db2e212bd Reviewed-by: Marcus Tillmanns --- src/libs/utils/multitextcursor.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/libs/utils/multitextcursor.cpp b/src/libs/utils/multitextcursor.cpp index 4eb77569224..a02bfebea53 100644 --- a/src/libs/utils/multitextcursor.cpp +++ b/src/libs/utils/multitextcursor.cpp @@ -339,7 +339,8 @@ static QTextLine currentTextLine(const QTextCursor &cursor) bool MultiTextCursor::multiCursorEvent( QKeyEvent *e, QKeySequence::StandardKey matchKey, Qt::KeyboardModifiers filterModifiers) { - uint searchkey = (e->modifiers() | e->key()) & ~(filterModifiers | Qt::AltModifier); + filterModifiers |= (Utils::HostOsInfo::isMacHost() ? Qt::KeypadModifier : Qt::AltModifier); + uint searchkey = (e->modifiers() | e->key()) & ~filterModifiers; const QList bindings = QKeySequence::keyBindings(matchKey); return bindings.contains(QKeySequence(searchkey)); From 9e060ae58574753c05d6c10c6066e260070878d2 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 16 Jul 2024 13:16:10 +0200 Subject: [PATCH 32/77] Doc: Update SDK Tool docs - Add values of addDebugger --engine option - Make section titles unique so that the links in the Contents will lead to correct places - Link to the values from CMake presets docs, where they are also used Task-number: QTCREATORBUG-30604 Change-Id: Iefa979a3fe4a987191a67e81dffd659963477643 Reviewed-by: Cristian Adam --- .../cmake/creator-projects-cmake-presets.qdoc | 5 ++- .../src/reference/creator-sdk-tool.qdoc | 31 ++++++++++--------- 2 files changed, 21 insertions(+), 15 deletions(-) diff --git a/doc/qtcreator/src/cmake/creator-projects-cmake-presets.qdoc b/doc/qtcreator/src/cmake/creator-projects-cmake-presets.qdoc index 4e0160ba9eb..a749acd41ac 100644 --- a/doc/qtcreator/src/cmake/creator-projects-cmake-presets.qdoc +++ b/doc/qtcreator/src/cmake/creator-projects-cmake-presets.qdoc @@ -126,6 +126,9 @@ To speed up the process on Windows, specify the \c CMAKE_C_COMPILER and \c CMAKE_CXX_COMPILER in the \c cacheVariables section. + For possible values of some of the \c debugger parameters, see + \l{Adding Debuggers}. + \section1 Ninja Generator Example The following configure and build presets set Ninja Multi-Config as the @@ -297,5 +300,5 @@ } \endcode - \sa {CMake Build Configuration}, {CMake} + \sa {CMake Build Configuration}, {CMake}, {SDK Tool} */ diff --git a/doc/qtcreator/src/reference/creator-sdk-tool.qdoc b/doc/qtcreator/src/reference/creator-sdk-tool.qdoc index c1f7f3b56eb..546b5fdf22c 100644 --- a/doc/qtcreator/src/reference/creator-sdk-tool.qdoc +++ b/doc/qtcreator/src/reference/creator-sdk-tool.qdoc @@ -144,13 +144,13 @@ \section1 Adding a System Architecture (ABI) - \section2 Syntax + \section2 addAbiFlavor \badcode sdktool addAbiFlavor --flavor --oses (,)* \endcode - \section2 Options + \section2 addAbiFlavor Options The following table summarizes the available options. @@ -181,13 +181,13 @@ \section1 Adding CMake Tools - \section2 Syntax + \section2 addCMake \badcode sdktool addCMake --id --name --path [ ] \endcode - \section2 Options + \section2 addCMake Options The following table summarizes the available options. @@ -234,13 +234,13 @@ \section1 Adding Compilers - \section2 Syntax + \section2 addTC \badcode sdktool addTC --id --language --name --path --abi [OPTIONS] \endcode - \section2 Options + \section2 addTC Options The following table summarizes the available options. @@ -322,13 +322,13 @@ \section1 Adding Debuggers - \section2 Syntax + \section2 addDebugger \badcode sdktool addDebugger --id --name [OPTIONS] \endcode - \section2 Options + \section2 addDebugger Options The following table summarizes the available options. @@ -355,6 +355,9 @@ \li 4 for CDB \li 8 for PDB \li 256 for LLDB + \li 512 for GDB DAP + \li 1024 for LLDB DAP + \li 4096 for uVision Debugger \endlist \li \row @@ -388,13 +391,13 @@ \section1 Adding Devices - \section2 Syntax + \section2 addDev \badcode sdktool addDev --id --name --type [OPTIONS] \endcode - \section2 Options + \section2 addDev Options The following table summarizes the available options. The options to use depend on the device type. @@ -541,13 +544,13 @@ \section1 Adding Qt Versions - \section2 Syntax + \section2 addQt \badcode sdktool addQt --id --name --qmake --type [OPTIONS] \endcode - \section2 Options + \section2 addQt Options The following table summarizes the available options. @@ -609,13 +612,13 @@ \section1 Adding Kits - \section2 Syntax + \section2 addKit \badcode sdktool addKit --id --name --devicetype [OPTIONS] \endcode - \section2 Options + \section2 addKit Options The following table summarizes the available options. From 8a3958df81d6650758e8e92b8f5cbdd0ff149a5b Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 15 Jul 2024 15:47:10 +0200 Subject: [PATCH 33/77] Debugger: Delay showing tooltip Task-number: QTCREATORBUG-31250 Change-Id: If74100538a992b5bc7d71bdb2808f6d1e70571d1 Reviewed-by: David Schulz --- src/plugins/debugger/debuggertooltipmanager.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/plugins/debugger/debuggertooltipmanager.cpp b/src/plugins/debugger/debuggertooltipmanager.cpp index 421d0efa94c..b5b7be2f980 100644 --- a/src/plugins/debugger/debuggertooltipmanager.cpp +++ b/src/plugins/debugger/debuggertooltipmanager.cpp @@ -647,6 +647,7 @@ public: void positionShow(const TextEditorWidget *editorWidget); void updateTooltip(DebuggerEngine *engine); + void updateTooltip2(DebuggerEngine *engine); void setState(DebuggerTooltipState newState); void destroy(); @@ -782,6 +783,11 @@ DebuggerToolTipHolder::DebuggerToolTipHolder(const DebuggerToolTipContext &conte // after normal WatchModel update. void DebuggerToolTipHolder::updateTooltip(DebuggerEngine *engine) +{ + QTimer::singleShot(0, [this, engine] { updateTooltip2(engine); }); +} + +void DebuggerToolTipHolder::updateTooltip2(DebuggerEngine *engine) { widget->setEngine(engine); From 0dab2acd83e24a1512129dd0bbd7ad2d37ed4a43 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 16 Jul 2024 14:04:17 +0200 Subject: [PATCH 34/77] Doc: Add examples of .shared file names for different build systems To make it easier for users to find the information online using search. Change-Id: Ibd27f724b5c7b0e8bbb69809d98e57b332a25de4 Reviewed-by: Cristian Adam --- .../creator-only/creator-projects-settings-sharing.qdoc | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-sharing.qdoc b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-sharing.qdoc index 09898e8f56e..11c3c984301 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-settings-sharing.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-settings-sharing.qdoc @@ -16,9 +16,10 @@ \title Share project settings \QC stores user-specific project settings in a \e {.user} file. You can - share these settings between several projects as a \e {.shared} file. It - has the same XML structure as a \e {.user} file, but only has the - settings to share. + share these settings between several projects as a \e {.shared} file + (such as, \c {CMakeLists.txt.shared}, \c {qtcreator.pro.shared}, or + \c {qtcreator.qbs.shared}). It has the same XML structure as a \e {.user} + file, but only has the settings to share. To share CMake project settings, use \l{CMake Presets} or a \c {CMakeLists.txt.shared} file. From 431b0c314abdce8c325dd46720fbd498610ac68b Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Mon, 15 Jul 2024 14:24:07 +0200 Subject: [PATCH 35/77] Doc: Add a tutorial for using the Qt for Python Window UI wizard Update the other Python tutorials to describe setting up PySide6 for a project. Change-Id: Ia0a13f41c1f270fa0ec6c1445f1546e884b7e78f Reviewed-by: David Schulz --- ...project-python-window-ui-define-class.webp | Bin 0 -> 6188 bytes ...n-window-ui-define-python-interpreter.webp | Bin 0 -> 5124 bytes ...or-new-project-python-window-ui-ready.webp | Bin 0 -> 2272 bytes ...-new-project-python-window-ui-widgets.webp | Bin 0 -> 7436 bytes ...tcreator-new-project-python-window-ui.webp | Bin 0 -> 6694 bytes ...r-new-qt-for-python-app-window-ui-uic.webp | Bin 5510 -> 0 bytes .../python/creator-python-development.qdoc | 13 +- ...rial-python-application-qt-widgets-ui.qdoc | 115 ++++++++++++++++++ ...utorial-python-application-qt-widgets.qdoc | 4 +- ...r-tutorial-python-application-qtquick.qdoc | 11 +- 10 files changed, 132 insertions(+), 11 deletions(-) create mode 100644 doc/qtcreator/images/qtcreator-new-project-python-window-ui-define-class.webp create mode 100644 doc/qtcreator/images/qtcreator-new-project-python-window-ui-define-python-interpreter.webp create mode 100644 doc/qtcreator/images/qtcreator-new-project-python-window-ui-ready.webp create mode 100644 doc/qtcreator/images/qtcreator-new-project-python-window-ui-widgets.webp create mode 100644 doc/qtcreator/images/qtcreator-new-project-python-window-ui.webp delete mode 100644 doc/qtcreator/images/qtcreator-new-qt-for-python-app-window-ui-uic.webp create mode 100644 doc/qtcreator/src/python/creator-tutorial-python-application-qt-widgets-ui.qdoc diff --git a/doc/qtcreator/images/qtcreator-new-project-python-window-ui-define-class.webp b/doc/qtcreator/images/qtcreator-new-project-python-window-ui-define-class.webp new file mode 100644 index 0000000000000000000000000000000000000000..3324e3e4fc240e1eede92fbc9e31c18d41e8f6b6 GIT binary patch literal 6188 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 J^84uy&jI1zEhYc} literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-new-project-python-window-ui-define-python-interpreter.webp b/doc/qtcreator/images/qtcreator-new-project-python-window-ui-define-python-interpreter.webp new file mode 100644 index 0000000000000000000000000000000000000000..0556d66d29e738d57a08556085c6332c72c8b4d3 GIT binary patch literal 5124 zcmWIYbaVS7%)k)t>J$(bVBzy#n1MlG@o)>n*RIEIlSDKR*KeL)$uB2p$oN*eYSRh6 z=`ZJR5McSO;l-Pzepza}S?=st7U%v<<8_Z-`k`osaPZV;lNHbW(3B58b7oFz+LgAM zCq>fI(n@yzuKoSR@{+`^*vo9a3$xVNJUdN;A8%Z<@oHP-v%75(qMnsLxv}l7+o^L?N*~*Hop!0XVDV#d2ru*dxgw7qIxk!0vij}R=-b<}%!|A8 z%Z~Ca)Gl5a|)Z|u_<5Xi{;)9yPYOCo2~1Fn{qnG1<}fyOOyWF=c>$2 zj;o&EHgDR@?<+3~@E0E_461FCUH+VF_D<*Ya|^D-Ifh3?`klV}UwyynPLne>mpAyF zy)*ff(ffqUAB@ueo#qJ@$j;8b{l|DmoX^4Yi9d01U-SOEpD)yV^r>i0IwU5YmX!Q(2mcRES^J0XHQfhmTFO6#MSK-Iw7hR= zTIhs{eNnNSU!5%oNe|ZiG5foo-I=5JpR}*}Z+f=rqkC#5mC+*cX&HBs!!>T)J-IEpP zCtH2AKEbE$SHr&Fp=^fT?xR!XL=!bjw-~NktRlFk&)`VdglT;YJU5#i_TkSXh;J$2oi`C+F((9wD zz5d@Sy+zLUN;7*N`LSxQ{+hmC z>0$c%BJ)WusZ!kUcsf+x?K`oZ_kKc6-OFEJbN4?>5BO0(rFOO1>Rn&h^YhBwVzYv; zyq&Xm)t=1Fv)2`Eo|~r`w{@SVa_O%X#g|LXmMkoZt&Fj*a%?fX+PGw{hSAxEvNkuN z_AukS7Xsts>z!{ulD}~9g5=wtT`zZ)$Sy8DwsrEkMbS+9j?(6nMXoNbKX7Bdamou` z+dq#P;-9uuSUw?AN?U_F3*e{%$z-(J+QT#8f`{>up^~WD=%immL=v;FyIP7kk zd7SM%nOo&%6BgUwUp4oQwsrIIyOx_D98}1#SuVENujS;fnpV|=+q-z{4}Csy_@4*6 zclhC&suQNwqQcp1CPB0GRxjg|%<>hZ0_7LCr=(q%Q;Z%xE*Nd~5Wl=$QKG_+>V`=r2m(q*FdbN@J0 zTuTz4dbKA;W7$Uj@x1Uxhy0>Kh z&%X;7hB|mg&khXw{9Sd;#*F5}X_veh}4?tb2KQo{eS%0Dv= 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 M71H&g`W-U^0P|mZO8@`> literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-new-project-python-window-ui-widgets.webp b/doc/qtcreator/images/qtcreator-new-project-python-window-ui-widgets.webp new file mode 100644 index 0000000000000000000000000000000000000000..de2c5dc95ac2683a7e650d66160addf742421d80 GIT binary patch literal 7436 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 bsOj&b3lTEY3N2^tZC=`6bn##Q#czxN!}jdf literal 0 HcmV?d00001 diff --git a/doc/qtcreator/images/qtcreator-new-qt-for-python-app-window-ui-uic.webp b/doc/qtcreator/images/qtcreator-new-qt-for-python-app-window-ui-uic.webp deleted file mode 100644 index 2e6368d91418498100e3ab7aff1a170d3b321854..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5510 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�?88vn!9($+USYFnB*vI#8 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 \uicontrol {New Project}. + \li Select \uicontrol {Application (Qt for Python)} > + \uicontrol {Window UI} > \uicontrol Choose to open the + \uicontrol {Project Location} dialog. + \image qtcreator-new-project-python-window-ui.webp {Project Location dialog} + \li In \uicontrol {Name}, enter the project name. For example, + \e {hello_world_ui}. + \li In \uicontrol {Create in}, enter the path for the project files. + For example, \c {C:\Examples}. + \li Select \uicontrol{Next} (on Windows and Linux) or \uicontrol Continue + (on \macos) to open the \uicontrol {Define Class} dialog. + \image qtcreator-new-project-python-window-ui-define-class.webp {Define Class dialog} + \li In \uicontrol {Class name}, select \b {MainWindow} as the class + name. + \li In \uicontrol {Base class}, select \b {QMainWindow} as the base class. + \note The \uicontrol {Source file} field is automatically updated to + match the name of the class. + \li In \uicontrol {Project file}, enter a name for the project file. + \li Select \uicontrol{Next} or \uicontrol Continue to open the + \uicontrol {Define Python Interpreter} dialog. + \image qtcreator-new-project-python-window-ui-define-python-interpreter.webp {Define Python Interpreter dialog} + \li In \uicontrol {PySide version}, select the PySide version of the + generated code. + \li Select \uicontrol {Next} or \uicontrol {Continue} to open the + \uicontrol {Kit Selection} dialog. + \image qtcreator-new-project-qt-for-python-kit-selection.webp {Selecting a kit for a Python project} + \li Select Python kits for building, deploying, and running the + project. By default, this creates a virtual environment for the + project inside the source directory. To use the global interpreter, + select the build configuration with the same name as the Python of + the kit in \uicontrol {Details}. + \li Select \uicontrol {Next} or \uicontrol {Continue}. + \li Review the project settings, and select \uicontrol {Finish} (on + Windows and Linux) or \uicontrol Done (on \macos) to create the + project. + \endlist + + The wizard generates the following files: + + \list + \li \c {form.ui}, which is the UI file for the window UI. + \li \c {hello_world_ui.pyproject}, which lists the files in the Python + project. + \li \c {mainwindow.py}, which has some boilerplate code for a class. + \li \c {reguirements.txt}, which stores the PySide version of the + generated code. You can use this file to install the required PySide + version using pip. + \endlist + + \include creator-tutorial-python-application-qtquick.qdoc install-pyside6 + + \section1 Design a widgets-based UI + + \list 1 + \li In the \uicontrol {Edit} mode, double-click the \c {form.ui} file + in the \uicontrol{Projects} view to launch the integrated \QD. + \li Drag the following widgets from \uicontrol {Widget Box} to the form: + \list + \li \uicontrol {Text Edit} (QTextEdit) + \li \uicontrol {Check Box} (QCheckBox) + \li \uicontrol {Push Button} (QPushButton) + \endlist + \image qtcreator-new-project-python-window-ui-widgets.webp {Adding widgets to the UI} + \note To easily locate the widgets, use the search box at the top of the + \uicontrol {Widget Box}. For example, to find the \uicontrol {Text Edit} + widget, start typing the word \b text. + \li Double-click the \uicontrol {Text Edit} widget and enter the text + \b{Enter text here}. + \li Double-click the \uicontrol {Check Box} widget and enter the text + \b{Select me}. + \li Double-click the \uicontrol {Push Button} widget and enter the text + \b{Click me}. + \li Press \key {Ctrl+S} (or \key {Cmd+S}) to save your changes. + \endlist + + For more information about designing UIs with \QD, see \l{\QD Manual}. + + \section1 Run the application + + Select the \inlineimage icons/run_small.png + button to run the application. + + \sa {Tutorial: Qt Quick and Python}, {Tutorial: Qt Widgets and Python}, + {Develop Qt for Python Applications} +*/ diff --git a/doc/qtcreator/src/python/creator-tutorial-python-application-qt-widgets.qdoc b/doc/qtcreator/src/python/creator-tutorial-python-application-qt-widgets.qdoc index 58610d3f20d..b6eec3cb167 100644 --- a/doc/qtcreator/src/python/creator-tutorial-python-application-qt-widgets.qdoc +++ b/doc/qtcreator/src/python/creator-tutorial-python-application-qt-widgets.qdoc @@ -76,6 +76,8 @@ using pip. \endlist + \include creator-tutorial-python-application-qtquick.qdoc install-pyside6 + \section1 Add Qt Widgets imports The wizard adds the imports to the \c mywidget.py source file for access to @@ -171,6 +173,6 @@ Select the \inlineimage icons/run_small.png button to run the application. - \sa {Tutorial: Qt Quick and Python}, + \sa {Tutorial: Qt Quick and Python}, {Tutorial: Qt Widgets UI and Python}, {Develop Qt for Python Applications} */ diff --git a/doc/qtcreator/src/python/creator-tutorial-python-application-qtquick.qdoc b/doc/qtcreator/src/python/creator-tutorial-python-application-qtquick.qdoc index d270a7cba37..df3218197b3 100644 --- a/doc/qtcreator/src/python/creator-tutorial-python-application-qtquick.qdoc +++ b/doc/qtcreator/src/python/creator-tutorial-python-application-qtquick.qdoc @@ -66,6 +66,15 @@ using pip. \endlist + //! [install-pyside6] + \section1 Install PySide6 for the project + + In the \uicontrol {Edit} mode, select \uicontrol {Install} to set up PySide6 + for the project. + + \image qtcreator-python-install.webp {Prompt to install PySide6} + //! [install-pyside6] + \section1 Add Qt Quick imports The wizard adds the following imports to the \c {main.py} source file for @@ -187,6 +196,6 @@ Select \inlineimage icons/run_small.png to run the application. - \sa {Tutorial: Qt Widgets and Python}, + \sa {Tutorial: Qt Widgets and Python}, {Tutorial: Qt Widgets UI and Python}, {Develop Qt for Python Applications} */ From 01bfa99a92f83f5c9d2970177b0b1804caeabca7 Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Tue, 16 Jul 2024 21:00:16 +0200 Subject: [PATCH 36/77] Wizards: Fix plugin CMAKE_PREFIX_PATH on macOS Check explicitly for the presence of "lib/cmake/QtCreator" directory in order to validate a QtCreatorBuild path. Change-Id: Ifb3a09d459ceead8c9d49a5779127f95319bd053 Reviewed-by: Eike Ziller Reviewed-by: Marcus Tillmanns --- .../templates/wizards/qtcreatorplugin/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt b/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt index 283ebad166a..d933a878514 100644 --- a/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt +++ b/share/qtcreator/templates/wizards/qtcreatorplugin/CMakeLists.txt @@ -1,10 +1,10 @@ cmake_minimum_required(VERSION 3.16) # Remove when sharing with others. -@if %{JS: Util.isDirectory('%{QtCreatorBuild}/Qt Creator.app/Contents/Resources')} +@if %{JS: Util.isDirectory('%{QtCreatorBuild}/Qt Creator.app/Contents/Resources/lib/cmake/QtCreator')} list(APPEND CMAKE_PREFIX_PATH "%{QtCreatorBuild}/Qt Creator.app/Contents/Resources") @else - @if %{JS: Util.isDirectory('%{QtCreatorBuild}/Contents/Resources')} + @if %{JS: Util.isDirectory('%{QtCreatorBuild}/Contents/Resources/lib/cmake/QtCreator')} list(APPEND CMAKE_PREFIX_PATH "%{QtCreatorBuild}/Contents/Resources") @else list(APPEND CMAKE_PREFIX_PATH "%{QtCreatorBuild}") From 7d137e56b36247e5b30f22ac74f54d782d063bda Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Fri, 12 Jul 2024 14:06:32 +0200 Subject: [PATCH 37/77] Doc: Fix help topics for QDS MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Hide \sa {Read Documentation}{How To: Read Documentation} to fix QDoc warnings - List the other help topics in "Get help" (they were only accessible from All Topics) - Add an image that shows the QDS Code view instead of Qt Creator Edit mode Change-Id: I85b570b8db8953e5e676e1518fdb03f4e8bfded4 Reviewed-by: Teea Põldsam Reviewed-by: Tim Jenssen --- doc/qtcreator/src/howto/creator-help.qdoc | 30 ++++++++++++++++++ .../src/qtquick/qtquick-profiler.qdoc | 2 +- .../images/qds-help-in-code-view.webp | Bin 0 -> 22120 bytes 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 doc/qtdesignstudio/images/qds-help-in-code-view.webp diff --git a/doc/qtcreator/src/howto/creator-help.qdoc b/doc/qtcreator/src/howto/creator-help.qdoc index fa770177839..530937337cc 100644 --- a/doc/qtcreator/src/howto/creator-help.qdoc +++ b/doc/qtcreator/src/howto/creator-help.qdoc @@ -39,10 +39,16 @@ \uicontrol Help mode, go to \preferences > \uicontrol Help. \endlist + \if defined(qtdesignstudio) + The following image shows the context sensitive help in the \l Code view. + + \image qds-help-in-code-view.webp {Context-sensitive help in the Code view.} + \else The following image shows the context sensitive help in the \uicontrol Edit mode. \image qtcreator-context-sensitive-help.webp {Context-sensitive help in Edit mode} + \endif \section1 Change the font @@ -88,7 +94,13 @@ To use a keyboard shortcut for viewing help tooltips, select \uicontrol {Show help tooltips using keyboard shortcut (Alt)}. + \if defined(qtdesignstudio) + \section1 See Also + + \generatelist creator-how-to-get-help + \else \sa {Read Documentation}{How To: Read Documentation} + \endif */ /*! @@ -140,7 +152,9 @@ \endlist + \if defined(qtcreator) \sa {Read Documentation}{How To: Read Documentation} + \endif */ /*! @@ -180,7 +194,9 @@ \uicontrol General and select \uicontrol {Import Bookmarks} or \uicontrol {Export Bookmarks}. + \if defined(qtcreator) \sa {Read Documentation}{How To: Read Documentation} + \endif */ /*! @@ -236,7 +252,9 @@ punctuation, such as domain names, use the asterisk as a wild card. For example, to find \c {Pastebin.Com}, enter the search term \c {Pastebin*}. + \if defined(qtcreator) \sa {Read Documentation}{How To: Read Documentation} + \endif */ /*! @@ -268,7 +286,9 @@ \endlist + \if defined(qtcreator) \sa {Read Documentation}{How To: Read Documentation} + \endif */ /*! @@ -287,7 +307,11 @@ code editor when you press \key F1. If there is not enough vertical space, the help opens in the full-screen help mode. + \if defined(qtdesignstudio) + \image qds-help-in-code-view.webp {Context-sensitive help in the Code view.} + \else \image qtcreator-context-sensitive-help.webp {Context-sensitive help in Edit mode} + \endif To specify that the help always opens in full-screen mode or in an external window, go to \preferences > \uicontrol Help > \uicontrol General. @@ -300,7 +324,9 @@ To change this setting in a help view, select \inlineimage icons/linkicon.png. + \if defined(qtcreator) \sa {Read Documentation}{How To: Read Documentation} + \endif */ /*! @@ -335,7 +361,9 @@ home page. \endlist + \if defined(qtcreator) \sa {Read Documentation}{How To: Read Documentation} + \endif */ /*! @@ -401,5 +429,7 @@ To remove the selected filter, select \inlineimage icons/minus.png. + \if defined(qtcreator) \sa {Read Documentation}{How To: Read Documentation} + \endif */ diff --git a/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc b/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc index eb74c5b547d..4449f9e1bab 100644 --- a/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc +++ b/doc/qtcreator/src/qtquick/qtquick-profiler.qdoc @@ -160,7 +160,7 @@ \if defined(qtdesignstudio) \note In this section, you are using advanced menu items. These are not visible by default. To toggle the visibility of advanced menu items, see - \l{Customizing the Menu}. + \l{Customizing the Menu Bar}. \endif With QML Profiler, you can find causes for typical performance problems diff --git a/doc/qtdesignstudio/images/qds-help-in-code-view.webp b/doc/qtdesignstudio/images/qds-help-in-code-view.webp new file mode 100644 index 0000000000000000000000000000000000000000..b30181d795b2e1f3c108efde7aaee8575b01ad2c GIT binary patch literal 22120 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

    <6ApR(Dyscut% z_)>9~T+)U5KWW+U&DhGyh-BzhU*G@am`P*Ix{-YWLfGRxLkjsmgZUv9F@lyep8) zBh_6}_6Ohaoz8ADBVfUjsM*is&UmZ$Zx@20n&`qPVeS*g%rK7(`XeAz- ztQIt>3fK@?G?1L-#2XXIvKLZdtx}=PJPiXHK+&cAURktga_r z=+b#`#iCDc>IY9~AFwIf@=8U#ZFL-ISbE3no}Bn3gXVxomCaSgUKe|wY+7pks<7o& z&k==~ucwr^+dhxjvOZkyepUY?XtabIXN&^ zNY#evdv~mU{Bxeu{q$SMCcQoxcT|bzS`YK-c}_d_uvg#g={))IUtn^r{Pwx3mnZKv zdEc<(@kP6;q}Ot9Sl>>%vG~IG%-fNZ=Dk@8>i2uqetE*l_SWKLOYyN^Ti)t;`hP2u zHhK2<+(XkNPV=|TReg6dj>Yzllm@f-ZP_2Xm&>N@P_Gt@*~D|%`dLVSuo&~x#FbkP zG#_M{b*+ix;l%KHXMeruTxomrbgMT*7;Cv0*Seg9=!J&o1gwg$FqP{t&M=vK*dk?e z>5IOdd#7z%qh2-_(+BgEkBy8|ywe(Js3$~3>|v5`;Y%ExA$ z23Ed#jx4fgE6&f>Ze1t7D$v$X`r$EEhT@=^9T%dNSPVaX;8MzTX31=6y|}VaDKCy` z!;-JDZf74oefVtE3~5)%l_f%KW|k>Jn{VBB)PHbGl_7Yg2g}UIF>dn~IQE7|7)AYl z+9RTT%3G@`-rT5lCc6 Date: Wed, 17 Jul 2024 08:49:26 +0200 Subject: [PATCH 38/77] ProjectExplorer: Fix after async path verification in JSON wizards After 83111bb3, the path validity result was coming in later and was not considered for the page completeness check any more. Fix that by running the check again when the path result is ready. Change-Id: I2aab6b2130896d63f7e0359ced39e758393a2644 Reviewed-by: Marcus Tillmanns --- src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp b/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp index 9c55d5345c4..ca4220ebef4 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp @@ -837,6 +837,7 @@ void PathChooserField::setup(JsonFieldPage *page, const QString &name) QTC_ASSERT(w, return); page->registerFieldWithName(name, w, "path", SIGNAL(textChanged(QString))); QObject::connect(w, &PathChooser::textChanged, page, &WizardPage::completeChanged); + QObject::connect(w, &PathChooser::validChanged, page, &WizardPage::completeChanged); } bool PathChooserField::validate(MacroExpander *expander, QString *message) From 0fba429032504cbaa6f9e3879fa9ba399a67767a Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Wed, 10 Jul 2024 23:15:56 +0200 Subject: [PATCH 39/77] Core: Use better suited file dialog when saving OutputWindow content QFileDialog::saveFileContent opens a non-modal file dialog which can disappear in the backgtound. Also, on Windows, the dialog is non-native. Use FileUtils::getSaveFilePath and FileSaver, instead. Task-number: QTCREATORBUG-31099 Change-Id: I0c84e149183f632e325b2e62ee9b1c7d7726f207 Reviewed-by: Eike Ziller --- src/plugins/coreplugin/outputwindow.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/plugins/coreplugin/outputwindow.cpp b/src/plugins/coreplugin/outputwindow.cpp index 4183a8457ca..d4d2a898895 100644 --- a/src/plugins/coreplugin/outputwindow.cpp +++ b/src/plugins/coreplugin/outputwindow.cpp @@ -13,9 +13,12 @@ #include +#include #include #include +#include + #include #include #include @@ -294,7 +297,16 @@ void OutputWindow::contextMenuEvent(QContextMenuEvent *event) menu->addSeparator(); QAction *saveAction = menu->addAction(Tr::tr("Save Contents...")); connect(saveAction, &QAction::triggered, this, [this] { - QFileDialog::saveFileContent(toPlainText().toUtf8(), d->outputFileNameHint); + const FilePath file = FileUtils::getSaveFilePath( + ICore::dialogParent(), {}, FileUtils::homePath() / d->outputFileNameHint); + if (!file.isEmpty()) { + QString error; + Utils::TextFileFormat format; + format.codec = EditorManager::defaultTextCodec(); + format.lineTerminationMode = EditorManager::defaultLineEnding(); + if (!format.writeFile(file, toPlainText(), &error)) + MessageManager::writeDisrupting(error); + } }); saveAction->setEnabled(!document()->isEmpty()); From 350ede8d5bbb9663bcc7a0674a334f746f110709 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Wed, 17 Jul 2024 13:23:47 +0200 Subject: [PATCH 40/77] German translation: Improve compilers' default names %5 is the executable's path so translating "at" to "an" does not fit. Change-Id: I3135164ba2b7d12d9cf685efcde5b695dfb5021f Reviewed-by: Eike Ziller --- share/qtcreator/translations/qtcreator_de.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 90436e62b88..65c29af732a 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -41022,7 +41022,7 @@ Aktivieren Sie dies, wenn Sie 32bit-x86-Binärdateien erstellen wollen, ohne ein %1 (%2, %3 %4 at %5) - %1 (%2, %3 %4 an %5) + %1 (%2, %3 %4: %5) Remove From fddf5693abf9d8f942e71f0be315c1284e590118 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 17 Jul 2024 08:50:29 +0200 Subject: [PATCH 41/77] Editors: Fix that releasing Ctrl sometimes does not close the chooser On some platforms, after pressing Ctrl+Tab to switch files and then releasing Ctrl, the chooser didn't close because the key event claimed both that Ctrl was the released key but Ctrl was still pressed. Add a workaround. Fixes: QTCREATORBUG-31228 Task-number: QTCREATORBUG-27378 Change-Id: Ifd83e655f0d3dca7e15dfbd822ec1893045b304c Reviewed-by: Christian Stenger --- src/plugins/coreplugin/editormanager/openeditorswindow.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/plugins/coreplugin/editormanager/openeditorswindow.cpp b/src/plugins/coreplugin/editormanager/openeditorswindow.cpp index cf98617261d..519d0ff954c 100644 --- a/src/plugins/coreplugin/editormanager/openeditorswindow.cpp +++ b/src/plugins/coreplugin/editormanager/openeditorswindow.cpp @@ -201,6 +201,9 @@ bool OpenEditorsWindow::eventFilter(QObject *obj, QEvent *e) auto ke = static_cast(e); qCDebug(openEditorsLog()) << ke; if (ke->modifiers() == 0 + /* On some platforms, the key event can claim both that Ctrl is released and that + Ctrl is still pressed, see QTCREATORBUG-31228 */ + || (ke->modifiers() == Qt::ControlModifier && ke->key() == Qt::Key_Control) /*HACK this is to overcome some event inconsistencies between platforms*/ || (ke->modifiers() == Qt::AltModifier && (ke->key() == Qt::Key_Alt || ke->key() == -1))) { From 49bb87287c03de9f62a2e12bb2e5327c80fba1d6 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Wed, 17 Jul 2024 15:19:01 +0200 Subject: [PATCH 42/77] Core: Fix include Amends 0fba429032504cbaa6f9e3879fa9ba399a67767a. Change-Id: I47063d820ca65a852bc4ef9b5c96f380421e3c41 Reviewed-by: Eike Ziller --- src/plugins/coreplugin/outputwindow.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/plugins/coreplugin/outputwindow.cpp b/src/plugins/coreplugin/outputwindow.cpp index d4d2a898895..66fbbf6d076 100644 --- a/src/plugins/coreplugin/outputwindow.cpp +++ b/src/plugins/coreplugin/outputwindow.cpp @@ -10,6 +10,7 @@ #include "editormanager/editormanager.h" #include "find/basetextfind.h" #include "icore.h" +#include "messagemanager.h" #include @@ -17,8 +18,6 @@ #include #include -#include - #include #include #include From 19f5099c93ad34dad6357241b916e0865f77b2d0 Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Thu, 11 Jul 2024 13:22:36 +0200 Subject: [PATCH 43/77] StudioWelcome: fix crashes when setupWizard fails Task-number: QDS-13209 Change-Id: I5751de9d5a5c8065a7cbad91c048d7d4d60de238 Reviewed-by: Tim Jenssen --- src/plugins/studiowelcome/qdsnewdialog.cpp | 22 ++++++++++----------- src/plugins/studiowelcome/qdsnewdialog.h | 5 +++-- src/plugins/studiowelcome/wizardhandler.cpp | 5 ++++- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/src/plugins/studiowelcome/qdsnewdialog.cpp b/src/plugins/studiowelcome/qdsnewdialog.cpp index 671670f609f..54dec46f74f 100644 --- a/src/plugins/studiowelcome/qdsnewdialog.cpp +++ b/src/plugins/studiowelcome/qdsnewdialog.cpp @@ -49,7 +49,7 @@ QString uniqueProjectName(const QString &path) /***********************/ QdsNewDialog::QdsNewDialog(QWidget *parent) - : m_dialog{new QQuickWidget(parent)} + : m_dialog{Utils::makeUniqueObjectPtr(parent)} , m_categoryModel{new PresetCategoryModel(&m_presetData, this)} , m_presetModel{new PresetModel(&m_presetData, this)} , m_screenSizeModel{new ScreenSizeModel(this)} @@ -57,7 +57,7 @@ QdsNewDialog::QdsNewDialog(QWidget *parent) , m_recentsStore{"RecentPresets.json", StorePolicy::UniqueValues} , m_userPresetsStore{"UserPresets.json", StorePolicy::UniqueNames} { - setParent(m_dialog); + connect(m_dialog.get(), &QObject::destroyed, this, &QObject::deleteLater); m_recentsStore.setReverseOrder(); m_recentsStore.setMaximum(10); @@ -89,9 +89,10 @@ QdsNewDialog::QdsNewDialog(QWidget *parent) m_dialog->installEventFilter(this); QObject::connect(&m_wizard, &WizardHandler::wizardCreationFailed, this, [this] { - QMessageBox::critical(m_dialog, tr("New Project"), tr("Failed to initialize data.")); + // TODO: if the dialog itself could react on the error + // the would not be necessary + QMessageBox::critical(m_dialog.get(), tr("New Project"), tr("Failed to initialize data.")); reject(); - deleteLater(); }); QObject::connect(m_styleModel.data(), &StyleModel::modelAboutToBeReset, this, [this] { @@ -101,7 +102,7 @@ QdsNewDialog::QdsNewDialog(QWidget *parent) bool QdsNewDialog::eventFilter(QObject *obj, QEvent *event) { - if (obj == m_dialog && event->type() == QEvent::KeyPress + if (obj == m_dialog.get() && event->type() == QEvent::KeyPress && static_cast(event)->key() == Qt::Key_Escape) { reject(); return true; @@ -314,7 +315,7 @@ void QdsNewDialog::setWizardFactories(QList factories_, { Utils::Id platform = Utils::Id::fromSetting("Desktop"); - WizardFactories factories{factories_, m_dialog, platform}; + WizardFactories factories{factories_, m_dialog.get(), platform}; std::vector recents = m_recentsStore.fetchAll(); std::vector userPresets = m_userPresetsStore.fetchAll(); @@ -404,8 +405,6 @@ void QdsNewDialog::accept() m_recentsStore.save(preset); m_dialog->close(); - m_dialog->deleteLater(); - m_dialog = nullptr; } void QdsNewDialog::reject() @@ -415,12 +414,13 @@ void QdsNewDialog::reject() m_wizard.destroyWizard(); m_dialog->close(); - m_dialog = nullptr; + m_dialog.reset(); } QString QdsNewDialog::chooseProjectLocation() { - Utils::FilePath newPath = Utils::FileUtils::getExistingDirectory(m_dialog, tr("Choose Directory"), + Utils::FilePath newPath = Utils::FileUtils::getExistingDirectory(m_dialog.get(), + tr("Choose Directory"), m_qmlProjectLocation); return QDir::toNativeSeparators(newPath.toString()); @@ -473,7 +473,7 @@ void QdsNewDialog::savePresetDialogAccept() UserPresetData preset = currentUserPresetData(m_qmlPresetName); if (!m_userPresetsStore.save(preset)) { - QMessageBox::warning(m_dialog, + QMessageBox::warning(m_dialog.get(), tr("Save Preset"), tr("A preset with this name already exists.")); return; diff --git a/src/plugins/studiowelcome/qdsnewdialog.h b/src/plugins/studiowelcome/qdsnewdialog.h index f4f24d1810a..95bfa52fe9b 100644 --- a/src/plugins/studiowelcome/qdsnewdialog.h +++ b/src/plugins/studiowelcome/qdsnewdialog.h @@ -7,6 +7,7 @@ #include #include +#include #include "wizardhandler.h" #include "presetmodel.h" @@ -64,7 +65,7 @@ public: explicit QdsNewDialog(QWidget *parent); - QWidget *widget() override { return m_dialog; } + QWidget *widget() override { return m_dialog.get(); } void setWizardFactories(QList factories, const Utils::FilePath &defaultLocation, const QVariantMap &extraVariables) override; @@ -139,7 +140,7 @@ private slots: void onWizardCreated(QStandardItemModel *screenSizeModel, QStandardItemModel *styleModel); private: - QQuickWidget *m_dialog = nullptr; + Utils::UniqueObjectPtr m_dialog; PresetData m_presetData; QPointer m_categoryModel; diff --git a/src/plugins/studiowelcome/wizardhandler.cpp b/src/plugins/studiowelcome/wizardhandler.cpp index 961fb701eeb..b86d33a1dfb 100644 --- a/src/plugins/studiowelcome/wizardhandler.cpp +++ b/src/plugins/studiowelcome/wizardhandler.cpp @@ -53,7 +53,10 @@ void WizardHandler::setupWizard() initializeProjectPage(m_wizard->page(0)); initializeFieldsPage(m_wizard->page(1)); - + if (!m_detailsPage) { + emit wizardCreationFailed(); + return; + } auto *screenFactorModel = getScreenFactorModel(m_detailsPage); auto *styleModel = getStyleModel(m_detailsPage); From 2d3c9b3ffd02ef95f9cc039b1cf2e9c203e7040c Mon Sep 17 00:00:00 2001 From: Alexandre Laurent Date: Thu, 11 Jul 2024 21:17:23 +0200 Subject: [PATCH 44/77] French translations for 14.0 Change-Id: I17c9adfbe88bfac05208a84b9219de18301e7984 Reviewed-by: Johnny Jazeix Reviewed-by: Oswald Buddenhagen Reviewed-by: Olivier Delaune Reviewed-by: Eike Ziller --- share/qtcreator/translations/qtcreator_fr.ts | 3329 +++++++++++------- 1 file changed, 2119 insertions(+), 1210 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_fr.ts b/share/qtcreator/translations/qtcreator_fr.ts index ff5318759a9..5f03828b04d 100644 --- a/share/qtcreator/translations/qtcreator_fr.ts +++ b/share/qtcreator/translations/qtcreator_fr.ts @@ -798,6 +798,10 @@ Utilisez AmbientSound.Infinite pour boucler indéfiniment. New Effect Nouvel effet + + Add to Content Library + Ajouter à la bibliothèque de contenus + AudioEngineSection @@ -1388,6 +1392,37 @@ Le chemin doit être relatif. L’URL de la ressource pour l’icône. + + CameraSpeedConfigAction + + Open camera speed configuration dialog + Ouvrir la fenêtre de configuration de la vitesse de la caméra + + + + CameraSpeedConfigurationDialog + + Camera Speed Configuration + Configuration de la vitesse de la caméra + + + The speed camera moves when controlled by keyboard. + La vitesse de déplacement de la caméra lorsque contrôlée par le clavier. + + + Multiplier + Multiplicateur + + + The value multiplier for the speed slider. + ou facteur ? + Le multiplicateur de valeur pour le slider de vitesse. + + + Reset + Réinitialiser + + CameraToggleAction @@ -1582,170 +1617,6 @@ Le chemin doit être relatif. Appliquer - - CollectionDetailsToolbar - - Add property left - Ajouter une propriété à gauche - - - Add property right - Ajouter une propriété à droite - - - Delete selected property - Supprimer la propriété sélectionnée - - - Insert row below - Insérer une ligne en dessous - - - Insert row above - Insérer une ligne au-dessus - - - Delete selected row - Supprimer la ligne sélectionnée - - - Save changes - Enregistrer les changements - - - Export model - Exporter le modèle - - - Add Column - Ajouter une colonne - - - Column name: - Nom de la colonne : - - - The model already contains "%1"! - « %1 » est déjà contenu dans le modèle ! - - - Type: - Type : - - - Add - Ajouter - - - Cancel - Annuler - - - - CollectionDetailsView - - Edit - Modifier - - - Delete - Supprimer - - - Sort Ascending - Tri croissant - - - Sort Descending - Tri décroissant - - - Add row above - Ajouter une ligne au-dessus - - - Add row below - Ajouter une ligne en dessous - - - Delete this row - Supprimer cette ligne - - - Select a model to continue - Sélectionner un modèle pour continuer - - - Delete Column - Supprimer la colonne - - - Are you sure that you want to delete column "%1"? - Voulez-vous vraiment supprimer la colonne « %1 » ? - - - Cancel - Annuler - - - - CollectionItem - - Delete - Supprimer - - - Rename - Renommer - - - Assign to the selected node - Assigner au nœud sélectionné - - - Deleting the model - Suppression du modèle - - - Are you sure that you want to delete model "%1"? -The model will be deleted permanently. - Êtes-vous sûr de vouloir supprimer le modèle « %1 » ? -Le modèle sera définitivement supprimé. - - - Are you sure that you want to delete model "%1"? -The model will be removed from the project but the file will not be deleted. - Voulez-vous vraiment supprimer le modèle « %1 » ? -Le modèle sera retiré du projet mais le fichier ne sera pas supprimé. - - - Rename model - Renommer le modèle - - - Cancel - Annuler - - - New name: - Nouveau nom : - - - - CollectionView - - Data Models - Modèles de données - - - Import a model - Importer un modèle - - - Add a new model - Ajouter un nouveau modèle - - ColorAnimationSpecifics @@ -1885,10 +1756,26 @@ Le modèle sera retiré du projet mais le fichier ne sera pas supprimé.Column spacing Espacement des colonnes + + Sets the space between the items in pixels in the <b>Column Layout</b>. + Définit l'espacement en pixels entre les éléments de l'<b>agencement en colonne</b>. + Layout direction Direction du layout + + Sets the direction of the item flow in the <b>Column Layout</b>. + Définit la direction du flux des éléments de l'<b>agencement en colonne</b>. + + + Uniform cell size + Taille de cellules uniforme + + + Toggles all cells to have a uniform size. + Active/désactive une taille commune pour toutes les cellules. + ColumnSpecifics @@ -2041,6 +1928,29 @@ Le modèle sera retiré du projet mais le fichier ne sera pas supprimé.Définit l'état du composant. + + ConfirmClearAllDialog + + Confirm clear list + Confirmation du nettoyage de la liste + + + You are about to clear the list of effect nodes. + +This can not be undone. + Vous allez nettoyer la liste de nœuds d'effet. + +Cela ne peut être annulé. + + + Clear + Nettoyer + + + Cancel + Annuler + + ConfirmDeleteFilesDialog @@ -2253,12 +2163,9 @@ Le modèle sera retiré du projet mais le fichier ne sera pas supprimé.Effects Effets - - - ContentLibraryEffect - Effect is imported to project - L'effet est importé dans le projet + User Assets + Ressources de l'utilisateur @@ -2300,22 +2207,14 @@ Le modèle sera retiré du projet mais le fichier ne sera pas supprimé. - ContentLibraryMaterial + ContentLibraryItem - Material is imported to project - Le matériau est importé dans le projet - - - Add an instance to project - Ajouter une instance au projet - - - Click to download material - Cliquer pour télécharger un matériau + Item is imported to the project + L'élément est importé dans le projet - ContentLibraryMaterialContextMenu + ContentLibraryItemContextMenu Apply to selected (replace) Appliquer à la sélection (remplacer) @@ -2332,6 +2231,25 @@ Le modèle sera retiré du projet mais le fichier ne sera pas supprimé.Remove from project Supprimer du projet + + Remove from Content Library + Supprimer de la bibliothèque de contenus + + + + ContentLibraryMaterial + + Material is imported to project + Le matériau est importé dans le projet + + + Add an instance to project + Ajouter une instance au projet + + + Click to download material + Cliquer pour télécharger un matériau + ContentLibraryMaterialsView @@ -2424,6 +2342,10 @@ Le modèle sera retiré du projet mais le fichier ne sera pas supprimé.Add light probe Ajouter une sonde de lumière + + Remove from Content Library + Supprimer de la bibliothèque de contenus + ContentLibraryTexturesView @@ -2436,6 +2358,25 @@ Le modèle sera retiré du projet mais le fichier ne sera pas supprimé.Aucun résultat. + + ContentLibraryUserView + + No match found. + Aucun résultat. + + + <b>Content Library</b> is not supported in Qt5 projects. + La <b>bibliothèque de contenus</b> n'est pas prise en charge dans les projets Qt5. + + + To use <b>Content Library</b>, first add the QtQuick3D module in the <b>Components</b> view. + Pour utiliser la <b>bibliothèque de contenus</b>, ajoutez d'abord le module QtQuick3D dans la vue <b>Composants</b>. + + + <b>Content Library</b> is disabled inside a non-visual component. + La <b>bibliothèque de contenus</b> est désactivée pour un composant non visible. + + ContextMenu @@ -2533,6 +2474,25 @@ Le modèle sera retiré du projet mais le fichier ne sera pas supprimé.millisecondes. + + DeleteBundleItemDialog + + Remove bundle %1 + Supprimer le bundle %1 + + + Are you sure you? The action cannot be undone + Voulez-vous vraiment supprimer le bundle ? Cette action ne peut être annulée + + + Remove + Supprimer + + + Cancel + Annuler + + DesignerActionManager @@ -2625,6 +2585,22 @@ Le modèle sera retiré du projet mais le fichier ne sera pas supprimé.Sets the number by which the dial value changes. Définit l'écart entre deux valeurs du cadran. + + Start angle + Angle de début + + + Sets the starting angle of the dial in degrees. + Définit l'angle, en degrés, à partir duquel démarre le cadran. + + + End angle + Angle de fin + + + Sets the ending angle of the dial in degrees. + Définit l'angle, en degrés, où le cadran prend fin. + Sets how the dial's handle snaps to the steps defined in <b>Step size</b>. @@ -2785,38 +2761,11 @@ définit par la<b>taille du pas</b>. Activer/désactiver l'édition de la lumière - - EditPropertyDialog - - Edit Column - Modifier la colonne - - - Name - Nom - - - Type - Type - - - Conversion from %1 to %2 may lead to data loss - La conversion de %1 vers %2 peut entraîner une perte de données - - - Apply - Appliquer - - - Cancel - Annuler - - EffectComposer Remove all effect nodes. - Supprimer tous les nœuds d'effets. + Supprimer tous les nœuds d'effet. Open Shader in Code Editor. @@ -2832,6 +2781,51 @@ définit par la<b>taille du pas</b>. Le compositeur d'effet est désactivé dans les projets MCU + + EffectComposer::EffectComposerModel + + Animation + Animation + + + Running + En cours d'exécution + + + Set this property to animate the effect. + Définir cette propriété permet d'animer l'effet. + + + Time + Temps + + + This property allows explicit control of current animation time. + À relire + Cette propriété permet le contrôle explicite du temps de l'animation. + + + Frame + Trame + + + This property allows explicit control of current animation frame. + À relire + Cette propriété permet le contrôle explicite de la trame de l'animation. + + + General + Général + + + Extra Margin + Marge supplémentaire + + + This property specifies how much of extra space is reserved for the effect outside the parent geometry. + Cette propriété détermine l'espace supplémentaire réservé hors de la géométrie du parent à l'effet. + + EffectComposer::EffectComposerView @@ -2847,6 +2841,25 @@ définit par la<b>taille du pas</b>. Compositeur d'effet + + EffectComposer::Uniform + + X + X + + + Y + Y + + + Z + Z + + + W + W + + EffectComposerPreview @@ -2858,8 +2871,8 @@ définit par la<b>taille du pas</b>. Zoom arrière - Zoom Fit - Ajuster + Reset View + Réinitialiser la vue Restart Animation @@ -2898,14 +2911,13 @@ définit par la<b>taille du pas</b>. 2. Adjust the effect nodes properties 3. Change the order of the effects, if you like 4. See the preview -5. Save in the library, if you wish to reuse the effect later - Pour utiliser le ... ? +5. Save in the assets library, if you wish to reuse the effect later Comment utiliser le compositeur d'effet : 1. Cliquer sur « + Ajouter un effet » pour ajouter un nœud d'effet 2. Ajuster les propriétés des nœuds d'effet 3. Changer l'ordre des effets, si vous le souhaitez 4. Voir la prévisualisation -5. Enregistrer l'effet dans la bibliothèque, si vous souhaitez le réutiliser plus tard +5. Enregistrer l'effet dans la bibliothèque de ressources, si vous souhaitez le réutiliser plus tard @@ -2919,6 +2931,13 @@ définit par la<b>taille du pas</b>. Activer/désactiver le nœud + + EffectCompositionNodeUniform + + Reset value + Réinitialiser la valeur + + EffectNode @@ -2933,6 +2952,143 @@ définit par la<b>taille du pas</b>. + Ajouter un effet + + EffectsSection + + Effects <a style="color:%1;">[beta]</a> + Effets <a style="color:%1;">[bêta]</a> + + + Remove Effects + Supprimer les effets + + + Add Effects + Ajouter des effets + + + Adds visual effects on the component. + Ajoute des effets visuels au composant. + + + Visible + Visible + + + Toggles the visibility of visual effects on the component. + Active/désactive la visibilité des effets visuels du composant. + + + Layer Blur + Inspiration: https://docs.krita.org/fr/reference_manual/filters/blur.html + Filtre de floutage + + + Toggles the visibility of the <b>Layer Blur</b> on the component. + Active/désactive la visibilité du <b>filtre de floutage</b> du composant. + + + Blur + Flou + + + Sets the intensity of the <b>Layer Blur</b> on the component. + Définit l'intensité du <b>filtre de floutage</b> du composant. + + + Background Blur + Floutage du fond + + + Toggles the visibility of blur on the selected background component. + Active/désactive le floutage pour le composant en arrière-plan sélectionné. + + + Sets the intensity of blur on the selected background component. +The foreground component should be transparent, and the background component should be opaque. + Définit l'intensité du flou pour le composant en arrière-plan sélectionné. +Les composants au premier plan doivent être transparents et le composant en arrière-plan doit être opaque. + + + Background + Arrière plan + + + Sets a component as the background of a transparent component.The <b>Background Blur</b> works only on this component. The component should be solid. + Définit le composant comme arrière-plan d'un composant transparent. Le <b>floutage du fond</b> s'appliquera seulement sur ce composant. Le composant doit être opaque. + + + Drop Shadow + Ombre portée ? + Ombrage extérieur + + + Inner Shadow + Ombrage intérieur + + + Toggles the visibility of the component shadow. + Active/désactive l'ombrage du composant. + + + Sets the softness of the component shadow. A larger value causes the edges of the shadow to appear more blurry. + Définit la douceur de l'ombrage du composant. Une plus grande valeur rend les bordures de l'ombre plus floues. + + + Spread + Étendue + + + Resizes the base shadow of the component by pixels. + A revoir + Redimensionne la base de l'ombrage du composant en pixels. + + + Only supported for Rectangles. + Uniquement disponible avec les rectangles. + + + Color + Couleur + + + Sets the color of the shadow. + Définit la couleur de l'ombrage. + + + Offset + Décalage + + + Moves the shadow with respect to the component in X and Y coordinates by pixels. + Déplace ? + Décale l'ombrage par rapport au composant en X et Y, en pixels. + + + X-coordinate + Coordonnée X + + + Y-coordinate + Coordonnée Y + + + Show behind + Afficher derrière + + + Toggles the visibility of the shadow behind a transparent component. + Active/désactive l'ombrage derrière un composant transparent. + + + Add Shadow Effect + Ajouter un effet d'ombrage + + + Adds <b>Drop Shadow</b> or <b>Inner Shadow</b> effects to a component. + Ajoute un effet d'<b>ombrage extérieur</b> ou d'<b>ombrage intérieur</b> au composant. + + EmptyMaterialEditorPane @@ -3050,6 +3206,25 @@ définit par la<b>taille du pas</b>. Ajuster l’objet sélectionné à la vue + + FlagsComboBox + + empty + vide + + + %1 items selected + %1 éléments sélectionnés + + + Select All + Tout sélectionner + + + Select None + Tout désélectionner + + FlickableGeometrySection @@ -3569,18 +3744,50 @@ définit par la<b>taille du pas</b>. Columns & Rows Colonnes & lignes + + Sets the number of columns and rows in the <b>Grid Layout</b>. + Définit le nombre de colonnes et de lignes de l'<b>agencement en grille</b>. + Spacing Espacement + + Sets the space between the items in pixels in the rows and columns in the <b>Grid Layout</b>. + Définit l'espacement en pixels entre les éléments des lignes et colonnes dans l'<b>agencement en grille</b>. + Flow Flux + + Set the direction of dynamic items to flow in rows or columns in the <b>Grid Layout</b>. + Définit la direction du flux des éléments dynamiques dans les lignes et colonnes de l'<b>agencement en grille</b>. + Layout direction Direction du layout + + Sets the direction of the dynamic items left to right or right to left in the <b>Grid Layout</b>. + Définit la direction du flux des éléments dynamiques de gauche à droite ou de droite à gauche de l'<b>agencement en grille</b>. + + + Uniform cell sizes + Taille de cellules uniforme + + + Toggles all cells to have a uniform height or width. + Active/désactive une hauteur et largeur commune pour toutes les cellules. + + + Heights + Hauteurs + + + Widths + Largeurs + GridSpecifics @@ -3951,57 +4158,6 @@ ajouter un composant en surbrillance. Inverse l'image horizontalement. - - ImportDialog - - Import a model - Importer un modèle - - - Model path - Chemin du modèle - - - Select a model file - Sélectionner un fichier de modèle - - - Open - Ouvrir - - - Could not load the file - Impossible de charger le fichier - - - An error occurred while trying to load the file. - Une erreur s'est produite lors de la lecture du fichier. - - - File name - Nom du fichier - - - The model name - Le nom du modèle - - - File name can not be empty - Le nom du fichier ne peut pas être vide - - - The model name can not be empty - Le nom du modèle ne peut pas être vide - - - Import - Importer - - - Cancel - Annuler - - InsetSection @@ -4061,6 +4217,25 @@ ajouter un composant en surbrillance. Définit le nom de l'objet du composant. + + InvalidIdException + + Only alphanumeric characters and underscore allowed. +Ids must begin with a lowercase letter. + Seuls les caractères alphanumériques et les tirets du bas sont acceptés. +Les identifiants doivent commencer avec une lettre minuscule. + + + Ids have to be unique. + Les identifiants doivent être uniques. + + + Invalid Id: %1 +%2 + Identifiant invalide : %1 +%2 + + ItemDelegateSection @@ -4695,6 +4870,14 @@ ajouter un composant en surbrillance. Share Partager + + Share your project online. + Partager votre projet en ligne. + + + Sharing your project online is disabled in the Community Version. + Le partage du projet en ligne est désactivé dans la version communautaire. + More Items Plus d'éléments @@ -4915,6 +5098,10 @@ ajouter un composant en surbrillance. Create New Material Créer un nouveau matériau + + Add to Content Library + Ajouter à la bibliothèque de contenus + MaterialEditorToolBar @@ -5025,13 +5212,6 @@ ajouter un composant en surbrillance. Sortie vidéo cible. - - Message - - Close - Fermer - - ModelNodeOperations @@ -5227,38 +5407,7 @@ Erreur : Reparenting the component %1 here will cause the component %2 to be deleted. Do you want to proceed? - Redéfinir ici le parent du composant %1 entrainera la suppression du composant %2. Voulez-vous continuer ? - - - - NewCollectionDialog - - Add a new Model - Ajouter un nouveau modèle - - - Model - Modèle - - - The model name - Le nom du modèle - - - The model name can not be empty - Le nom du modèle ne peut pas être vide - - - The model name already exists %1 - Le nom de modèle « %1 » existe déjà - - - Create - Créer - - - Cancel - Annuler + Redéfinir ici le parent du composant %1 entraînera la suppression du composant %2. Voulez-vous continuer ? @@ -5776,6 +5925,13 @@ ajouter un composant en surbrillance. Violation d'ordre des événements MMAP entre les vidages de tampons détectée. Le moment de l'événement est: %1, temps maximum depuis le dernier vidage: %2. Cela peut interrompre l'analyse des données. + + PluginManager + + Failed Plugins + Greffons en échec + + PopupLabel @@ -5972,6 +6128,17 @@ est en cours. Cette propriété n’est pas disponible dans cette configuration. + + PuppetStarter + + Puppet is starting... + Démarrage de Puppet… + + + You can now attach your debugger to the %1 puppet with process id: %2. + Vous pouvez maintenant attacher votre débogueur au mode puppet %1 avec l'identifiant de processus : %2. + + QAbstractFileIconProvider @@ -6226,6 +6393,34 @@ Souhaitez-vous éditer cet effet ? Minimize Minimiser + + ID cannot start with an uppercase character (%1). + L'identifiant ne peut pas commencer avec un caractère majuscule (%1). + + + ID cannot start with a number (%1). + L'identifiant ne peut pas commencer avec un chiffre (%1). + + + ID cannot include whitespace (%1). + L'identifiant ne peut pas contenir d'espace (%1). + + + %1 is a reserved QML keyword. + %1 est un mot clé QML réservé. + + + %1 is a reserved property keyword. + %1 est un mot clé de propriété réservé. + + + ID includes invalid characters (%1). + L'identifiant contient des caractères invalides (%1). + + + Empty document + Document vide + QmlDesigner::AbstractEditorDialog @@ -6721,150 +6916,6 @@ Export des ressources : %2 Lie ce composant à la propriété du parent sélectionnée. - - QmlDesigner::CollectionSourceModel - - Node is not indexed in the models. - Le nœud n'est pas indexé dans les modèles. - - - Node should be a JSON model. - Le nœud doit être un modèle JSON. - - - A model with the identical name already exists. - Un modèle portant ce nom existe déjà. - - - Selected node must have a valid source file address - Le nœud sélectionné contient une adresse de fichier source valide - - - Can't read or write "%1". -%2 - Impossible de lire ou d'écrire « %1 ». -%2 - - - "%1" is corrupted. -%2 - « %1 » est corrompu. -%2 - - - Can't clean "%1". - Impossible de nettoyer « %1 ». - - - Can't write to "%1". - Impossible d'écrire dans « %1 ». - - - No model is available for the JSON model group. - Aucun modèle n'est disponible pour le groupe de modèles JSON. - - - JSON document type should be an object containing models. - Le type de document JSON doit être un objet contenant des modèles. - - - Rename Model - Renommer le modèle - - - Invalid node - Nœud invalide - - - Can't rename the node - Impossible de renommer le nœud - - - Invalid node type - Type de nœud invalide - - - The model group doesn't contain the old model name (%1). - Le groupe de modèles ne contient pas l'ancien nom du modèle (%1). - - - The model name "%1" already exists in the model group. - Le nom de modèle « %1 » existe déjà dans le groupe de modèles. - - - Delete Model - Supprimer le modèle - - - The selected node has an invalid source address - Le nœud sélectionné contient une adresse source invalide - - - The model group doesn't contain the model name (%1). - Le groupe de modèles ne contient pas le nom du modèle (%1). - - - - QmlDesigner::CollectionView - - Model Editor - Éditeur de modèle - - - Model Editor view - Vue de l'éditeur de modèle - - - - QmlDesigner::CollectionWidget - - Model Editor - Title of model editor widget - Éditeur de modèle - - - Cannot Create QtQuick View - Impossible de créer une vue QtQuick - - - StatesEditorWidget: %1 cannot be created.%2 - StatesEditorWidget : %1 ne peut être créé.%2 - - - File error - Erreur de fichier - - - Can not open the file to write. - - Impossible d'ouvrir le fichier en écriture. - - - - Can not add a model to the JSON file - Impossible d'ajouter un modèle au fichier JSON - - - The imported model is empty or is not supported. - Le modèle importé est vide ou non pris en charge. - - - Can not import to the main model - Impossible d'importer au modèle principal - - - The data store is not available. - Le stockage des données n'est pas disponible. - - - The default model node is not available. - Le nœud de modèle par défaut n'est pas disponible. - - - Failed to add a model to the default model group - Échec lors de l'ajout du modèle au groupe de modèles par défaut - - QmlDesigner::ColorTool @@ -6965,12 +7016,35 @@ Export des ressources : %2 Connexions + + QmlDesigner::ContentLibraryUserModel + + Materials + Matériaux + + + Textures + Textures + + + 3D + 3D + + QmlDesigner::ContentLibraryView Content Library Bibliothèque de contenus + + 3D Item Exists + L'élément 3D existe déjà + + + A 3D item with the same name '%1' already exists in the Content Library, are you sure you want to overwrite it? + Un élément 3D portant le même nom '%1' existe déjà dans la bibliothèque de contenus. Souhaitez-vous l'écraser ? + QmlDesigner::ContentLibraryWidget @@ -7095,11 +7169,30 @@ Export des ressources : %2 - QmlDesigner::DocumentWarningWidget + QmlDesigner::DocumentMessage - Always ignore these warnings about features not supported by Qt Quick Designer. - Toujours ignorer les avertissements liés aux fonctionnalités non supportées par Qt Quick Designer. + Error parsing + Erreur d'analyse + + Internal error + Erreur interne + + + line %1 + + ligne %1 + + + + column %1 + + colonne %1 + + + + + QmlDesigner::DocumentWarningWidget Cannot open this QML document because of an error in the QML file: Impossible d'ouvrir ce document QML à cause d'une erreur dans le fichier QML : @@ -7109,8 +7202,12 @@ Export des ressources : %2 OK - This QML file contains features which are not supported by Qt Quick Designer at: - Ce fichier QML contient des fonctionnalités qui ne sont pas supportées par Qt Quick Designer : + Turn off warnings about unsupported Qt Design Studio features. + Désactiver les avertissements à propos des fonctionnalités Qt Design Studio non prises en charge. + + + This QML file contains features which are not supported by Qt Design Studio at: + Ce fichier QML contient des fonctionnalités qui ne sont pas supportées par Qt Design Studio : Ignore @@ -7335,6 +7432,10 @@ Export des ressources : %2 Reset all shading options for all viewports. Réinitialiser toutes les options de rendu pour toutes les vues. + + Add to Content Library + Ajouter à la bibliothèque de contenus + 3D view is not supported in MCU projects. La vue 3D n'est pas prise en charge dans les projets MCU. @@ -7392,6 +7493,13 @@ Export des ressources : %2 Liste d'événements + + QmlDesigner::FileExtractor + + Choose Directory + Sélectionner un répertoire + + QmlDesigner::FilePathModel @@ -7542,6 +7650,13 @@ Export des ressources : %2 QML Resource File (*.qrc) Fichier de ressource QML (*.qrc) + + Successfully generated QRC resource file + %1 + ressoures ? + Fichier de ressource QRC généré avec succès + %1 + Generate Deployable Package... Générer un paquet déployable… @@ -7551,23 +7666,33 @@ Export des ressources : %2 Enregistrer le projet en tant que ressource - QML Resource File (*.qmlrc);;Resource File (*.rcc) - Fichier de ressource QML (*.qmlrc);;Fichier de ressource (*.rcc) + Generating deployable package. Please wait... + Génération du paquet déployable. Veuillez patienter… - Generate a resource file out of project %1 to %2 - Générer un fichier de ressource en dehors du projet %1 vers %2 + Failed to generate deployable package! + Échec de génération du paquet déployable ! + + + Error + Erreur + + + Failed to generate deployable package! + +Please check the output pane for more information. + Échec de génération du paquet déployable ! + +Veuillez vérifier le panneau de sortie pour plus d'informations. + + + Successfully generated deployable package + Génération du paquet déployable réussie Success Réussite - - Successfully generated deployable package - %1 - Génération du paquet déployable réussie - %1 - QmlDesigner::GlobalAnnotationDialog @@ -7718,6 +7843,59 @@ Export des ressources : %2 Réinitialiser l'espace de travail actif + + QmlDesigner::Internal::MetaInfoPrivate + + Invalid meta info + Métadonnées invalides + + + + QmlDesigner::Internal::MetaInfoReader + + Illegal state while parsing. + État illégal lors de l'analyse. + + + No property definition allowed. + Aucune définition de propriété permise. + + + Invalid type %1 + Type %1 invalide + + + Unknown property for Type %1 + Propriété inconnue pour le type %1 + + + Unknown property for ItemLibraryEntry %1 + Propriété inconnue pour ItemLibraryEntry %1 + + + Unknown property for Property %1 + Propriété inconnue pour Property %1 + + + Unknown property for QmlSource %1 + Propriété inconnue pour QmlSource %1 + + + Unknown property for ExtraFile %1 + Propriété inconnue pour ExtraFile %1 + + + Invalid or duplicate library entry %1 + Entrée de bibliothèque %1 invalide ou dupliquée + + + + QmlDesigner::Internal::ModelPrivate + + Exception thrown by view %1. + Exception lancée par la vue %1. + + QmlDesigner::Internal::SettingsPage @@ -7733,6 +7911,14 @@ Export des ressources : %2 Canvas Canevas + + If you select this radio button, Qt Design Studio always uses the QML emulation layer (QML Puppet) located at the following path. + Si vous sélectionnez ce bouton radio, Qt Design Studio utilisera toujours la couche d'émulation QML (QML Puppet) située au chemin suivant. + + + Warns about QML features that are not properly supported by the Qt Design Studio. + Avertit à propos des fonctionnalités QML qui ne sont pas prises en charge par Qt Design Studio. + Debugging Débogage @@ -7761,10 +7947,6 @@ Export des ressources : %2 Use fallback QML emulation layer Utiliser la couche d'émulation QML de secours - - If you select this radio button, Qt Quick Designer always uses the QML emulation layer (QML Puppet) located at the following path. - Si vous sélectionnez ce bouton radio, Qt Quick Designer utilisera toujours la couche d'émulation QML (QML Puppet) se trouvant au chemin suivant. - Path to the QML emulation layer executable (qmlpuppet). Chemin de l'exécutable de la couche d'émulation QML (qmlpuppet). @@ -7798,10 +7980,6 @@ Export des ressources : %2 Warn about unsupported features in .ui.qml files Avertir à propos des fonctionnalités non supportées dans les fichiers .ui.qml - - Warns about QML features that are not properly supported by the Qt Quick Designer. - Avertit à propos des fonctionnalités QML qui ne sont pas supportées par Qt Quick Designer. - Warn about using .qml files instead of .ui.qml files Avertir à propos de l'utilisation des fichiers .qml à la place des fichiers .ui.qml @@ -7967,6 +8145,13 @@ Export des ressources : %2 Propriété inconnue pour ExtraFile %1 + + QmlDesigner::InvalidArgumentException + + Failed to create item of type %1 + Échec lors de la création de l'élément de type %1 + + QmlDesigner::ItemLibraryAssetImportDialog @@ -7989,6 +8174,10 @@ Export des ressources : %2 Select import options and press "Import" to import the following files: Sélectionnez les options d'importation et appuyez sur "Importer" pour importer les fichiers suivants : + + Importing: + Importation de : + Locate 3D Asset "%1" Localiser la ressource 3D « %1 » @@ -8009,6 +8198,18 @@ Export des ressources : %2 Cancel Annuler + + Accept + Accepter + + + Import is ready for preview. + Le fichier importé peut être prévisualisé. + + + Click "Accept" to finish the import or adjust options and click "Import" to import again. + Cliquez sur « Accepter » pour finaliser l'importation ou ajustez les options et cliquez sur « Importer » pour importer à nouveau. + Close Fermer @@ -8072,6 +8273,10 @@ Export des ressources : %2 Could not access temporary asset directory: "%1". Impossible d'accéder au répertoire temporaire des ressources : « %1 ». + + Attempted to reimport non-existing asset: %1 + Tentative de réimportation d'une ressource inexistante : %1 + Failed to create qmldir file for asset: "%1". Échec lors de la création du fichier qmldir pour la ressource : « %1 ». @@ -8272,6 +8477,13 @@ Export des ressources : %2 Vue de l'éditeur de matériau + + QmlDesigner::Model + + Invalid Id + Identifiant invalide + + QmlDesigner::NavigatorSearchWidget @@ -8308,10 +8520,6 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.Invalid Id Identifiant invalide - - %1 is an invalid id. - %1 n’est pas un identifiant valide. - %1 already exists. %1 existe déjà. @@ -8360,6 +8568,21 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.Inverser l'ordre des composants + + QmlDesigner::NodeInstanceView + + Qt Quick emulation layer crashed. + La couche d'émulation Qt Quick a planté. + + + Source item: %1 + Élément source : %1 + + + Failed to generate QSB file for: %1 + Échec de génération du fichier QSB pour : %1 + + QmlDesigner::NodeListModel @@ -8495,6 +8718,14 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.The QML file is not currently opened in a QML Editor. Le fichier QML n'est actuellement pas ouvert dans un éditeur QML. + + Qml Designer Lite + Qml Designer Lite + + + The Qml Designer Lite plugin is not enabled. + Le greffon Qml Designer Lite n'est pas activé. + Give Feedback... Faire un retour… @@ -8863,6 +9094,87 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.StatesEditorWidget : %1 ne peut être créé.%2 + + QmlDesigner::StudioConfigSettingsPage + + Qt Design Studio Configuration + Configuration de Qt Design Studio + + + + QmlDesigner::StudioSettingsPage + + Build + Compiler + + + Debug + Déboguer + + + Analyze + Analyser + + + Tools + Outils + + + Enable Experimental Features + Activer les fonctionnalités expérimentales + + + Hide top-level menus with advanced functionality to simplify the UI. <b>Build</b> is generally not required in the context of Qt Design Studio. <b>Debug</b> and <b>Analyze</b> are only required for debugging and profiling. <b>Tools</b> can be useful for bookmarks and git integration. + Cache les fonctionnalités avancées des menus de haut niveau pour simplifier l'interface. Le bouton <b>Compiler</b> n'est généralement pas nécessaire dans le contexte de Qt Design Studio. Les boutons <b>Déboguer</b> et <b>Analyser</b> ne sont nécessaires que pour le débogage et le profilage. Le bouton <b>Outils</b> peut être utile pour les signets et l'intégration Git. + + + Hide Menu + Cacher les menus + + + Examples + Exemples + + + Examples path: + Chemin des exemples : + + + Reset Path + Réinitialiser le chemin + + + Bundles + Bundles + + + Bundles path: + Chemin des bundles : + + + Experimental Features + Fonctionnalités expérimentales + + + This option enables experimental features in Qt Design Studio. Please provide feedback and bug reports at: %1 + Cette option active les fonctionnalités expérimentale dans Qt Design Studio. Veuillez envoyer vos retours et rapport de bogues à l'adresse : %1 + + + The menu visibility change will take effect after restart. + Le changement de la visibilité des menus prendra effet après le redémarrage. + + + Changing bundle path will take effect after restart. + Le changement du chemin des bundles prendra effet après le redémarrage. + + + + QmlDesigner::SubComponentManager + + My 3D Components + Mes composants 3D + + QmlDesigner::SwitchLanguageComboboxAction @@ -8897,6 +9209,26 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.Vue du code + + QmlDesigner::TextToModelMerger + + No import statements found. + instruction? + Aucune mention d'importation n'a été trouvée. + + + Qt Quick 6 is not supported with a Qt 5 kit. + Qt Quick 6 n'est pas pris en charge avec un kit Qt 5. + + + The Design Mode requires a valid Qt kit. + Le mode Design nécessite un kit Qt valide. + + + No import for Qt Quick found. + Aucune importation de Qt Quick n'a été trouvée. + + QmlDesigner::TextureEditorView @@ -9006,10 +9338,6 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.Invalid Id Identifiant invalide - - %1 is an invalid id. - %1 n’est pas un identifiant valide. - %1 already exists. %1 existe déjà. @@ -9073,10 +9401,6 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.Invalid Id Identifiant invalide - - %1 is an invalid id. - %1 n’est pas un identifiant valide. - %1 already exists. %1 existe déjà. @@ -9360,10 +9684,6 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.Invalid ID Identifiant invalide - - %1 is an invalid ID. - %1 n’est pas un identifiant valide. - %1 already exists. %1 existe déjà. @@ -9396,6 +9716,13 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.Outil de transition + + QmlDesigner::View3DTool + + View3D Tool + Outil de vue 3D + + QmlDesignerAddResources @@ -9621,6 +9948,10 @@ Les composants verrouillés ne peuvent être ni modifiés ni sélectionnés.Add Mouse Area Ajouter une zone de souris + + Edit in 3D View + Modifier dans la vue 3D + Open Signal Dialog Ouvrir la boîte de dialogue des signaux @@ -10337,8 +10668,40 @@ Installez-les manuellement après que l'opération en cours soit finie. L'installation des paquets du SDK Android peut échouer si les licences respectives ne sont pas acceptées. - SDK Manager is busy. - Le gestionnaire de SDK est occupé. + Finished successfully. + Terminé avec succès. + + + Installing / Uninstalling selected packages... + Installation/désinstallation des paquets sélectionnés… + + + Closing the preferences dialog will cancel the running and scheduled SDK operations. + La fermeture de la boîte de dialogue des préférences annulera les opération SDK en cours et planifiées. + + + Closing the options dialog will cancel the running and scheduled SDK operations. + La fermeture de la boîte de dialogue des options annulera les opérations du SDK en cours et planifiées. + + + Uninstalling %1... + Désinstallation de %1… + + + Installing %1... + Installation de %1… + + + Updating installed packages... + Mise à jour des paquets installés… + + + [Packages to be uninstalled:] + [Paquets à désinstaller :] + + + [Packages to be installed:] + [Paquets à installer :] %n Android SDK packages shall be updated. @@ -10347,68 +10710,6 @@ Installez-les manuellement après que l'opération en cours soit finie. %n paquets de SDK Android doivent être mis à jour. - - [Packages to be uninstalled:] - - [Paquets à désinstaller :] - - - - SDK Manager is busy. Operation cancelled. - Le gestionnaire de SDK est occupé. Opération annulée. - - - Installing/Uninstalling selected packages... - - Installation/désinstallation des paquets sélectionnés… - - - - Closing the %1 dialog will cancel the running and scheduled SDK operations. - - La fermeture de la boîte de dialogue %1 annulera les opérations en cours et planifiées du SDK. - - - - preferences - préférences - - - options - options - - - Updating installed packages... - - Mise à jour des paquets installés… - - - - Android SDK operations finished. - Les opérations du SDK Android sont terminées. - - - Operation cancelled. - - Opération annulée. - - - - -No pending operations to cancel... - - -Aucune opération en cours à annuler… - - - - -Cancelling pending operations... - - -Annulation des opérations en cours… - - SDK Manager Arguments Arguments du gestionnaire de SDK @@ -10825,14 +11126,6 @@ dans le navigateur système pour un téléchargement manuel. JDK location: Emplacement du JDK : - - Could not run: %1 - Impossible de démarrer : %1 - - - No devices found in output of: %1 - Aucun périphérique n’a été trouvé dans la sortie de : %1 - Android Debugger (%1, NDK %2) Débogueur Android (%1, NDK %2) @@ -11025,10 +11318,6 @@ Le kit supporte « %2 », mais le périphérique utilise « %3&#x Cannot find the androiddeployqt tool. Impossible de trouver l'outil androiddeployqt. - - Cannot find the package name from the Android Manifest file "%1". - Impossible de trouver le nom du paquet depuis le fichier Manifest Android « %1 ». - Uninstalling the previous package "%1". Désinstallation du paquet précédent « %1 ». @@ -11057,14 +11346,6 @@ Le kit supporte « %2 », mais le périphérique utilise « %3&#x Installing the app failed with an unknown error. Échec d'installation de l'application avec une erreur inconnue. - - Deployment failed with the following errors: - - - Échec du déploiement avec les erreurs suivantes : - - - Uninstalling the installed package may solve the issue. La désinstallation du paquet installé peut résoudre le problème. @@ -11105,6 +11386,14 @@ Le kit supporte « %2 », mais le périphérique utilise « %3&#x Pulling files necessary for debugging. Envoie des fichiers nécessaires au débogage. + + Cannot find the package name from AndroidManifest.xml nor build.gradle files at "%1". + Impossible de trouver le nom du paquet dans les fichiers AndroidManifest.xml ou build.gradle présents dans le répertoire « %1 ». + + + Deployment failed with the following errors: + Échec du déploiement avec les erreurs suivantes : + Android package (*.apk) Paquet Android (*.apk) @@ -11239,6 +11528,10 @@ Cela ne peut être annulé. Android Device Périphérique Android + + Android support is not yet configured. + La prise en charge d'Android n'a pas encore été configuré. + The device info returned from AvdDialog is invalid. Les informations retournées par le périphérique à travers AvdDialog sont invalides. @@ -11248,8 +11541,8 @@ Cela ne peut être annulé. Version inconnue d'Android. Niveau d'API : %1 - Error creating Android templates. - Erreur lors de la création des modèles Android. + Cannot open "%1". + Impossible d'ouvrir « %1 ». Cannot parse "%1". @@ -11644,14 +11937,6 @@ Les fichiers du répertoire source du paquet Android sont copiés dans le réper Cannot create AVD. Invalid input. Impossible de créer un périphérique AVD. Entrée invalide. - - Could not start process "%1". - Impossible de démarrer le processus « %1 ». - - - Cannot create AVD. Command timed out. - Impossible de créer le périphérique AVD. La commande a expiré. - Emulator Tool Is Missing Les outils de l'émulateur sont manquants @@ -11664,6 +11949,10 @@ Les fichiers du répertoire source du paquet Android sont copiés dans le réper AVD Start Error Erreur de démarrage d'AVD + + Failed to start AVD emulator for "%1" device. + Impossible de démarrer l'émulateur AVD pour le périphérique « %1 ». + Master icon Icône principale @@ -11885,6 +12174,10 @@ Les fichiers du répertoire source du paquet Android sont copiés dans le réper Cancel Annuler + + Verifying package integrity... + Vérification de l'intégrité du paquet… + Unarchiving SDK Tools package... Désarchivage du paquet des outils SDK… @@ -11913,38 +12206,10 @@ Les fichiers du répertoire source du paquet Android sont copiés dans le réper Download from %1 was redirected. Le téléchargement à partir de %1 a été redirigé. - - The operation requires user interaction. Use the "sdkmanager" command-line tool. - L'opération nécessite une intéraction de l'utilisateur. Utilisez l'outil en ligne de commande « sdkmanager ». - - - Updating installed packages. - Mise à jour des paquets installés. - Failed. Échec. - - Done - Fini - - - Installing - Installation - - - Uninstalling - Désinstallation - - - Failed - Échec - - - License command failed. - Échec de la commande de licence. - Revision Révision @@ -12630,6 +12895,10 @@ Exécutable : %2 Warns if a test section does not check any assertion. Avertit si un test ne vérifie aucune assertion. + + Repeat Tests + Répéter les tests + Output on failure Sortie en cas d'échec @@ -12824,10 +13093,6 @@ Voir la documentation de Google Test pour plus d'informations sur les filtr typed avec typage - - Active frameworks: - Cadriciels actifs : - Automatically run tests after build Exécuter automatiquement les tests après la compilation @@ -12844,6 +13109,27 @@ Voir la documentation de Google Test pour plus d'informations sur les filtr Selected Sélectionné + + Apply path filters before scanning for tests. + Appliquer les filtres de chemin avant la recherche des tests. + + + Wildcard expressions for filtering: + Expressions joker pour le filtrage : + + + Add + Ajouter + + + Remove + Supprimer + + + Limit Files to Path Patterns + je ne suis pas certain de cette traduction + Limiter les motifs de fichiers vers chemin + Qt Test Qt Test @@ -13423,6 +13709,14 @@ Cela peut provoquer des problèmes lors de l'exécution. Number of worker threads used when scanning for tests. Nombre de threads utilisés pour la recherche des tests. + + Use a timeout while executing test cases. + Utiliser un délai de dépassement lors de l'exécution des cas de test. + + + Timeout used when executing test cases. This will apply for each test case on its own, not the whole project. Overrides test framework or build system defaults. + Délai de dépassement utilisé lors de l'exécution des cas de tests. Le délai s'applique après chaque cas et non pour le projet complet. Remplace les valeurs par défaut du système de construction et du cadriciel de test. + Automatically scrolls down when new items are added and scrollbar is at bottom. Défile automatiquement vers le bas lors de l'ajout de nouveaux éléments et si la barre de défilement est en bas. @@ -13449,25 +13743,17 @@ Avertissement : fonctionnalité expérimentale pouvant entraîner un échec Timeout: Délai d’attente : - - Timeout used when executing each test case. - Délai de dépassement utilisé lors de l'exécution de chaque cas de test. - s s - - Timeout used when executing test cases. This will apply for each test case on its own, not the whole project. - Délai de dépassement utilisé lors de l'exécution de chaque cas de test. Le délai est appliqué à chaque cas de test indépendamment et non à l'intégralité du projet. - Scan threads: Threads de recherche : Selects the test frameworks to be handled by the AutoTest plugin. - Sélectionne le cadriciel de test devant être géré par le plug-in AutoTest. + Sélectionne le cadriciel de test devant être géré par le greffon AutoTest. Framework @@ -13503,7 +13789,7 @@ Avertissement : fonctionnalité expérimentale pouvant entraîner un échec Enable or disable test frameworks to be handled by the AutoTest plugin. - Active ou désactive les cadriciels de test devant être gérés par le plug-in AutoTest. + Active ou désactive les cadriciels de test devant être gérés par le greffon AutoTest. Enable or disable grouping of test cases by folder. @@ -13515,7 +13801,7 @@ Avertissement : fonctionnalité expérimentale pouvant entraîner un échec You will not be able to use the AutoTest plugin without having at least one active test framework. - Vous ne pouvez pas utiliser le plug-in AutoTest sans avoir au minimum un cadriciel de test. + Vous ne pouvez pas utiliser le greffon AutoTest sans avoir au minimum un cadriciel de test. Mixing test frameworks and test tools. @@ -13623,6 +13909,10 @@ Avertissement : fonctionnalité expérimentale pouvant entraîner un échec Total rows: Nombre de lignes totales : + + No Data + Aucune donnée + Show dashboard Afficher le tableau de bord @@ -13631,6 +13921,18 @@ Avertissement : fonctionnalité expérimentale pouvant entraîner un échec Search for issues Recherche des problèmes + + Open Issue in Dashboard + Ouvrir le problème dans le tableau de bord + + + Open Table in Dashboard + Ouvrir le tableau dans le tableau de bord + + + Copy Dashboard Link to Clipboard + Copier le lien du tableau de bord dans le presse-papier + Axivion Axivion @@ -13737,6 +14039,10 @@ Souhaitez-vous ouvrir « %1 » avec l'application par défaut Open External Links Ouvrir les liens externes + + Search for issues inside the Axivion dashboard or request issue details for Axivion inline annotations to see them here. + Récupère les problèmes provenant du tableau de bord Axivion ou récupère les détails des annotations en ligne Axivion d'un problème afin de les voir ici. + Dashboard URL: URL du tableau de bord : @@ -13757,10 +14063,38 @@ Souhaitez-vous ouvrir « %1 » avec l'application par défaut User name Nom d'utilisateur + + Add... + Ajouter… + Edit... Modifier… + + Remove + Supprimer + + + Default dashboard server: + Serveur de tableau de bord par défaut : + + + unset + non défini + + + Remove Server Configuration + Supprimer la configuration du serveur + + + Remove the server configuration "%1"? + Supprimer la configuration du serveur « %1 » ? + + + Add Dashboard Configuration + Ajouter une configuration de tableau de bord + Edit Dashboard Configuration Modifier la configuration du tableau de bord @@ -15934,6 +16268,11 @@ Par exemple, « Revision : 15 » laissera la branche à la révis Display name for CMakeProjectManager::CMakeInstallStep id. Cmake Installation + + You may need to add the project directory to the list of directories that are mounted by the build device. + A revoir + Vous devez probablement ajouter le répertoire du projet à la liste des répertoires montés sur le périphérique de compilation. + The source directory %1 is not reachable by the CMake executable %2. Le répertoire source %1 n’est pas accessible par l’exécutable CMake %2. @@ -15982,6 +16321,10 @@ Par exemple, « Revision : 15 » laissera la branche à la révis Attempt to include "%1" which was already parsed. Tentative d’inclusion de %1 qui a déjà été analysé. + + CMake Preset (%1) %2 Debugger + Préréglage CMake (%1) de débogueur %2 + Unexpected source directory "%1", expected "%2". This can be correct in some situations, for example when importing a standalone Qt test, but usually this is an error. Import the build anyway? Répertoire source inattendu « %1 », attendu « %2 ». Cela peut être correct dans certaines situations, par exemple lors de l’importation d’un test Qt autonome, mais il s’agit généralement d’une erreur. Importer quand même la compilation ? @@ -16316,8 +16659,9 @@ Par exemple, « Revision : 15 » laissera la branche à la révis L’analyse CMake a été annulée. - CMake project configuration failed. No CMake configuration for build type "%1" found. - La configuration du projet CMake a échoué. Aucune configuration CMake pour le type de compilation « %1 » n’a été trouvée. + CMake project configuration failed. No CMake configuration for build type "%1" found. Check General Messages for more information. + General Messages refers to the output view + La configuration du projet CMake a échoué. Aucune configuration CMake pour le type de compilation « %1 » n'a été trouvé. Vérifiez les messages généraux pour plus d'informations. No "%1" CMake configuration found. Available configurations: "%2". @@ -16364,12 +16708,16 @@ Assurez-vous que la variable CMAKE_BUILD_TYPE contient le champ « Build ty « Version » non valide dans le fichier « %1 ». - Invalid "configurePresets" section in %1 file - Section « configurePresets » non valide dans le fichier %1 + Invalid "configurePresets" section in file "%1". + Section « configurePresets » invalide dans le fichier « %1 ». - Invalid "buildPresets" section in %1 file - Section « buildPresets » non valide dans le fichier %1 + Invalid "buildPresets" section in file "%1". + Section « buildPresets » invalide dans le fichier « %1 ». + + + Invalid "vendor" section in file "%1". + Section « vendor » invalide dans le fichier « %1 ». @@ -16709,6 +17057,10 @@ Assurez-vous que la variable CMAKE_BUILD_TYPE contient le champ « Build ty Generate Compilation Database Générer la base de données de compilation + + Generating Clang compilation database canceled. + Génération de la base de données de compilation Clang annulée. + Generate Compilation Database for "%1" Générer la base de données de compilation pour « %1 » @@ -16795,6 +17147,10 @@ Assurez-vous que la variable CMAKE_BUILD_TYPE contient le champ « Build ty Enable Anyway Activer quand même + + Cannot use clangd: Generating compilation database canceled. + Impossible d'utiliser clangd : génération de la base de données de compilation annulée. + Cannot use clangd: Failed to generate compilation database: %1 @@ -17131,6 +17487,14 @@ Sortie : Suppress This Diagnostic Supprimer ce diagnostic + + Suppress Selected Diagnostics Inline + Supprimer les diagnostiques en ligne sélectionnés + + + Suppress This Diagnostic Inline + Supprimer ce diagnostique en ligne + Disable These Checks Désactiver ces vérifications @@ -18418,20 +18782,22 @@ Le code a été copié dans votre presse-papiers. Select path to node.js executable. See %1 for installation instructions. %1 is the URL to nodejs - Sélectionner le chemin menant à l'exécutable node.js. Voir %1 pour les instructions d'installation. + Sélectionnez le chemin menant à l'exécutable node.js. Consultez les instructions d'installation à l'adresse %1. - Path to agent.js: - Chemin vers agent.js : + Path to %1: + %1 is the filename of the copilot language server + Chemin vers %1 : - Agent.js path - Chemin Agent.js + %1 path + %1 is the filename of the copilot language server + Chemin %1 - Select path to agent.js in Copilot Neovim plugin. See %1 for installation instructions. - %1 is the URL to copilot.vim getting started - Sélectionner le chemin vers agent.js dans le plug-in Copilot Neovim Voir %1 pour les instructions d'installation. + Select path to %2 in Copilot Neovim plugin. See %1 for installation instructions. + %1 is the URL to copilot.vim getting started, %2 is the filename of the copilot language server + Sélectionnez le chemin vers %2 du greffon Copilot Neovim. Consultez les instructions d'installation à l'adresse %1. Auto Request @@ -18534,13 +18900,13 @@ Le code a été copié dans votre presse-papiers. L'activation de %1 est sujette à votre accord et votre conformité dans les termes applicables %1. Il est de votre responsabilité de connaître et d'accepter les prérequis et les conditions d'utilisation d'un outil comme %1. Cela peut inclure, mais n'est pas limité à, s'assurer d'avoir les droits de permettre à %1 d'accéder à votre code, ainsi que de comprendre les implications de votre utilisation de %1 et les suggestions produites (tels que les droits d'auteur, la précision, etc.). - The Copilot plugin requires node.js and the Copilot neovim plugin. If you install the neovim plugin as described in %1, the plugin will find the agent.js file automatically. + The Copilot plugin requires node.js and the Copilot neovim plugin. If you install the neovim plugin as described in %1, the plugin will find the %3 file automatically. Otherwise you need to specify the path to the %2 file from the Copilot neovim plugin. Markdown text for the copilot instruction label - Le plug-in Copilot nécessite node.js et le plug-in Copilot Neovim. Si vous installez le plug-in Neovim tel que décrit dans %1, le plug-in trouvera automatiquement le fichier agent.js. + Le greffon Copilot nécessite node.js et le greffon Copilot Neovim. Si vous installez le greffon Neovim comme indiqué à l'adresse %1, le greffon trouvera le fichier %3 automatiquement. -Sinon, vous devez spécifier le chemin menant au fichier %2 dans le plug-in Copilot Neovim. +Sinon, vous devez spécifier le chemin vers le fichier %2 du greffon Copilot Neovim. Note @@ -18695,6 +19061,10 @@ Sinon, vous devez spécifier le chemin menant au fichier %2 dans le plug-in Copi Pin Épingler + + Reopen Last Closed Document + Ré-ouvrir le dernier document fermé + Split Scinder @@ -19152,10 +19522,6 @@ provided they were unmodified before the refactoring. Crash Reporting Rapport de plantage - - The change will take effect after restart. - La modification prendra effet après le redémarrage. - Case Sensitive (Default) Sensible à la casse (par défaut) @@ -20184,11 +20550,16 @@ provided they were unmodified before the refactoring. Readable: - Lisible : + Lisible : Writable: - Écriture possible : + Écriture possible : + + + Executable: + adjective + Exécution possible : Symbolic link: @@ -20371,6 +20742,10 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Locator filters that do not update their cached data immediately, such as the custom directory filters, update it after this time interval. Les filtres de locator ne mettent pas à jour immédiatement leurs données mises en cache, tel que les filtres personnalisés de répertoire, celle-ci sont mise à jour après cet intervalle de temps. + + Locator filters show relative paths to the active project when possible. + Les filtres du localisateur affichent les chemins relatifs du projet actifs lorsque possible. + Files in Directories Fichiers dans les répertoires @@ -20593,10 +20968,6 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Description: Description : - - Executable: - Exécutable : - Arguments: Arguments : @@ -20690,6 +21061,11 @@ To do this, you type this shortcut and a space in the Locator entry field, and t Change... Modifier… + + Executable: + noun + Exécutable : + Base environment: Environnement de base : @@ -21026,14 +21402,6 @@ Voulez-vous les écraser ? %2 - - Launching Windows Explorer Failed - Échec du lancement de l’explorateur Windows - - - Could not find explorer.exe in path to launch Windows Explorer. - explorer.exe introuvable dans le chemin pour lancer Windows Explorer. - The command for file browser is not set. La commande pour le navigateur de fichiers n’est pas définie. @@ -21570,10 +21938,18 @@ Souhaitez-vous les importer maintenant ? The platform executable suffix. Suffixe de l’exécutable de la plate-forme. + + The path to the running %1 itself. + Le chemin menant au programme %1. + The directory where %1 finds its pre-installed resources. Répertoire dans lequel %1 trouve ses ressources préinstallées. + + The directory where %1 puts custom user data. + Le répertoire où %1 écrit les données spécifiques à l'utilisateur. + The current date (QDate formatstring). La date actuelle (chaîne de formatage QDate). @@ -21843,6 +22219,15 @@ Double-cliquez pour modifier l’élément. Activate %1 View Activer la vue %1 + + output.txt + default file name suggested for saving text from output views + sortie.txt + + + Save Contents... + Enregistrer le contenu… + Elided %n characters due to Application Output settings @@ -22103,6 +22488,14 @@ Double-cliquez pour modifier l’élément. Interpret ambiguous headers as C headers Interpréter les en-têtes ambigus comme des en-têtes C + + Enable indexing + Activer l'indexation + + + Indexing should almost always be kept enabled, as disabling it will severely limit the capabilities of the code model. + L'indexation doit presque toujours rester active : sa désactivation limitera sévèrement les capacités du modèle de code. + Do not index files greater than Ne pas indexer les fichiers plus grands que @@ -22147,6 +22540,14 @@ Double-cliquez pour modifier l’élément. <p>If background indexing is enabled, global symbol searches will yield more accurate results, at the cost of additional CPU load when the project is first opened. The indexing result is persisted in the project's build directory. If you disable background indexing, a faster, but less accurate, built-in indexer is used instead. The thread priority for building the background index can be adjusted since clangd 15.</p><p>Background Priority: Minimum priority, runs on idle CPUs. May leave 'performance' cores unused.</p><p>Normal Priority: Reduced priority compared to interactive work.</p><p>Low Priority: Same priority as other clangd work.</p> <p>Si l’indexation en arrière-plan est activée, les recherches globales de symboles donneront des résultats plus précis, au prix d’une charge de travail supplémentaire du CPU lors de la première ouverture du projet. Le résultat de l’indexation est conservé dans le répertoire de construction du projet. Si vous désactivez l’indexation en arrière-plan, un indexeur intégré plus rapide, mais moins précis, est utilisé à la place. La priorité des threads pour la construction de l’index d’arrière-plan peut être ajustée depuis clangd 15.</p><p>Priorité d’arrière-plan : priorité minimale, s’exécute sur les processeurs inactifs. Peut laisser les cœurs de « performance » inutilisés.</p><p>Priorité normale : priorité réduite par rapport au travail interactif.</p><p>Priorité basse : même priorité que les autres travaux de clangd.</p> + + The location of the per-project clangd index.<p>This is also where the compile_commands.json file will go. + L'emplacement de l'index clangd par projet. <p>C'est aussi l'emplacement qu'aura le fichier compile_commands.json. + + + The location of the per-session clangd index.<p>This is also where the compile_commands.json file will go. + L'emplacement de l'index clangd par session. <p>C'est aussi l'emplacement qu'aura le fichier compile_commands.json. + <p>The C/C++ backend to use for switching between header and source files.</p><p>While the clangd implementation has more capabilities than the built-in code model, it tends to find false positives.</p><p>When "Try Both" is selected, clangd is used only if the built-in variant does not find anything.</p> <p>Le back-end C/C++ à utiliser pour alterner entre les en-têtes et les fichiers source.</p><p>Bien que l'implémentation clangd possède plus de fonctionnalités que le modèle de code intégré, clangd produit des faux positifs.</p><p>Lorsque « Essayer les deux » est sélectionné, clangd n'est utilisé que lorsque le modèle de code intégré ne trouve rien.</p> @@ -22163,6 +22564,10 @@ Double-cliquez pour modifier l’élément. Controls whether clangd may insert header files as part of symbol completion. Contrôle si clangd peut insérer des fichiers d’en-tête dans le cadre de la complétion de symboles. + + <p>Controls whether when editing a header file, clangd should re-parse all source files including that header.</p><p>Note that enabling this option can cause considerable CPU load when editing widely included headers.</p><p>If this option is disabled, the dependent source files are only re-parsed when the header file is saved.</p> + <p>Détermine si la modification d'un fichier d'en-tête déclenche l'analyse par clangd, des fichiers sources incluant ce fichier d'en-tête.</p><p>Notez que l'activation de cette option augmente considérablement la charge CPU lors de la modification d'un fichier d'en-tête fréquemment inclût.</p><p>Si cette option est désactivée, les fichiers sources dépendants ne seront ré-analysés que lors de l'enregistrement du fichier d'en-tête.</p> + Defines the amount of time %1 waits before sending document changes to the server. If the document changes again while waiting, this timeout resets. @@ -22187,6 +22592,10 @@ Le modèle de code intégré gèrera le surlignage, la complétion, etc.Insert header files on completion Insérer les fichiers d’en-tête dans la complétion + + Update dependent sources + Mise à jour des fichiers sources dépendants + Automatic Automatique @@ -22211,6 +22620,14 @@ Le modèle de code intégré gèrera le surlignage, la complétion, etc.Background indexing: Indexation en arrière-plan : + + Per-project index location: + Emplacement de l'index de projet : + + + Per-session index location: + Emplacement de l'index de session : + Header/source switch mode: Mode de basculement entête/source : @@ -22743,10 +23160,6 @@ Utilisez le glisser-déposer pour modifier l’ordre des paramètres.Evaluating type hierarchy... Évaluation de la hiérarchie de type… - - Type Hierarchy - Hiérarchie de type - C++ Symbols Symboles C++ @@ -23057,6 +23470,14 @@ dans le corps de la classe Déclarations dans la définition de « namespace » + + Macros that can be used as statements without a trailing semicolon. + Macros pouvant être utilisées comme expression sans être suivies de point-virgule. + + + Statement Macros + Macros instructions + Braces Accolades @@ -23281,6 +23702,22 @@ Les chemins peuvent être donnés en absolus ou en relatifs au dossier contenant Ces chemins sont utilisés en complément au répertoire actuel pour basculer entre les fichiers d’en-tête et de source. + + Header File Variables + Variables de fichier d'en-tête + + + Header file + Fichier d'en-tête + + + Use "#pragma once" instead + Utiliser « #pragma once » à la place + + + Include guard template: + Inclure les modèles de garde-fous : + S&uffix: S&uffixe : @@ -23317,10 +23754,6 @@ Ces chemins sont utilisés en complément au répertoire actuel pour basculer en **************************************************************************/ - - Use "#pragma once" instead of "#ifndef" guards - Utiliser « #pragma-once » au lieu du garde-fou « #ifndef » - &Lower case file names &Noms des fichiers en minuscule @@ -23353,10 +23786,6 @@ Ces préfixes sont utilisés en complément au répertoire actuel pour basculer &Prefixes: &Préfixes : - - Include guards - Garde-fous - Sources Sources @@ -23507,14 +23936,6 @@ Ces préfixes sont utilisés en complément au répertoire actuel pour basculer Open Type Hierarchy Ouvrir la hiérarchie de type - - Meta+Shift+T - Meta+Maj+T - - - Ctrl+Shift+T - Ctrl+Maj+T - Open Include Hierarchy Ouvrir la hiérarchie d’includes @@ -23902,6 +24323,44 @@ Ces préfixes sont utilisés en complément au répertoire actuel pour basculer collecting overrides... réception des surcharges… + + Convert Function Call to Qt Meta-Method Invocation + Convertir les appels de fonction en invocation de méthode Qt Meta + + + Move Class to a Dedicated Set of Source Files + Déplacer la classe vers un ensemble de fichiers sources dédiés + + + Header file only + Fichier d'en-tête seul + + + Project: + Projet : + + + Header file: + Fichier d'en-tête : + + + Implementation file: + Fichier d'implémentation : + + + Refusing to overwrite the following files: %1 + + Impossible d'écraser les fichiers suivants : %1 + + + + Failed to add to project file "%1": %2 + Impossible d'ajouter le fichier « %1 » au projet : %2 + + + Re-order Member Function Definitions According to Declaration Order + Ré-ordonner les définitions de fonction membres suivant l'ordre de déclaration + QtC::Cppcheck @@ -24201,6 +24660,10 @@ Souhaitez-vous tout de même les afficher ? Always adds a breakpoint on the <i>%1()</i> function. Ajoute toujours un point d’arrêt sur la fonction <i>%1()</i>. + + Behavior + Comportement + Default array size: Taille de tableau par défaut : @@ -24382,6 +24845,14 @@ Pour plus de détails, voir /etc/sysctl.d/10-ptrace.conf Edit Selected Breakpoints... Modifier les points d’arrêt sélectionnés… + + Disable All Breakpoints + Désactiver tous les points d'arrêt + + + Enable All Breakpoints + Activer tous les points d'arrêt + Disable Selected Locations Désactiver les emplacements sélectionnés @@ -25507,6 +25978,19 @@ par défaut de l’utilisateur au démarrage du débogueur. Use common locations for debug information Utiliser les emplacements actuels pour les informations de débogage + + Use debug info daemon + ou daemon ou service + Utiliser le démon fournissant les informations de débogage + + + Use system settings + Utiliser les paramètres du système + + + Lets GDB attempt to automatically retrieve debug information for system packages. + Laisse GDB essayer de récupérer automatiquement les informations de débogage pour les paquets systèmes. + Enable reverse debugging Activer le débogage inversé @@ -25899,6 +26383,10 @@ par défaut de l’utilisateur au démarrage du débogueur. DAP I/O Error Erreur d'E/S DAP + + "%1" could not be started. Error message: %2 + « %1 »n'a pas pu être démarré. Message d'erreur : %2 + The Pdb process failed to start. Either the invoked program "%1" is missing, or you may have insufficient permissions to invoke the program. Échec du démarrage du processus Pdb. Soit le programme « %1 » est manquant, soit les droits sont insuffisants pour exécuter le programme. @@ -26533,6 +27021,10 @@ Il peut vous être demandé de partager le contenu de ce journal lorsque vous si Launching Debugger Lancement du débogueur + + Launching %1 Debugger + Lancement du débogueur %1 + Switches the debugger to instruction-wise operation mode. In this mode, stepping operates on single instructions and the source location view also shows the disassembled instructions. Bascule le débogueur en mode de fonctionnement par instructions. Dans ce mode, le débogage opère sur des instructions individuelles et la vue de l’emplacement de la source montre également les instructions désassemblées. @@ -26802,6 +27294,10 @@ Il peut vous être demandé de partager le contenu de ce journal lorsque vous si GDB Preset Préréglage GDB + + LLDB Preset + Préréglage LLDB + Python Preset Préréglage Python @@ -27231,14 +27727,17 @@ Voulez-vous réessayer ? Enable %1 debugger. + %1 is C++, QML, or Python Activer le débogueur %1. Disable %1 debugger. + %1 is C++, QML, or Python Désactiver le débogueur %1. Try to determine need for %1 debugger. + %1 is C++, QML, or Python Essayer de déterminer si le débogueur %1 est nécessaire. @@ -28102,6 +28601,7 @@ L’accès au module ou la mise en place de points d’arrêt par fichier et par %1 of length %2 + <type> of length <number>, e.g. for strings and byte arrays %1 d'une longueur %2 @@ -29606,57 +30106,44 @@ La recompilation du projet peut aider. Extensions Extensions - - Get started - Démarrer - - - Install the extension from above. Installation starts automatically. You can always uninstall the extension afterwards. - Installer l'extension depuis l'emplacement ci-dessus. L'installation démarre automatiquement. Vous pourrez toujours désinstaller l'extension plus tard. - More information Plus d'informations - - Online Documentation - Documentation en ligne - - - Tutorials - Tutoriels - - - Examples - Exemples - - - Extension library details - Détails de la bibliothèque d'extensions - - - Size - Taille - - - Version - Version - - - Location - Emplacement - Extension details Détails de l'extension - - Released - Publiée + + Pack contains %n plugins. + + Le paquet contient %n greffon. + Le paquet contient %n greffons. + - Related tags - Étiquettes connexes + Load on start + Charger au démarrage + + + Restart Now + Redémarrer maintenant + + + Error + Erreur + + + Loaded + Chargé + + + Not loaded + Non chargé + + + Tags + Étiquettes Platforms @@ -29670,14 +30157,50 @@ La recompilation du projet peut aider. Extensions in pack Extensions dans le paquet + + Downloading... + Téléchargement… + + + Cancel + Annuler + + + Download Extension + Télécharger l'extension + + + Download Error + Erreur de téléchargement + + + Cannot download extension + Impossible de télécharger l'extension + + + Code: %1. + Code : %1. + Manage Extensions Gérer les extensions + + Search + Rechercher + Install... Installer… + + Use external repository + Utiliser un dépôt externe + + + Repository: %1 + Dépôt : %1 + QtC::ExtensionSystem @@ -29714,6 +30237,10 @@ La recompilation du projet peut aider. Dependencies: Dépendances : + + Loadable without restart: + Pouvant être chargé sans redémarrage + %1 (current: "%2") %1 (actuel : « %2 ») @@ -29823,7 +30350,7 @@ Le greffon est désactivé par un argument de ligne de commande. Plugin is required. - Le plugin est nécessaire. + Le greffon est nécessaire. Load on startup @@ -30005,6 +30532,10 @@ Raison : %3 Could not resolve dependency '%1(%2)' Impossible de résoudre la dépendance « %1(%2) » + + Cannot open file + Impossible d'ouvrir le fichier + "%1" is missing « %1 » est manquant @@ -30029,6 +30560,14 @@ Raison : %3 Value "%2" for key "%1" has invalid format La valeur « %2 » pour la clé « %1 » a un format invalide + + No IID found + IID non trouvé + + + Expected IID "%1", but found "%2" + IID « %1 » attendu, mais non trouvé « %2 » + Plugin meta data not found Les métadonnées du greffon n’ont pas été trouvées @@ -34596,44 +35135,8 @@ Souhaitez-vous les écraser ? Demander pour les périphériques qui ne sont pas en mode développeur - Rename - Renommer - - - Rename a simulator device. - Renommer un simulateur. - - - Delete - Supprimer - - - Delete simulator devices. - Supprimer un simulateur. - - - Reset contents and settings of simulator devices. - Réinitialise le contenu et les paramètres des simulateurs. - - - Create - Créer - - - Create a new simulator device. - Créer un nouveau simulateur. - - - Start - Démarrer - - - Start simulator devices. - Démarrer un simulateur. - - - Screenshot - Capture d’écran + Configure available simulator devices in <a href="%1">Xcode</a>. + Configurer les simulateurs de périphériques disponibles dans <a href="%1">Xcode</a>. Devices @@ -34643,116 +35146,6 @@ Souhaitez-vous les écraser ? Simulator Simulateur - - Screenshot directory: - Répertoire des captures d'écran : - - - You are trying to launch %n simulators simultaneously. This will take significant system resources. Do you really want to continue? - - Vous essayez de démarrer %n simulateur à la fois. Cela va prendre une part significative des ressources systèmes. Souhaitez-vous vraiment continuer ? - Vous essayez de démarrer %n simulateurs à la fois. Cela va prendre une part significative des ressources systèmes. Souhaitez-vous vraiment continuer ? - - - - Simulator Start - Démarrage du simulateur - - - Starting %n simulator device(s)... - - Démarrage de %n simulateur… - Démarrage de %n simulateurs… - - - - Cannot start simulator (%1, %2) in current state: %3. - Impossible de démarrer le simulateur (%1, %2) dans l'état actuel : %3. - - - simulator start - Démarrage du simulateur - - - Creating simulator device... - Création du simulateur… - - - Simulator device (%1) created. -UDID: %2 - Simulateur (%1) créé. -UDID : %2 - - - Simulator device (%1) creation failed. -Error: %2 - Échec lors de la création du simulateur (%1). -Erreur : %2 - - - Do you really want to reset the contents and settings of the %n selected device(s)? - - Souhaitez-vous vraiment réinitialiser le contenu et les paramètres d'%n périphérique sélectionné ? - Souhaitez-vous vraiment réinitialiser le contenu et les paramètres des %n périphériques sélectionnés ? - - - - Resetting contents and settings... - Réinitialisation du contenu et des paramètres… - - - simulator reset - Réinitialisation du simulateur - - - Rename %1 - Renommer %1 - - - Enter new name: - Entrer un nouveau nom : - - - Renaming simulator device... - Renommage du simulateur… - - - simulator rename - Renommage du simulateur - - - Delete Device - Supprimer un périphérique - - - Do you really want to delete the %n selected device(s)? - - Souhaitez-vous vraiment supprimer %n périphérique sélectionné ? - Souhaitez-vous vraiment supprimer les %n périphériques sélectionnés ? - - - - Deleting %n simulator device(s)... - - Suppression de %n simulateur… - Suppression de %n simulateurs… - - - - simulator delete - Suppression de simulateur - - - Capturing screenshots from %n device(s)... - - Capture d'écran à partir de %n périphérique… - Capture d'écran à partir de %n périphériques… - - - - simulator screenshot - Capture d'écran de simulateur - iOS build iOS BuildStep display name. @@ -34843,6 +35236,10 @@ Erreur : %2 OS version Version du système + + Product type + Type de produit + An iOS device in user mode has been detected. Un périphérique iOS en mode utilisateur a été détecté. @@ -34859,6 +35256,10 @@ Erreur : %2 Identifier: Identifiant : + + Product type: + Type de produit : + OS Version: Version du système : @@ -34920,6 +35321,10 @@ Erreur : %2 Debugging and profiling is currently not supported for devices with iOS 17 and later. Le débogage et le profilage n'est actuellement pas pris en charge avec les périphériques iOS 17 et supérieur. + + Update + Mettre à jour + Starting remote process. Démarrage des processus distants. @@ -34993,22 +35398,10 @@ Erreur : %2 iOS Simulator Simulateur iOS - - Create Simulator - Créer un simulateur - - - Simulator name: - Nom du simulateur : - Device type: Type de périphérique : - - OS version: - Version de l’OS : - None Aucun @@ -35137,50 +35530,6 @@ Date d'expiration : %3 Invalid simulator response. Device Id mismatch. Device Id = %1 Response Id = %2 Réponse du simulateur invalide. L'identifiant du périphérique ne correspond pas. Identifiant du périphérique = %1 Identifiant de réponse = %2 - - UDID: %1 - UDID : %1 - - - Simulator Name - Nom du simulateur - - - Runtime - Runtime - - - Current State - État actuel - - - Simulator Operation Status - Status des opérations du simulateur - - - %1, %2 -Operation %3 completed successfully. - %1, %2 -Opération %3 terminée avec succès. - - - %1, %2 -Operation %3 failed. -UDID: %4 -Error: %5 - %1, %2 -Opération %3 échouée. -UDID : %4 -Erreur : %5 - - - Unknown - Inconnue - - - Done. - Fait. - Failed to start process. Échec du démarrage du processus. @@ -35264,6 +35613,10 @@ Erreur : %5 Error %1 Erreur %1 + + Deprecated + Obsolète + Incoming Entrant @@ -35272,6 +35625,14 @@ Erreur : %5 Outgoing Sortant + + Bases + Bases + + + Derived + Dérivé + Call Hierarchy Hiérarchie d’appels @@ -35414,6 +35775,14 @@ Erreur : %5 Inspect Language Clients... Inspecter les fournisseurs de langages… + + Language Server Diagnostics + Diagnostiques du serveur de langage + + + Issues provided by the Language Server in the current document. + Problèmes fournis par le serveur de langage pour le document courant. + &Add &Ajouter @@ -35476,6 +35845,10 @@ Exemple : *.cpp%1*.h Language server-specific JSON to pass via "initializationOptions" field of "initialize" request. JSON spécifique au serveur à transmettre via le champ « initializationOptions » de la requête « initialize ». + + File pattern: + Motif de fichier : + Select MIME Types Sélectionner les types MIME @@ -35703,6 +36076,142 @@ Voir la documentation spécifique au serveur de langage pour la liste des param Supprimer %1 + + QtC::Lua + + Network Access + Accès au réseau + + + Allow Internet Access + Permettre l'accès au réseau + + + Allow the extension "%1" to fetch from the following URL: +%2 + de l'URL ? + Permet à l'extension « %1 » de récupérer le contenu à l'URL : +%2 + + + Remember choice + Se rappeler du choix + + + Allow the extension "%1" to fetch data from the internet? + Permettre à l'extension « %1 » de récupérer des données depuis Internet ? + + + Allow the extension "%1" to fetch datafrom the following URL: + + + Permettre à l'extension « %1 » de récupérer des données depuis l'URL suivante : + + + + + Always Allow + Toujours permettre + + + Allow Once + Permettre une seule fois + + + Deny + Refuser + + + Fetching is not allowed for the extension "%1". (You can edit permissions in Preferences > Lua.) + ajouter "en ligne" ? + La récupération de données n'est pas autorisée pour l'extension « %1 ». (Vous pouvez éditer les permissions dans Préférences > Lua.) + + + Package info is not an object. + L'information du paquet n'est pas un objet. + + + Installed package info is not an object. + L'information du paquet installé n'est pas un objet. + + + Cannot create app data directory. + Impossible de créer le répertoire pour les données de l'application. + + + Cannot write to package info: %1 + Impossible d'écrire l'information du paquet : %1 + + + Cannot write to temporary file. + Impossible d'écrire le fichier temporaire. + + + Unarchiving failed. + Échec du désarchivage. + + + Cannot open temporary file. + Impossible d'ouvrir le fichier temporaire. + + + Installing package(s) %1 + Installation des paquet(s) %1 + + + Install Package + Installer le paquet + + + The extension "%1" wants to install the following package(s): + + + L'extension « %1 » souhaite installer le(s) paquet(s) suivant(s) : + + + + + Install + Installer + + + * %1 - %2 (from: [%3](%3)) + Markdown list item: %1 = package name, %2 = version, %3 = URL + * %1 - %2 (depuis : [%3](%3)) + + + Failed to run script %1: %2 + Impossible d'exécuter le script %1 : %2 + + + No hook with the name "%1" found. + Aucun crochet avec le nom « %1 » n'a été trouvé. + + + Script did not return a table. + Le script n'a pas retourné de tableau. + + + Extension info table did not contain a setup function. + Le tableau d'informations de l'extension ne contient pas de fonction d'installation. + + + Cannot prepare extension setup: %1 + Impossible de préparer l'installation de l'extension : %1 + + + Extension setup function returned false. + La fonction d'installation de l'extension a renvoyé faux. + + + Extension setup function returned error: %1 + La fonction d'installation de l'extension a renvoyé l'erreur %1 + + + Failed to load plugin %1: %2 + Échec de chargement du greffon %1 : %2 + + QtC::Macros @@ -36140,6 +36649,10 @@ Voir la documentation spécifique au serveur de langage pour la liste des param No CMake tool was detected. Add a CMake tool in the <a href="cmake">CMake options</a> and select Apply. Aucun outil CMake détecté. Ajoutez un outil CMake dans les <a href="cmake">options CMake</a> et cliquez sur Appliquer. + + Cannot apply changes in Devices > MCU. + Impossible d'appliquer les changements dans Périphériques > MCU. + Qt for MCUs Kit Creation Création de kit Qt pour MCUs @@ -36176,10 +36689,6 @@ Voir la documentation spécifique au serveur de langage pour la liste des param Status État - - Unable to apply changes in Devices > MCU. - Impossible d'appliquer les changements dans Périphériques > MCU. - No target selected. Aucune cible sélectionnée. @@ -36881,6 +37390,15 @@ Utile si le répertoire de compilation est corrompu ou lors d’une recompilatio Add Canvas Diagram Ajouter un diagramme de canevas + + Toggle View and Filter Settings + View and Filter Settings ? + Active/désactive les paramètres de la vue et des filtres + + + Ctrl+Shift+L + Ctrl+Maj+L + Synchronize Browser and Diagram Synchroniser le navigateur et le diagramme @@ -36905,6 +37423,18 @@ Utile si le répertoire de compilation est corrompu ou lors d’une recompilatio Return Entrée + + Opening File + Ouverture du fichier + + + File "%1" does not exist. + Le fichier « %1 » n'existe pas. + + + Add Related Elements... + Ajouter des éléments liés… + Update Include Dependencies Mise à jour des dépendances d’inclusion @@ -36917,10 +37447,34 @@ Utile si le répertoire de compilation est corrompu ou lors d’une recompilatio Config path: Chemin de la configuration : + + Select File Target + Sélectionner le fichier cible + + + Linked file: + Fichier lié : + + + Select Image File + Sélectionner le fichier image + + + Image: + Image : + <font color=red>Model file must be reloaded.</font> <font color=red>Le fichier de modèle doit être rechargé.</font> + + Selecting Image + Sélection de l'image + + + Unable to read image file "%1". + Impossible de lire le fichier image « %1 ». + No model loaded. Cannot save. Aucun modèle chargé. Impossible d'enregistrer. @@ -37041,6 +37595,18 @@ Utile si le répertoire de compilation est corrompu ou lors d’une recompilatio Add Class %1 Ajouter la classe %1 + + Add Package Link to %1 + Ajouter un lien de paquet vers %1 + + + Add Diagram Link to %1 + Ajouter un lien de diagramme vers %1 + + + Add Document Link to %1 + Ajouter un lien de document vers %1 + Add Package %1 Ajouter le paquet %1 @@ -38609,6 +39175,11 @@ Title of a the cloned RunConfiguration window, text of the window Do you really want to delete build configuration <b>%1</b>? Voulez-vous vraiment supprimer la configuration de compilation <b>%1</b> ? + + compile-output.txt + file name suggested for saving compile output + sortie-compilation.txt + Show Compile &Output Afficher la &sortie de compilation @@ -39073,6 +39644,10 @@ Title of a the cloned RunConfiguration window, text of the window Cancel Build Annuler la compilation + + Open Workspace... + Ouvrir l'espace de travail… + Add New... Ajouter un nouveau… @@ -39102,6 +39677,10 @@ Title of a the cloned RunConfiguration window, text of the window Load Project Charger un projet + + Open Workspace + Ouvrir l'espace de travail + New Project Title of dialog @@ -39366,10 +39945,6 @@ Souhaitez-vous les ignorer ? <h3>Project already open</h3> <h3>Le projet est déjà ouvert</h3> - - Failed opening project "%1": Project is not a file. - Échec de l’ouverture du projet « %1 » : le projet n’est pas un fichier. - Failed opening project "%1": No plugin can open project type "%2". Échec de l’ouverture du projet « %1 » : aucun greffon ne peut ouvrir le type de projet « %2 ». @@ -39738,6 +40313,16 @@ Renommer quand même %2 en %3 ? Current directory Répertoire actuel + + s + Suffix for "seconds" + s + + + The amount of seconds to wait between a "soft kill" and a "hard kill" of a running application. + mort douce ? + Le nombre de secondes à attendre entre une « mort douce » et une « mort brutale » de l'application en cours d'exécution. + Directory Répertoire @@ -39818,6 +40403,14 @@ Renommer quand même %2 en %3 ? Deduced from Project Déduit du projet + + Show all kits in "Build & Run" in "Projects" mode + Afficher tous les kits dans « Compiler et exécuter » dans le mode « Projets » + + + Show also inactive kits in "Build & Run" in "Projects" mode. + Afficher aussi les kits inactifs dans « Compiler et exécuter » dans le mode « Projets ». + Environment changes to apply to run configurations, but not build configurations. Changements de l'environnement à appliquer aux configurations d'exécution, mais pas aux configurations de compilation. @@ -39842,6 +40435,10 @@ Renommer quand même %2 en %3 ? Default for "Run in terminal": Valeur par défaut pour « Exécuter dans un terminal » : + + Time to wait before force-stopping applications: + Temps d'attente avant de forcer l'arrêt des applications : + Always deploy project before running it Toujours déployer le projet avant de l’exécuter @@ -39866,6 +40463,10 @@ Renommer quand même %2 en %3 ? Default build directory: Répertoire par défaut de compilation : + + Template used to construct the default build directory.<br><br>The default value can be set using the environment variable <tt>%1</tt>. + Modèle utilisé pour construire le chemin de compilation par défaut.<br><br>La valeur par défaut peut être définie au travers de la variable d'environnement <tt>%1</tt>. + QML debugging: Débogage QML : @@ -40179,10 +40780,6 @@ Display name of the clean build step list. Used as part of the labels in the pro Qt Plugin Greffon Qt - - %{JS: value('Type') === 'qtplugin' ? value('BaseClassName').slice(1) : (value('ProjectName').charAt(0).toUpperCase() + value('ProjectName').slice(1))} - %{JS: value('Type') === 'qtplugin' ? value('NomClasseParent').slice(1) : (value('NomDuProjet').charAt(0).toUpperCase() + value('NomDuProjet').slice(1))} - Class name: Nom de la classe : @@ -40235,18 +40832,10 @@ Display name of the clean build step list. Used as part of the labels in the pro Qt module: Module Qt : - - %{JS: Cpp.classToFileName(value('Class'), Util.preferredSuffix('text/x-c++hdr'))} - %{JS: Cpp.classToFileName(value('Classe'), Util.preferredSuffix('text/x-c++hdr'))} - Header file: Fichier d’en-tête : - - %{JS: Cpp.classToFileName(value('Class'), Util.preferredSuffix('text/x-c++src'))} - %{JS: Cpp.classToFileName(value('Classe'), Util.preferredSuffix('text/x-c++src'))} - Source file: Fichier source : @@ -40339,16 +40928,6 @@ You should not mix multiple test frameworks in a project. Vous ne devez pas mélanger plusieurs cadriciels de tests dans un même projet. - - %{JS: 'tst_' + value('TestCaseName').toLowerCase() + '.' + Cpp.cxxSourceSuffix()} - Should not be translated, JS code. The file where it comes is autogenerated, so possibly a text field that should not be taken into account - %{JS: 'tst_' + value('TestCaseName').toLowerCase() + '.' + Cpp.cxxSourceSuffix()} - - - %{JS: 'tst_' + value('TestCaseName').toLowerCase() + '.qml'} - Should not be translated, JS code. The file where it comes is autogenerated, so possibly a text field that should not be taken into account - %{JS: 'tst_' + value('TestCaseName').toLowerCase() + '.qml'} - Test Information Information de test @@ -40525,10 +41104,6 @@ Pour développer une application complête, créer un projet Qt Quick Applicatio Branch: Branche : - - %{defaultDir} - %{repertoireParDefaut} - Directory: Répertoire : @@ -40557,6 +41132,26 @@ Pour développer une application complête, créer un projet Qt Quick Applicatio Checkout Checkout + + Creates a translation file that you can add to a Qt project. + Crée un fichier de traduction que vous pouvez ajouter au projet Qt. + + + Qt Translation File + Fichier de traduction Qt + + + 2.x + 2.x + + + 3.x + 3.x + + + Catch2 version: + Version de Catch2 : + Clones a Git repository and tries to load the contained project. Clone un dépôt Git et essaye de charger le projet contenu. @@ -40701,18 +41296,10 @@ Pour développer une application complête, créer un projet Qt Quick Applicatio This wizard generates a Qt Widgets Application project. The application derives by default from QApplication and includes an empty widget. Cet assistant génère un projet d’application Qt avec widgets. L’application dérive par défaut de QApplication et inclut un widget vide. - - %{JS: value('BaseClass') ? value('BaseClass').slice(1) : 'MyClass'} - %{JS: value('ClasseParent') ? value('ClasseParent').slice(1) : 'MaClasse'} - Generate form Générer le formulaire - - %{JS: Cpp.classToFileName(value('Class'), 'ui')} - %{JS: Cpp.classToFileName(value('Classe'), 'ui')} - Form file: Fichier d’interface : @@ -40741,18 +41328,6 @@ Pour développer une application complête, créer un projet Qt Quick Applicatio Plain C Application Application C simple - - %{JS: value('BaseCB') ? value('BaseCB').slice(1) : 'MyClass'} - %{JS: value('BaseCB') ? value('BaseCB').slice(1) : 'MaClasse'} - - - %{JS: Cpp.classToFileName(value('Class'), Util.preferredSuffix('text/x-python'))} - %{JS: Cpp.classToFileName(value('Classe'), Util.preferredSuffix('text/x-python'))} - - - %{JS: Util.fileName('%{ProjectName}', 'pyproject')} - %{JS: Util.fileName('%{NomDuProjet}', 'projetpy')} - Project file: Fichier du projet : @@ -40825,14 +41400,6 @@ Pour développer une application complête, créer un projet Qt Quick Applicatio Qt Console Application Application Qt en console - - This wizard creates a simple unit test project. - Cet assistant génère un projet de test unitaire simple. - - - Qt Test - Qt Test - Google Test Google Test @@ -40877,6 +41444,10 @@ Pour développer une application complête, créer un projet Qt Quick Applicatio Generate initialization and cleanup code Génère le code d’initialisation et de nettoyage + + Creates a project that you can open in Qt Design Studio + Crée un projet que vous pouvez ouvrir dans Qt Design Studio + Creates a project with a structure that is compatible both with Qt Design Studio (via .qmlproject) and with Qt Creator (via CMakeLists.txt). It contains a .ui.qml form that you can visually edit in Qt Design Studio. Génère un projet avec une structure compatible avec Qt Design Studio (via .qmlproject) et avec Qt Creator (via CMakeLists.txt). Le projet contient un formulaire .ui.qml qui peut être éditer visuellement dans Qt Design Studio. @@ -40889,6 +41460,10 @@ Pour développer une application complête, créer un projet Qt Quick Applicatio Qt 6.5 Qt 6.5 + + The minimum version of Qt you want to build the application for + La version minimale de Qt avec laquelle vous pouvez compiler l'application + 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. @@ -40917,6 +41492,62 @@ Preselects a desktop Qt for building the application if available. Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si disponible. + + This wizard creates a simple unit test project using Qt Test. + Cet assistant crée un projet simple de tests unitaires utilisant Qt Test. + + + Creates a new unit test project using Qt Test. Unit tests allow you to verify that the code is fit for use and that there are no regressions. + Crée un nouveau projet de tests unitaires utilisant Qt Test. Les tests unitaires vous permettent de vérifier si le code est prêt à être utilisé et s'il n'y a pas de régression. + + + Test Project + Projet de tests + + + Qt Test Project + Projet de tests Qt + + + This wizard creates a simple unit test project using Qt Quick Test. + Cet assistant crée un projet simple de tests unitaires utilisant Qt Quick Test. + + + Creates a new unit test project using Qt Quick Test. Unit tests allow you to verify that the code is fit for use and that there are no regressions. + Crée un nouveau projet de tests unitaires utilisant Qt Quick Test. Les tests unitaires vous permettent de vérifier si le code est prêt à être utilisé et s'il n'y a pas de régression. + + + Qt Quick Test Project + Projet de tests Qt Quick + + + This wizard creates a simple unit test project using Google Test. + Cet assistant crée un projet simple de tests unitaires utilisant Google Test. + + + Google Test (header only) + Google Test (fichiers d'en-tête seuls) + + + Google Test (shared libraries) + Google Test (bibliothèques partagées) + + + Googletest install directory (optional): + Répertoire d'installation de Google Test (optionnel) : + + + Creates a new unit test project using Google Test. Unit tests allow you to verify that the code is fit for use and that there are no regressions. + Crée un nouveau projet de tests unitaires utilisant Google Test. Les tests unitaires vous permettent de vérifier si le code est prêt à être utilisé et s'il n'y a pas de régression. + + + Google Test Project + Projet de tests Google + + + This wizard creates a simple unit test project using Boost. + Cet assistant crée un projet simple de tests unitaires utilisant Boost. + Boost Test (header only) Test Boost (entête seulement) @@ -40925,10 +41556,6 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Boost Test (shared libraries) Test Boost (bibliothèques partagées) - - Enable C++11 - Activer le C++11 - Googletest source directory (optional): Répertoire source de Googletest (optionnel) : @@ -40953,14 +41580,6 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Project and Test Information Projet et information des tests - - 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. - Génère un nouveau projet de test unitaire. Les tests unitaires permettent de vérifier que le code est utilisable et qu’il n’y a pas de régression. - - - Auto Test Project - Tester automatiquement le projet - Qt for Python module: Module de Qt pour Python : @@ -40969,10 +41588,6 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d You can choose Qt classes only if you select a Qt for Python module. Vous ne pouvez choisir des classes Qt que si vous sélectionnez un module Qt pour Python. - - %{BaseCB} - %{BaseCB} - Import QtCore Importer QtCore @@ -40985,10 +41600,6 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Import QtQuick Importer QtQuick - - %{JS: Util.fileName(value('Class'), Util.preferredSuffix('text/x-python'))} - %{JS: Util.fileName(value('Classe'), Util.preferredSuffix('text/x-python'))} - Creates new Python class file. Génère un nouveau fichier de classe Python. @@ -40997,6 +41608,42 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Python Python + + Creates a new unit test project using Boost. Unit tests allow you to verify that the code is fit for use and that there are no regressions. + Crée un nouveau projet de tests unitaires utilisant Boost. Les tests unitaires vous permettent de vérifier si le code est prêt à être utilisé et s'il n'y a pas de régression. + + + Boost Test Project + Projet de tests Boost + + + This wizard creates a simple unit test project using Catch2. + Cet assistant crée un projet simple de tests unitaires utilisant Catch2. + + + Catch2 v2 (header only) + Catch2 v2 (fichiers d'en-tête seuls) + + + Catch2 v3 (shared libraries) + Catch2 v3 (bibliothèques partagées) + + + Catch2 install directory (optional): + Répertoire d'installation de Catch2 (optionnel) : + + + Use own main + Utiliser votre propre fonction main + + + Creates a new unit test project using Catch2. Unit tests allow you to verify that the code is fit for use and that there are no regressions. + Crée un nouveau projet de tests unitaires utilisant Catch2. Les tests unitaires vous permettent de vérifier si le code est prêt à être utilisé et s'il n'y a pas de régression. + + + Catch2 Test Project + Projet de tests Catch2 + Python Class Classe Python @@ -41033,24 +41680,6 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Qt Qt - - Creates a project that you can open in Qt Design Studio. - Crée un projet qui peut être ouvert dans Qt Design Studio. - - - The minimum version of Qt you want to build the application for. - La version minimale de Qt pour laquelle vous voulez compiler votre application. - - - %{JS: Cpp.classToFileName(value('Class'), Cpp.cxxHeaderSuffix())} - Should not be translated, JS code. The file where it comes is autogenerated, so possibly a text field that should not be taken into account - %{JS: Cpp.classToFileName(value('Class'), Cpp.cxxHeaderSuffix())} - - - %{JS: Cpp.classToFileName(value('Class'), Cpp.cxxSourceSuffix())} - Should not be translated, JS code. The file where it comes is autogenerated, so possibly a text field that should not be taken into account - %{JS: Cpp.classToFileName(value('Class'), Cpp.cxxSourceSuffix())} - Qt Item Model Modèle d’élément Qt @@ -41071,14 +41700,6 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Include QMainWindow Inclure QMainWindow - - Include QDeclarativeItem - Qt Quick 1 - Inclure QDeclarativeItem - Qt Quick 1 - - - Include QQuickItem - Qt Quick 2 - Inclure QQuickItem - Qt Quick 2 - Include QSharedData Inclure QSharedData @@ -41099,6 +41720,10 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d C/C++ C/C++ + + Include QQuickItem + Inclure QQuickItem + C++ Class Classe C++ @@ -41107,16 +41732,6 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Creates a CMake-based test project for which a code snippet can be entered. Génère un projet de test fondé sur CMake pour lequel un extrait de code peut être saisi. - - int main(int argc, char *argv[]) -{ - return 0; -} - int main(int argc, char *argv[]) -{ - return 0; -} - QtCore QtCore @@ -41357,10 +41972,6 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Specify details about your custom Qt Creator plugin. Indiquer les détails de votre greffon pour Qt Creator personnalisé. - - %{JS: value('ProjectName').charAt(0).toUpperCase() + value('ProjectName').slice(1)} - %{JS: value('NomDuProjet').charAt(0).toUpperCase() + value('NomDuProjet').slice(1)} - MyCompany MonEntreprise @@ -41377,10 +41988,6 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l'application, si d Put a short description of your plugin here Indiquer ici une courte description de votre greffon - - https://www.%{JS: encodeURIComponent(value('VendorName').toLowerCase())}.com - https://www.%{JS: encodeURIComponent(value('NomDuVendeur').toLowerCase())}.com - URL: URL : @@ -41575,7 +42182,12 @@ The name of the build configuration created by default for a generic project. %1: Full path to main file. %1 is something like "Active project" - %1 : chemin complet ver le fichier main. + %1 : chemin complet vers le fichier principal. + + + %1: Full path to Project Directory. + %1 is something like "Active project" + %1 : chemin complet vers le répertoire du projet. %1: The name of the active kit. @@ -41642,6 +42254,14 @@ The name of the build configuration created by default for a generic project.&Configure Project &Configurer le projet + + Show All Kits + Afficher tous les kits + + + Hide Inactive Kits + Cacher les kits inactifs + Kit is unsuited for project Le kit n’est pas adapté au projet @@ -42042,6 +42662,11 @@ Activez cette option si vous envisagez de créer des binaires x86 32 bits sans u Stop running program. Arrêter l’exécution du programme. + + application-output-%1.txt + file name suggested for saving application output, %1 = run configuration display name + sortie-application-%1.txt + Word-wrap output Retour à la ligne automatique @@ -42779,6 +43404,22 @@ Activez cette option si vous envisagez de créer des binaires x86 32 bits sans u Type of the project's active build configuration Type de configuration de compilation active du projet + + No build device is set for the kit "%1". + Aucun périphérique de compilation n'est défini pour le kit « %1 ». + + + You can try mounting the folder in your device settings. + Vous pouvez essayer de monter le répertoire dans les paramètres du périphérique. + + + The build device "%1" cannot reach the project directory. + Le périphérique de compilation « %1 » ne peut accéder au répertoire du projet. + + + The build device "%1" cannot reach the build directory. + Le périphérique de compilation « %1 » ne peut accéder au répertoire de compilation. + Remove Name of the action triggering the removetaskhandler @@ -42912,18 +43553,6 @@ Activez cette option si vous envisagez de créer des binaires x86 32 bits sans u DebugBreakProcess failed: DebugBreakProcessus a échoué : - - %1 does not exist. If you built %2 yourself, check out https://code.qt.io/cgit/qt-creator/binary-artifacts.git/. - %1 n’existe pas. Si vous avez compilé %2 vous-même, consultez https://code.qt.io/cgit/qt-creator/binary-artifacts.git/. - - - Cannot start %1. Check src\tools\win64interrupt\win64interrupt.c for more information. - Impossible de démarrer %1. Vérifier src\tools\win64interrupt\win64interrupt.c pour plus d’information. - - - could not break the process. - Impossible d’interrompre le processus. - Import Build From... Importer la compilation depuis… @@ -43559,6 +44188,16 @@ au projet « %2 ». * Failed to parse "%1":%2:%3: %4 * Échec de l’analyse de « %1 »:%2:%3 : %4 + + * Did not find a JSON object in "%1". + + * N’a pas trouvé d’objet JSON dans « %1 ». + + + + JsonWizard: "%1" not found. + Assistant Json : « %1 » introuvable. + * Did not find a JSON object in "%1". * N’a pas trouvé d’objet JSON dans « %1 ». @@ -43567,10 +44206,6 @@ au projet « %2 ». * Configuration found and parsed. * La configuration a été trouvée et analysée. - - JsonWizard: "%1" not found - Assistant Json : « %1 » introuvable. - Page is not an object. La page n’est pas un objet. @@ -43943,6 +44578,14 @@ Que doit faire %1 maintenant ? Run as root user Exécuter en tant que super-utilisateur + + Emulator + Émulateur + + + Launcher: + Lanceur : + Interpreter Interpréteur @@ -44118,12 +44761,45 @@ Ces fichiers sont préservés. unavailable indisponible + + You can edit this configuration inside the .qtcreator/project.json file. + Vous pouvez modifier cette configuration dans le fichier .qtcreator/project.json. + + + Exclude from Project + Exclure du projet + + + Rescan Workspace + Ré-analyser l'espace de travail + QtC::Python - Install Python Packages - Installer les paquets Python + Update Requirements + Mettre à jour les paquets nécessaires + + + Install Requirements + Installer les paquets nécessaires + + + Update %1 + %1 = package name + Mettre à jour %1 + + + Install %1 + Installer %1 + + + Update Packages + Mettre à jour les paquets + + + Install Packages + Installer les paquets Running "%1" to install %2. @@ -44261,6 +44937,22 @@ Ces fichiers sont préservés. Install Python language server (PyLS) for %1 (%2). The language server provides Python specific completion and annotation. Installer le serveur de langages Python (PyLS) pour %1 (%2). Le serveur de langages fournit des complétions et des annotations spécifiques à Python. + + Update Python language server (PyLS) for %1 (%2). + Mettre à jour le serveur de langage Python (PyLS) pour %1 (%2). + + + Always Update + Toujours mettre à jour + + + Update + Mettre à jour + + + Never + Jamais + Unable to read "%1": The file is empty. Impossible de lire « %1 » : le fichier est vide. @@ -44828,8 +45520,8 @@ Les fichiers affectés sont : Périphérique « %1 » %2 - Qt Debug Bridge device %1 - Périphérique Qt Debug Bridge %1 + Boot to Qt device %1 + Périphérique Boot to Qt %1 Device detection error: %1 @@ -44875,10 +45567,6 @@ Les fichiers affectés sont : Starting QDB host server. Démarrage du serveur QDB hôte. - - Deploy to Boot2Qt target - Déployer la cible Boot2Qt - Starting command "%1" on device "%2". Démarrage de la commande « %1 » sur le périphérique « %2 ». @@ -44891,21 +45579,21 @@ Les fichiers affectés sont : Command failed on device "%1". Commande échouée sur le périphérique « %1 ». - - stdout was: "%1" - La sortie standard était : « %1 » - - - stderr was: "%1" - La sortie d'erreur était : « %1 » - Commands on device "%1" finished successfully. Les commandes sur le périphérique « %1 » se sont terminées avec succès. - Boot2Qt Device - Périphérique Boot2Qt + stdout was: "%1". + La sortie standard était : « %1 ». + + + stderr was: "%1". + La sortie d'erreur était : « %1 ». + + + Boot to Qt Device + Périphérique Boot to Qt Reboot Device @@ -44940,8 +45628,8 @@ Les fichiers affectés sont : Adresse du périphérique : - Boot2Qt Network Device Setup - Configuration du périphérique réseau Boot2Qt + Boot to Qt Network Device Setup + Configuration du périphérique réseau Boot to Qt Application set as the default one. @@ -44980,14 +45668,22 @@ Les fichiers affectés sont : Refers to Boot2Qt Flasher un périphérique Boot2Qt + + Deploy to Boot to Qt target + Déployer la cible Boot to Qt + Full command line: - Ligne de commande complête : + Ligne de commande complète : Executable on device: Exécutable sur le périphérique : + + Run on Boot to Qt Device + Exécuter sur le périphérique Boot to Qt + Remote path not set Chemin distant indéfini @@ -44997,12 +45693,8 @@ Les fichiers affectés sont : Exécutable sur l’hôte : - Run on Boot2Qt Device - Exécuter sur le périphérique Boot2Qt - - - The remote executable must be set in order to run on a Boot2Qt device. - L'exécutable distant doit être défini afin d'être exécuté sur un périphérique Boot2Qt. + The remote executable must be set to run on a Boot to Qt device. + L'exécutable distant doit être défini afin d'être exécuté sur un périphérique Boot to Qt. No device to stop the application on. @@ -45025,12 +45717,16 @@ Les fichiers affectés sont : Arrêter l'application en cours d'exécution - Boot2Qt: %1 - Boot2Qt : %1 + Boot to Qt: %1 + Boot to Qt : %1 QtC::QmakeProjectManager + + Unable to start "%1". + Impossible de démarrer « %1 ». + Qt Widgets Designer is not responding (%1). Qt Widgets Designer ne répond pas (%1). @@ -45039,10 +45735,6 @@ Les fichiers affectés sont : Unable to create server socket: %1 Impossible de créer le socket serveur : %1 - - Unable to start "%1" - Impossible de démarrer « %1 » - Could not load kits in a reasonable amount of time. Impossible de charger les kits dans le temps imparti. @@ -46386,6 +47078,10 @@ connaître une telle URI à l'éditeur QML. == and != perform type coercion, use === or !== to avoid it. == et != provoquent une coercition de type, utilisez === ou !== pour l’éviter. + + JavaScript can break the visual tooling in Qt Design Studio. + JavaScript peut casser les outils visuels dans Qt Design Studio. + Expression statements should be assignments, calls or delete expressions only. Les définitions d’expression devraient être des expression d’assignation, d’appel ou de suppression uniquement. @@ -46450,10 +47146,6 @@ Pour plus d'informations, allez à la documentation « Checking Code S Missing property "%1". Propriété « %1 » manquante. - - Imperative code is not supported in Qt Design Studio. - Le code impératif n'est pas supporté dans Qt Design Studio. - This type (%1) is not supported in Qt Design Studio. Le type (%1) n'est pas supporté dans Qt Design Studio. @@ -46844,18 +47536,6 @@ Veuillez compiler l’application qmldump à partir de la page d’options à pr Qt Creator Qt Creator - - Enable QML Language Server (EXPERIMENTAL!) - Activer le serveur de langage QML (EXPÉRIMENTAL !) - - - Use QML Language Server advanced features (renaming, find usages and co.) (EXPERIMENTAL!) - Utiliser les fonctionnalités avancées du langage de serveur QML (renommage, trouver les utilisations…) (EXPÉRIMENTAL !) - - - Use QML Language Server from latest Qt version - Utiliser le serveur de langage QML de la dernière version de Qt - QML Language Server Serveur de langage QML @@ -46864,6 +47544,26 @@ Veuillez compiler l’application qmldump à partir de la page d’options à pr Use customized static analyzer Utiliser l'analyseur statique personnalisé + + Turn on + Activer + + + Allow versions below Qt %1 + Permettre les versions Qt inférieures à %1 + + + Use advanced features (renaming, find usages, and so on) (experimental) + Utiliser les fonctionnalités avancées (renommage, trouver les utilisations, etc.) (expérimental) + + + Use from latest Qt version + Utiliser la dernière version de Qt + + + Create .qmlls.ini files for new projects + Créer des fichiers .qmlls.ini pour les nouveaux projets + Enabled Activé @@ -48212,12 +48912,12 @@ Qt Design Studio nécessite un projet fondé sur .qmlproject pour ouvrir le fich Définir comme le fichier .ui.qml principal - Failed to find valid build system - Impossible de trouver un système de construction valide + Cannot find a valid build system. + Impossible de trouver un système de compilation valide. - Failed to create valid build directory - Impossible de créer un répertoire de construction valide + Cannot create a valid build directory. + Impossible de créer un répertoire de compilation valide. Command: @@ -48240,13 +48940,21 @@ Qt Design Studio nécessite un projet fondé sur .qmlproject pour ouvrir le fich Vous ne pouvez pas utiliser le kit sélectionné pour prévisualiser les applications Qt pour MCU. - Failed to find valid Qt for MCUs kit - Impossible de trouver un kit Qt pour MCUs valide + Cannot find a valid Qt for MCUs kit. + Impossible de trouver un kit Qt pour MCUs valide. Qt for MCUs Deploy Step Étape de déploiement Qt pour MCUs + + Export Project + Exporter le projet + + + Enable Automatic CMake Generation + Activer la génération automatique de CMake + QtC::Qnx @@ -49367,10 +50075,6 @@ Le processus de contrôle n'a pas pu démarrer. Remote Linux Linux distant - - Failed: %1 - Échoué : %1 - Remote Linux Device Périphérique Linux distant @@ -49383,6 +50087,10 @@ Le processus de contrôle n'a pas pu démarrer. Can't send control signal to the %1 device. The device might have been disconnected. Impossible d'envoyer un signal de contrôle au périphérique %1. Le périphérique est peut-être déconnecté. + + Device "%1" is disconnected. + Le périphérique « %1 » est déconnecté. + Deploy Public Key... Déployer la clé publique… @@ -49420,20 +50128,21 @@ Le processus de contrôle n'a pas pu démarrer. Le binaire « sftp » « %1 » n'existe pas. - Creating directory: %1 + Created directory: "%1". - Création du répertoire : %1 + Le répertoire « %1 » a été créé. - Failed. - Échec. + Copied %1/%2: "%3" -> "%4". + + %1/%2 = progress in the form 4/15, %3 and %4 = source and target file paths + %1 sur %2 copiés : « %3 » -> « %4 ». + - Copying %1/%2: %3 -> %4 - - Copie %1/%2 : %3 -> %4 - + Failed to deploy files. + Échec de déploiement des fichiers. Device is considered unconnected. Re-run device test to reset state. @@ -49679,6 +50388,18 @@ Le processus de contrôle n'a pas pu démarrer. &SSH port: Port &SSH : + + Use SSH port forwarding for debugging + Utiliser le transfert du port SSH pour le débogage + + + Enable debugging on remote targes which cannot expose gdbserver ports. +The ssh tunneling is used to map the remote gdbserver port to localhost. +The local and remote ports are determined automatically. + Active le débogage de cibles distantes qui ne peuvent pas exposer de ports gdbserver. +Le tunnel SSH est utilisé pour faire correspondre le port gdbserveur à la machine locale. +Les ports local et distant sont déterminés automatiquement. + Free ports: Ports libres : @@ -49885,16 +50606,16 @@ Le processus de contrôle n'a pas pu démarrer. La méthode de transfert a été rétrogradée de « %1 » à « %2 ». Si cela est inattendu, veuillez refaire un test du périphérique « %3 ». - rsync failed to start: %1 - Démarrage de rsync échoué : %1 + %1 failed to start: %2 + %1 n'a pas pu démarrer : %2 - rsync crashed. - rsync a planté. + %1 crashed. + %1 a planté. - rsync failed with exit code %1. - rsync échoué avec le code de sortie : %1. + %1 failed with exit code %2. + %1 a échoué avec le code de sortie %2. Deploy files @@ -50206,6 +50927,10 @@ Le processus de contrôle n'a pas pu démarrer. Crop and Trim Rogner et tailler + + Cropping + Rognage + Crop and Trim... Rogner et tailler… @@ -52961,14 +53686,6 @@ Une valeur inférieure à 100 % peut entraîner un chevauchement et un mauvais a Word under the current document's text cursor. Mot sous le curseur de texte du document actuel. - - &Undo - Annu&ler - - - &Redo - &Refaire - Select Encoding... Choisir l’encodage… @@ -53029,6 +53746,10 @@ Une valeur inférieure à 100 % peut entraîner un chevauchement et un mauvais a Ctrl+Ins Ctrl+Ins + + Sort Lines + Trier les lignes + Fold Plier @@ -53137,10 +53858,6 @@ Une valeur inférieure à 100 % peut entraîner un chevauchement et un mauvais a Toggle &Fold All Activer/désactiver tout &plier - - Meta+0 - Meta+0 - Go to Block Start with Selection Sélectionner jusqu’au début du bloc @@ -53249,6 +53966,18 @@ Une valeur inférieure à 100 % peut entraîner un chevauchement et un mauvais a Open Call Hierarchy Ouvrir la hiérarchie d'appel + + Open Type Hierarchy + Ouvrir la hiérarchie de type + + + Meta+Shift+T + Meta+Maj+T + + + Ctrl+Shift+T + Ctrl+Maj+T + Move the View a Page Up and Keep the Cursor Position Déplacer la vue d’une page vers le haut et conserver la position du curseur @@ -53350,8 +54079,20 @@ Une valeur inférieure à 100 % peut entraîner un chevauchement et un mauvais a Meta+U - &Sort Lines - &Trier les lignes + Go to Previous Word (Camel Case) + Aller au mot précédent (Camel Case) + + + Go to Next Word (Camel Case) + Aller au mot suivant (Camel Case) + + + Go to Previous Word (Camel Case) with Selection + Sélectionner jusqu'au mot précédent (Camel Case) + + + Go to Next Word (Camel Case) with Selection + Sélectionner jusqu'au mot suivant (Camel Case) Ctrl+Shift+Alt+U @@ -53433,14 +54174,6 @@ Une valeur inférieure à 100 % peut entraîner un chevauchement et un mauvais a Go to Next Word Aller au mot suivant - - Go to Previous Word Camel Case - Aller au mot en Camel Case précédent - - - Go to Next Word Camel Case - Aller au mot en Camel Case suivant - Go to Line Start with Selection Sélectionner jusqu’au début de ligne @@ -53473,14 +54206,6 @@ Une valeur inférieure à 100 % peut entraîner un chevauchement et un mauvais a Go to Next Word with Selection Sélectionner jusqu’au mot suivant - - Go to Previous Word Camel Case with Selection - Sélectionner jusqu’au mot en Camel Case précédent - - - Go to Next Word Camel Case with Selection - Sélectionner jusqu’au mot en Camel Case suivant - <line>:<column> <ligne>:<colonne> @@ -55215,6 +55940,46 @@ Influence l’indentation des lignes de continuation. group:'QML' trigger:'NumberAnimation' avec les cibles + + QuickTest Test Case + group:'QML' trigger:'TestCase' + Cas de test QuickTest + + + GTest Function + group:'C++' trigger:'TEST' + Fonction GTest + + + GTest Fixture + group:'C++' trigger:'TEST_F' + Fixture GTest + + + GTest Parameterized + group:'C++' trigger:'TEST_P' + Test avec paramètres GTest + + + Test Case + group:'C++' trigger:'BOOST_AUTO_TEST_CASE' + Cas de test + + + Test Suite + group:'C++' trigger:'BOOST_AUTO_TEST_SUITE' + Suite de tests + + + Catch Test Case + group:'C++' trigger:'TEST_CASE' + Cas de test Catch + + + Catch Scenario + group:'C++' trigger:'SCENARIO' + Scénario Catch + with target group:'QML' trigger:'NumberAnimation' @@ -55381,6 +56146,18 @@ Influence l’indentation des lignes de continuation. JSON Editor Éditeur JSON + + Type Hierarchy + Hiérarchie de type + + + No type hierarchy available + Aucune hiérarchie de type disponible + + + Reloads the type hierarchy for the symbol under the cursor. + Recharge la hiérarchie de type pour le symbole sous le curseur. + QtC::Todo @@ -56190,6 +56967,10 @@ Les données de la trace sont perdues. createTempFile is not implemented for "%1". createTempFile n'est pas implémenté pour « %1 ». + + watch is not implemented. + L'observation n'est pas implémentée. + Refusing to remove the standard directory "%1". Refus de suppression du répertoire standard « %1 ». @@ -56412,6 +57193,14 @@ Les données de la trace sont perdues. No destination directory set. Aucun répertoire de destination défini. + + Failed to open output file. + Échec lors de l'ouverture du fichier. + + + Failed to write output file. + Échec lors de l'écriture du fichier. + Command failed. Échec de la commande. @@ -56440,8 +57229,8 @@ dans « %2 ». Désactiver - Leave at Default - Laisser par défaut + Default + Défaut Show %1 Column @@ -56463,22 +57252,6 @@ dans « %2 ». Edit Environment Modifier l’environnement - - Enter one environment variable per line. -To set or change a variable, use VARIABLE=VALUE. -To append to a variable, use VARIABLE+=VALUE. -To prepend to a variable, use VARIABLE=+VALUE. -Existing variables can be referenced in a VALUE with ${OTHER}. -To clear a variable, put its name on a line with nothing else on it. -To disable a variable, prefix the line with "#". - Saisir une variable d’environnement par ligne. -Pour définir ou modifier une variable, utiliser VARIABLE=VALEUR. -Pour ajouter une variable, utiliser VARIABLE+=VALEUR. -Pour ajouter une variable à l’avance, utiliser VARIABLE=+VALUE. -Les variables existantes peuvent être référencées dans une VALEUR avec ${AUTRE}. -Pour effacer une variable, placez son nom sur une ligne sans rien d’autre. -Pour désactiver une variable, préfixer la ligne par « # ». - %1 on %2 File on device @@ -56646,6 +57419,24 @@ Pour désactiver une variable, préfixer la ligne par « # ».Minimize Minimiser + + Enter one environment variable per line. +To set or change a variable, use VARIABLE=VALUE. +To disable a variable, prefix this line with "#". +To append to a variable, use VARIABLE+=VALUE. +To prepend to a variable, use VARIABLE=+VALUE. +Existing variables can be referenced in a VALUE with ${OTHER}. +To clear a variable, put its name on a line with nothing else on it. +Lines starting with "##" will be treated as comments. + Saisissez une variable d'environnement par ligne. +Pour définir ou changer une variable, utilisez VARIABLE=VALEUR. +Pour désactiver une variable, préfixez la ligne avec le caractère « # ». +Pour suffixer une variable, utilisez VARIABLE+=VALEUR. +Pour préfixer une variable, utilisez VARIABLE=+VALEUR. +Les variables existantes peuvent être référencées dans une VALEUR avec ${OTHER}. +Pour effacer une variable, placez son nom sur une ligne avec rien d'autre sur celle-ci. +Les lignes débutant avec « ### » seront traitées comme commentaires. + &OK &OK @@ -56834,6 +57625,10 @@ Pour désactiver une variable, préfixer la ligne par « # ».Could not find any shell. Impossible de trouver un shell. + + No Lua interface set + Aucune interface Lua n'est définie + QtC::Valgrind @@ -58104,10 +58899,6 @@ Vérifiez les paramètres pour vous assurer que Valgrind est installé et dispon Open "%1" Ouvrir « %1 » - - Clear - Effacer - Running: %1 Exécution de : %1 @@ -58118,7 +58909,7 @@ Vérifiez les paramètres pour vous assurer que Valgrind est installé et dispon The directory %1 could not be deleted. - Le répertoire %1 ne peut pas être supprimer. + Le répertoire %1 ne peut pas être supprimé. The file %1 could not be deleted. @@ -58921,6 +59712,10 @@ Pour en savoir plus sur les contrôles mis en évidence, voir l’<a style=&q Center Horizontally Centrer horizontalement + + Open Linked File + Ouvrir le fichier lié + Align Bottom Aligner en bas @@ -58957,10 +59752,6 @@ Pour en savoir plus sur les contrôles mis en évidence, voir l’<a style=&q Equal Vertical Space Espace vertical identique - - Add Related Elements - Ajouter éléments connexes - New Package Nouveau paquet @@ -59037,6 +59828,34 @@ Pour en savoir plus sur les contrôles mis en évidence, voir l’<a style=&q [unnamed] [sans nom] + + Reset + Réinitialiser + + + Relations + Relations + + + Diagram Elements + Éléments diagrammes + + + Clear + Effacer + + + View + Vue + + + Filter + Filtre + + + Type: + Type : + Stereotypes: Stéréotypes : @@ -59304,6 +60123,14 @@ Membres : Shape: Forme : + + Warning + Avertissement + + + Error + Erreur + Intermediate points: Points intermédiaires : @@ -59400,6 +60227,30 @@ Membres : Relocate Relation Déplacer relation + + Relation Attributes + Relation d'attributs + + + Type + Type + + + Direction + Direction + + + Stereotypes + Stéréotypes + + + Other Element Attributes + Autres attributs d'élément + + + Number of matching elements: + Nombre d'éléments correspondants : + RadioButtonSpecifics @@ -59670,10 +60521,26 @@ définit dans la taille de pas. Row spacing Espacement des lignes + + Sets the space between the items in pixels in the <b>Row Layout</b>. + Définit l'espacement en pixels entre les éléments de l'<b>agencement en ligne</b>. + Layout direction Direction du layout + + Sets the direction of the item flow in the <b>Row Layout</b>. + Définit la direction du flux des éléments dans l'<b>agencement en ligne</b>. + + + Uniform cell size + Taille de cellules uniforme + + + Toggles all cells to have a uniform size. + Active/désactive une taille commune pour toutes les cellules. + RowSpecifics @@ -59713,16 +60580,20 @@ définit dans la taille de pas. Le nom contient des caractères invalides. - Name must start with a capital letter - Le nom doit commencer par une lettre majuscule + Name must start with a capital letter. + Le nom doit commencer par une lettre majuscule. - Name must have at least 3 characters - Le nom doit contenir au moins trois caractères + Name must have at least 3 characters. + Le nom doit contenir au moins trois caractères. - Name cannot contain white space - Le nom ne peut pas contenir d'espace + Name cannot contain white space. + Le nom ne peut pas contenir d'espace. + + + Name is already taken. + Le nom est déjà pris. Save @@ -59884,6 +60755,18 @@ Elle est utilisée pour calculer la taille totale implicite. Active/désactive la visibilité des icônes, telle que l'icône de caméra ou l'icône des lumières. + + ShowLookAtAction + + Show Look-at + où la caméra pointe/direction + Afficher la direction du regard + + + Toggle the visibility of the edit camera look-at indicator. + Active/désactive l'indicateur pour modifier la direction de la caméra. + + ShowParticleEmitterAction @@ -60324,6 +61207,10 @@ atteint le début ou la fin. Current index Indice actuel + + Sets the index of the child item currently visible in the <b>Stack Layout</b>. + Définit l'index de l'élément enfant actuellement visible dans l'<b>agencement en pile</b>. + StackViewSpecifics @@ -60716,6 +61603,13 @@ atteint le début ou la fin. Dark + + SubComponentManager::parseDirectory + + Invalid meta info + Métadonnées invalides + + SwipeViewSpecifics @@ -61602,18 +62496,18 @@ début ou la fin. - UnimportBundleMaterialDialog + UnimportBundleItemDialog - Bundle material might be in use - Le matériau embarqué est peut-être en cours d'utilisation + Bundle %1 might be in use + Le bundle %1 est peut-être en cours d'utilisation If the %1 you are removing is in use, it might cause the project to malfunction. -Are you sure you want to remove the %1? - Si en cours d'utilisation, la suppression de %1 peut entraîner à un dysfonctionnement du projet. +Are you sure you want to remove it? + Si le bundle %1 que vous souhaitez supprimer est utilisé, cela peut provoquer un dysfonctionnement du projet. -Voulez-vous vraiment supprimer %1 ? +Voulez-vous vraiment le supprimer ? Remove @@ -61737,6 +62631,21 @@ Voulez-vous vraiment supprimer %1 ? Qt Design Studio + + WidgetPluginManager + + Failed to create instance of file "%1": %2 + Impossible de créer une instance à partir du fichier « %1 » : %2 + + + Failed to create instance of file "%1". + Impossible de créer une instance à partir du fichier « %1 ». + + + File "%1" is not a Qt Quick Designer plugin. + Le fichier « %1 » n'est pas un greffon Qt Quick Designer. + + WindowSpecifics From bef8cf703dd6c129f32a63c3f60c103cb4523d2d Mon Sep 17 00:00:00 2001 From: Cristian Adam Date: Tue, 16 Jul 2024 19:58:20 +0200 Subject: [PATCH 45/77] CMakePM: Mark CMake presets registered toolchains as Manual By default are marked as Autodetected, which is not the case for CMake presets. Fixes: QTCREATORBUG-31255 Change-Id: I5c3da7c6e7c68a8a2e80e415393010121b33efb4 Reviewed-by: Alessandro Portale --- src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp index d3f1f07ed19..ede77f38a46 100644 --- a/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp +++ b/src/plugins/cmakeprojectmanager/cmakeprojectimporter.cpp @@ -1168,6 +1168,10 @@ Kit *CMakeProjectImporter::createKit(void *directoryData) const if (!cmtcd.originalTargetTriple.isEmpty()) toolchain->setExplicitCodeModelTargetTriple(cmtcd.originalTargetTriple); + // Mark CMake presets toolchains as manual + if (!data->cmakePresetDisplayname.isEmpty() && tcd.areTemporary) + toolchain->setDetection(Toolchain::ManualDetection); + ToolchainKitAspect::setToolchain(k, toolchain); } From 2db96fcbca3b961a14d3601838afcb6ba41082da Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Thu, 11 Jul 2024 12:35:11 +0200 Subject: [PATCH 46/77] Android: Be more verbose on installQASIPackage() Change-Id: I661b94114e912087b1fd8d15db7cd86088a4749e Reviewed-by: Alessandro Portale --- src/plugins/android/androidmanager.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index dac4eb3c8e4..f1841898955 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -606,7 +606,16 @@ void installQASIPackage(Target *target, const FilePath &packagePath) Process *process = startAdbProcess(arguments, &error); if (process) { // TODO: Potential leak when the process is still running on Creator shutdown. - QObject::connect(process, &Process::done, process, &QObject::deleteLater); + QObject::connect(process, &Process::done, target, [process] { + if (process->result() == ProcessResult::FinishedWithSuccess) { + MessageManager::writeSilently( + Tr::tr("Android package installation finished with success.")); + } else { + MessageManager::writeDisrupting(Tr::tr("Android package installation failed.") + + '\n' + process->cleanedStdErr()); + } + process->deleteLater(); + }); } else { MessageManager::writeDisrupting( Tr::tr("Android package installation failed.\n%1").arg(error)); From 2b620aca7e7253cd805f31b9f4dcb187147a8915 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Thu, 11 Jul 2024 12:07:00 +0200 Subject: [PATCH 47/77] Android: Fix installQASIPackage() command Currently the installation always fails with the following message on std err: No argument expected after "-r ". Removing the space after the -r arg seems to fix the issue and process finishes with success. Change-Id: I035442da0168580939f9b851554e8ec96713f99e Reviewed-by: Alessandro Portale --- src/plugins/android/androidmanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index f1841898955..47452057d0c 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -601,7 +601,7 @@ void installQASIPackage(Target *target, const FilePath &packagePath) } QStringList arguments = AndroidDeviceInfo::adbSelector(deviceSerialNumber); - arguments << "install" << "-r " << packagePath.path(); + arguments << "install" << "-r" << packagePath.path(); QString error; Process *process = startAdbProcess(arguments, &error); if (process) { From 77fa73c5244c39cc1bcde7834ac7eb67bc90ec71 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Thu, 11 Jul 2024 12:28:23 +0200 Subject: [PATCH 48/77] Android: Fix potential process leak Make process a child of Target. Change-Id: If77a54120044829b6551cd0f6446e3edffa28558 Reviewed-by: Alessandro Portale --- src/plugins/android/androidmanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/android/androidmanager.cpp b/src/plugins/android/androidmanager.cpp index 47452057d0c..86a5de3854e 100644 --- a/src/plugins/android/androidmanager.cpp +++ b/src/plugins/android/androidmanager.cpp @@ -605,7 +605,7 @@ void installQASIPackage(Target *target, const FilePath &packagePath) QString error; Process *process = startAdbProcess(arguments, &error); if (process) { - // TODO: Potential leak when the process is still running on Creator shutdown. + process->setParent(target); QObject::connect(process, &Process::done, target, [process] { if (process->result() == ProcessResult::FinishedWithSuccess) { MessageManager::writeSilently( From eca1fa3b2fd0a93b01418b462642c5ada6fdb9f0 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Thu, 11 Jul 2024 15:52:28 +0200 Subject: [PATCH 49/77] Android: Fix a crash on Creator shutdown during app startup The AndroidRunnerWorker lives in a separate thread created by AndroidRunner. Thus, we can't delete it directly from the AndroidRunner's d'tor. Instead, we connect to QThread's finished() signal and delete the worker later. Make m_pidRunner a child of AndroidRunnerWorker so that it's moved together with its parent to the other thread. Change-Id: I5c3723315ee5183fa8451f0706311b14f173dca1 Reviewed-by: Alessandro Portale --- src/plugins/android/androidrunner.cpp | 19 ++++++++++--------- src/plugins/android/androidrunner.h | 2 +- src/plugins/android/androidrunnerworker.cpp | 1 + 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/plugins/android/androidrunner.cpp b/src/plugins/android/androidrunner.cpp index 260bef647f5..904b7c71762 100644 --- a/src/plugins/android/androidrunner.cpp +++ b/src/plugins/android/androidrunner.cpp @@ -54,23 +54,24 @@ AndroidRunner::AndroidRunner(RunControl *runControl, const QString &intentName) const int apiLevel = AndroidManager::deviceApiLevel(m_target); qCDebug(androidRunnerLog) << "Device API:" << apiLevel; - m_worker.reset(new AndroidRunnerWorker(this, m_packageName)); + m_worker = new AndroidRunnerWorker(this, m_packageName); m_worker->setIntentName(intent); m_worker->setIsPreNougat(apiLevel <= 23); m_worker->moveToThread(&m_thread); + QObject::connect(&m_thread, &QThread::finished, m_worker, &QObject::deleteLater); - connect(this, &AndroidRunner::asyncStart, m_worker.data(), &AndroidRunnerWorker::asyncStart); - connect(this, &AndroidRunner::asyncStop, m_worker.data(), &AndroidRunnerWorker::asyncStop); + connect(this, &AndroidRunner::asyncStart, m_worker, &AndroidRunnerWorker::asyncStart); + connect(this, &AndroidRunner::asyncStop, m_worker, &AndroidRunnerWorker::asyncStop); connect(this, &AndroidRunner::androidDeviceInfoChanged, - m_worker.data(), &AndroidRunnerWorker::setAndroidDeviceInfo); - connect(m_worker.data(), &AndroidRunnerWorker::remoteProcessStarted, + m_worker, &AndroidRunnerWorker::setAndroidDeviceInfo); + + connect(m_worker, &AndroidRunnerWorker::remoteProcessStarted, this, &AndroidRunner::handleRemoteProcessStarted); - connect(m_worker.data(), &AndroidRunnerWorker::remoteProcessFinished, + connect(m_worker, &AndroidRunnerWorker::remoteProcessFinished, this, &AndroidRunner::handleRemoteProcessFinished); - connect(m_worker.data(), &AndroidRunnerWorker::remoteOutput, - this, &AndroidRunner::remoteOutput); - connect(m_worker.data(), &AndroidRunnerWorker::remoteErrorOutput, + connect(m_worker, &AndroidRunnerWorker::remoteOutput, this, &AndroidRunner::remoteOutput); + connect(m_worker, &AndroidRunnerWorker::remoteErrorOutput, this, &AndroidRunner::remoteErrorOutput); connect(&m_outputParser, &QmlDebug::QmlOutputParser::waitingForConnectionOnPort, diff --git a/src/plugins/android/androidrunner.h b/src/plugins/android/androidrunner.h index 6b15d8fff44..856ad314c1c 100644 --- a/src/plugins/android/androidrunner.h +++ b/src/plugins/android/androidrunner.h @@ -56,7 +56,7 @@ private: QString m_launchedAVDName; QThread m_thread; QTimer m_checkAVDTimer; - QScopedPointer m_worker; + AndroidRunnerWorker *m_worker = nullptr; QPointer m_target; Utils::Port m_debugServerPort; QUrl m_qmlServer; diff --git a/src/plugins/android/androidrunnerworker.cpp b/src/plugins/android/androidrunnerworker.cpp index 9befaba742a..095c6e99e84 100644 --- a/src/plugins/android/androidrunnerworker.cpp +++ b/src/plugins/android/androidrunnerworker.cpp @@ -203,6 +203,7 @@ AndroidRunnerWorker::AndroidRunnerWorker(RunWorker *runner, const QString &packa QtSupport::QtVersion *version = QtSupport::QtKitAspect::qtVersion(target->kit()); m_useAppParamsForQmlDebugger = version->qtVersion() >= QVersionNumber(5, 12); + m_pidRunner.setParent(this); // Move m_pidRunner object together with *this into a separate thread. } AndroidRunnerWorker::~AndroidRunnerWorker() From 63c48e01998a30e63b73621cf1d648a0dcc7572b Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Wed, 17 Jul 2024 12:11:55 +0200 Subject: [PATCH 50/77] Doc: Update sceenshot of CTF Vizualizer Timeline To use the new yellow numbers. Change the order of numbers to make them easier to find. Change-Id: Ibf31238e990e295cf2bfadd062c9ac62f2575a27 Reviewed-by: Eike Ziller --- .../qtcreator-ctf-visualizer-timeline.png | Bin 35155 -> 0 bytes .../qtcreator-ctf-visualizer-timeline.webp | Bin 0 -> 18198 bytes .../src/analyze/creator-ctf-visualizer.qdoc | 22 +++++++++--------- 3 files changed, 11 insertions(+), 11 deletions(-) delete mode 100644 doc/qtcreator/images/qtcreator-ctf-visualizer-timeline.png create mode 100644 doc/qtcreator/images/qtcreator-ctf-visualizer-timeline.webp diff --git a/doc/qtcreator/images/qtcreator-ctf-visualizer-timeline.png b/doc/qtcreator/images/qtcreator-ctf-visualizer-timeline.png deleted file mode 100644 index a64c7f47e5297546c75dd26ba805e64eb0384bdf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35155 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%0D&x;+@un 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

    y&R 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 literal 0 HcmV?d00001 diff --git a/doc/qtcreator/src/analyze/creator-ctf-visualizer.qdoc b/doc/qtcreator/src/analyze/creator-ctf-visualizer.qdoc index 8f02ee0607e..473bea2bd8a 100644 --- a/doc/qtcreator/src/analyze/creator-ctf-visualizer.qdoc +++ b/doc/qtcreator/src/analyze/creator-ctf-visualizer.qdoc @@ -60,32 +60,32 @@ The \uicontrol Timeline view displays a graphical representation of trace events and a condensed view of all recorded events. - \image qtcreator-ctf-visualizer-timeline.png "Chrome Trace Format Visualizer" + \image qtcreator-ctf-visualizer-timeline.webp {Timeline view} Each category in the timeline describes a thread in the application. Move - the cursor on an event (1) on a row to view its duration and event category. + the cursor on an event (5) on a row to view its duration and event category. To display the information only when an event is selected, disable the - \uicontrol {View Event Information on Mouseover} button (2). + \uicontrol {View Event Information on Mouseover} button (4). - The outline (3) summarizes the period for which data was collected. Drag - the zoom range (4) or click the outline to move on the outline. To move + The outline (10) summarizes the period for which data was collected. Drag + the zoom range (8) or click the outline to move on the outline. To move between events, select the \uicontrol {Jump to Previous Event} and - \uicontrol {Jump to Next Event} buttons (5). + \uicontrol {Jump to Next Event} buttons (1). - Select the \uicontrol {Show Zoom Slider} button (6) to open a slider that - you can use to set the zoom level. You can also drag the zoom handles (7). + Select the \uicontrol {Show Zoom Slider} button (2) to open a slider that + you can use to set the zoom level. You can also drag the zoom handles (9). To reset the default zoom level, right-click the timeline to open the context menu, and select \uicontrol {Reset Zoom}. Select the \inlineimage icons/filtericon.png - (\uicontrol {Restrict to Threads}) button (10) to select the threads to + (\uicontrol {Restrict to Threads}) button (6) to select the threads to show. \section2 Selecting Event Ranges - You can select an event range (8) to view the time it represents or to zoom + You can select an event range (7) to view the time it represents or to zoom into a specific region of the trace. Select the \uicontrol {Select Range} - button (9) to activate the selection tool. Then click in the timeline to + button (3) to activate the selection tool. Then click in the timeline to specify the beginning of the event range. Drag the selection handle to define the end of the range. From 3bb3fbd6984bd11b662aef79083aa1bed0b5015c Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 16 Jul 2024 17:26:29 +0200 Subject: [PATCH 51/77] Doc: Add Python Window UI tutorial to the sidebar TOC Change-Id: I7550d0e388d08e5ded3baa2d87089f98d6c3b62f Reviewed-by: Eike Ziller --- doc/qtcreator/config/style/qt5-sidebar.html | 1 + 1 file changed, 1 insertion(+) diff --git a/doc/qtcreator/config/style/qt5-sidebar.html b/doc/qtcreator/config/style/qt5-sidebar.html index 5977847f100..c5c9f62c161 100644 --- a/doc/qtcreator/config/style/qt5-sidebar.html +++ b/doc/qtcreator/config/style/qt5-sidebar.html @@ -38,6 +38,7 @@

  • Qt Quick debugging
  • Qt Widgets and Python
  • Qt Widgets application
  • +
  • Qt Widgets UI and Python
  • Use internal libraries with qmake
  • Tutorials
  • From bb2ad2d73f6f48f1675896fc90282efd6ce193e8 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Tue, 16 Jul 2024 13:48:46 +0200 Subject: [PATCH 52/77] Doc: Add topics to more groups Change-Id: I4c6c7faad4220a7be8c0539aa55008ed79731a8b Reviewed-by: Eike Ziller --- .../src/projects/creator-only/creator-how-to-add-wizards.qdoc | 1 + doc/qtcreator/src/vcs/creator-only/creator-vcs.qdoc | 1 + 2 files changed, 2 insertions(+) diff --git a/doc/qtcreator/src/projects/creator-only/creator-how-to-add-wizards.qdoc b/doc/qtcreator/src/projects/creator-only/creator-how-to-add-wizards.qdoc index e6cb582b9bc..60cc8f4d7e0 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-how-to-add-wizards.qdoc +++ b/doc/qtcreator/src/projects/creator-only/creator-how-to-add-wizards.qdoc @@ -6,6 +6,7 @@ \previouspage creator-how-tos.html \ingroup creator-how-to-projects-create + \ingroup creator-how-to-projects-files \title Add wizards diff --git a/doc/qtcreator/src/vcs/creator-only/creator-vcs.qdoc b/doc/qtcreator/src/vcs/creator-only/creator-vcs.qdoc index c0c8386911f..810b8f79b0f 100644 --- a/doc/qtcreator/src/vcs/creator-only/creator-vcs.qdoc +++ b/doc/qtcreator/src/vcs/creator-only/creator-vcs.qdoc @@ -79,6 +79,7 @@ \previouspage creator-how-tos.html \ingroup creator-how-to-projects-create + \ingroup creator-how-to-projects-configure \title Create VCS repositories for new projects From b160b367d1ad7bf01d48e2df4240993545d3a0e5 Mon Sep 17 00:00:00 2001 From: Leena Miettinen Date: Thu, 18 Jul 2024 10:27:57 +0200 Subject: [PATCH 53/77] Doc: Fix QDoc warnings in Extending Qt Creator Manual Change-Id: I278ae2338427a7d65253d579d0a1ff7d53245c45 Reviewed-by: hjk --- doc/qtcreatordev/src/qtcreator-ui-text.qdoc | 2 +- src/libs/utils/filepath.cpp | 4 ++-- src/libs/utils/layoutbuilder.cpp | 4 ++-- src/plugins/coreplugin/icore.cpp | 6 +++--- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/qtcreatordev/src/qtcreator-ui-text.qdoc b/doc/qtcreatordev/src/qtcreator-ui-text.qdoc index e76ad238e23..43a61dc1505 100644 --- a/doc/qtcreatordev/src/qtcreator-ui-text.qdoc +++ b/doc/qtcreatordev/src/qtcreator-ui-text.qdoc @@ -474,7 +474,7 @@ \li Mode \li Modes correspond to complete screens of controls, specialized for a task. - \image qtcreator-mode-selector.png {Mode selector} + \image qtcreator-mode-selector.webp {Mode selector} \li You can add a mode for a new type of editor, for example. Use descriptive, but short mode names. They have to fit in the \uicontrol {Mode selector}. diff --git a/src/libs/utils/filepath.cpp b/src/libs/utils/filepath.cpp index 23a6ff24129..7aa31822582 100644 --- a/src/libs/utils/filepath.cpp +++ b/src/libs/utils/filepath.cpp @@ -304,9 +304,9 @@ bool FilePath::equals(const FilePath &first, const FilePath &second, Qt::CaseSen } /*! - * Returns true if the two file paths compare equal case-sensitively. + * Returns \c true if this file path compares equal to \a other case-sensitively. * This is relevant on semi-case sensitive systems like Windows with NTFS. - * @see QTCREATORBUG-30846 + * \sa {https://bugreports.qt.io/browse/QTCREATORBUG-30846}{QTCREATORBUG-30846} */ bool FilePath::equalsCaseSensitive(const FilePath &other) const { diff --git a/src/libs/utils/layoutbuilder.cpp b/src/libs/utils/layoutbuilder.cpp index 6f33e4f5ca4..6893205e4ba 100644 --- a/src/libs/utils/layoutbuilder.cpp +++ b/src/libs/utils/layoutbuilder.cpp @@ -362,7 +362,7 @@ void Layout::setContentsMargins(int left, int top, int right, int bottom) } /*! - Attaches the constructed layout to the provided QWidget \a w. + Attaches the constructed layout to the provided QWidget \a widget. This operation can only be performed once per LayoutBuilder instance. */ @@ -373,7 +373,7 @@ void Layout::attachTo(QWidget *widget) } /*! - Adds the layout item \a item as sub items. + Adds the layout item \a item as a sub item. */ void Layout::addItem(I item) { diff --git a/src/plugins/coreplugin/icore.cpp b/src/plugins/coreplugin/icore.cpp index 83a0cb3cdc4..0451144a0df 100644 --- a/src/plugins/coreplugin/icore.cpp +++ b/src/plugins/coreplugin/icore.cpp @@ -851,7 +851,7 @@ QList ICore::currentContextObjects() Returns the widget of the top level IContext of the current context, or \c nullptr if there is none. - \sa currentContextObject() + \sa currentContextObjects() */ QWidget *ICore::currentContextWidget() { @@ -2300,7 +2300,7 @@ QList ICore::contextObjects(QWidget *widget) \sa removeContextObject() \sa updateAdditionalContexts() - \sa currentContextObject() + \sa currentContextObjects() \sa {The Action Manager and Commands} */ @@ -2319,7 +2319,7 @@ void ICore::addContextObject(IContext *context) \sa addContextObject() \sa updateAdditionalContexts() - \sa currentContextObject() + \sa currentContextObjects() */ void ICore::removeContextObject(IContext *context) From 1525f64b9aed58f56455dabb4145c964d40190c2 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Thu, 18 Jul 2024 18:03:11 +0200 Subject: [PATCH 54/77] Android: Fix asserts triggered on app startup The QVariant values of Store map are apparently of QStringList type, not QString. This fixes the following asserts triggered on every startup: "sd.first().typeId() == QMetaType::QString". Change-Id: I84eb6a942503632d047939b138727c75e9e7037e Reviewed-by: Alessandro Portale --- src/plugins/android/androidrunnerworker.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/plugins/android/androidrunnerworker.cpp b/src/plugins/android/androidrunnerworker.cpp index 095c6e99e84..a764167f365 100644 --- a/src/plugins/android/androidrunnerworker.cpp +++ b/src/plugins/android/androidrunnerworker.cpp @@ -171,24 +171,26 @@ AndroidRunnerWorker::AndroidRunnerWorker(RunWorker *runner, const QString &packa m_extraAppParams = runControl->commandLine().arguments(); if (const Store sd = runControl->settingsData(Constants::ANDROID_AM_START_ARGS); - !sd.values().isEmpty()) { + !sd.isEmpty()) { QTC_CHECK(sd.first().typeId() == QMetaType::QString); const QString startArgs = sd.first().toString(); m_amStartExtraArgs = ProcessArgs::splitArgs(startArgs, OsTypeOtherUnix); } if (const Store sd = runControl->settingsData(Constants::ANDROID_PRESTARTSHELLCMDLIST); - !sd.values().isEmpty()) { - QTC_CHECK(sd.first().typeId() == QMetaType::QString); - const QStringList commands = sd.first().toString().split('\n', Qt::SkipEmptyParts); + !sd.isEmpty()) { + const QVariant &first = sd.first(); + QTC_CHECK(first.typeId() == QMetaType::QStringList); + const QStringList commands = first.toStringList(); for (const QString &shellCmd : commands) m_beforeStartAdbCommands.append(QString("shell %1").arg(shellCmd)); } if (const Store sd = runControl->settingsData(Constants::ANDROID_POSTFINISHSHELLCMDLIST); - !sd.values().isEmpty()) { - QTC_CHECK(sd.first().typeId() == QMetaType::QString); - const QStringList commands = sd.first().toString().split('\n', Qt::SkipEmptyParts); + !sd.isEmpty()) { + const QVariant &first = sd.first(); + QTC_CHECK(first.typeId() == QMetaType::QStringList); + const QStringList commands = first.toStringList(); for (const QString &shellCmd : commands) m_afterFinishAdbCommands.append(QString("shell %1").arg(shellCmd)); } From 2970b6c85ecd0458cefc613df15bec6a5c3456ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Thu, 18 Jul 2024 22:13:24 +0200 Subject: [PATCH 55/77] SquishTests: Use newest Kit in tst_designer_edit The old MinGW can't compile the used project anymore. Even configuring already fails. Testing compatibility with old Qt versions and compilers isn't the purpose of this test, so it can simply move to newer ones. Change-Id: Ie21a5a726c33b4073f2aa4d955e2e5ea943bf9bc Reviewed-by: Christian Stenger --- tests/system/suite_tools/tst_designer_edit/test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/system/suite_tools/tst_designer_edit/test.py b/tests/system/suite_tools/tst_designer_edit/test.py index 96e289df885..68afd344dee 100644 --- a/tests/system/suite_tools/tst_designer_edit/test.py +++ b/tests/system/suite_tools/tst_designer_edit/test.py @@ -167,7 +167,7 @@ def main(): startQC() if not startedWithoutPluginError(): return - createProject_Qt_GUI(tempDir(), "DesignerTestApp", False) + createProject_Qt_GUI(tempDir(), "DesignerTestApp", False, targets=[Targets.DESKTOP_6_2_4]) selectFromLocator("mainwindow.ui") replaceEditorContent(waitForObject("{container=':*Qt Creator.Widget Box_QDockWidget' " "type='QLineEdit' visible='1'}"), "combo") From a5b2c648bc9207813bb23122b1a58ae4311a2966 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Thu, 18 Jul 2024 23:49:40 +0200 Subject: [PATCH 56/77] SquishTests: Update expected page title in WELP04 Change-Id: Ib0a78b9b7aacbf5cf76d3a402e62239239592248 Reviewed-by: Christian Stenger --- tests/system/suite_WELP/tst_WELP04/test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/system/suite_WELP/tst_WELP04/test.py b/tests/system/suite_WELP/tst_WELP04/test.py index 6ccf2f0d3ac..21b4b515bbf 100644 --- a/tests/system/suite_WELP/tst_WELP04/test.py +++ b/tests/system/suite_WELP/tst_WELP04/test.py @@ -43,7 +43,7 @@ def main(): progressBarWait(warn=False) # select a text tutorial mouseClick(waitForObjectItem(listView, str(tutorial.text))) - test.verify("Building and Running an Example" in + test.verify("Tutorial: Build and run" in str(waitForObject(":Help Widget_Help::Internal::HelpWidget").windowTitle), "Verifying: The tutorial is opened inside Help.") # close help widget again to avoid focus issues From 8a060b285a8a50d29fe18d7179fa29b63565afe2 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Wed, 17 Jul 2024 14:15:40 +0200 Subject: [PATCH 57/77] Fix in-wizard translation support We in principle support a map of locale->string for keys starting with "tr" like "trDisplayName". This didn't work everywhere. We may not cast the value for these keys to QString before passing it to `localizedString`, since that would result in an empty string if the value is such a map. Also fix the documentation since we remove all parts from '_' (to also get rid of encoding parts). Fixes: QTCREATORBUG-23575 Change-Id: I2be795053e645c8bf81417d0db69cd7e63eff022 Reviewed-by: Christian Stenger --- .../creator-projects-custom-wizards-json.qdocinc | 4 ++-- .../projectexplorer/jsonwizard/jsonfieldpage.cpp | 13 +++++++------ .../jsonwizard/jsonwizardfactory.cpp | 7 +++---- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc b/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc index f2d8d254249..d6b714bb7c7 100644 --- a/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc +++ b/doc/qtcreator/src/projects/creator-only/creator-projects-custom-wizards-json.qdocinc @@ -52,13 +52,13 @@ translations in the .json file using the following syntax: \code - "trDisplayName": { "C": "default", "en_US": "english", "de_DE": "deutsch" } + "trDisplayName": { "C": "default", "en": "english", "de": "deutsch" } \endcode For example: \code - "trDisplayName": { "C": "Project Location", "en_US": "Project Location", "de_DE": "Projekt Verzeichnis" } + "trDisplayName": { "C": "Project Location", "en": "Project Location", "de": "Projektverzeichnis" } \endcode \section1 Creating Wizards diff --git a/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp b/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp index ca4220ebef4..d3d747c1a89 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonfieldpage.cpp @@ -85,7 +85,7 @@ static QString translatedOrUntranslatedText(QVariantMap &map, const QString &key { if (key.size() >= 1) { const QString trKey = "tr" + key.at(0).toUpper() + key.mid(1); // "text" -> "trText" - const QString trValue = JsonWizardFactory::localizedString(consumeValue(map, trKey).toString()); + const QString trValue = JsonWizardFactory::localizedString(consumeValue(map, trKey)); if (!trValue.isEmpty()) return trValue; } @@ -188,9 +188,10 @@ JsonFieldPage::Field *JsonFieldPage::Field::parse(const QVariant &input, QString *errorMessage = Tr::tr("Field \"%1\" has unsupported type \"%2\".").arg(name).arg(type); return nullptr; } - data->setTexts(name, - JsonWizardFactory::localizedString(consumeValue(tmp, DISPLAY_NAME_KEY).toString()), - JsonWizardFactory::localizedString(consumeValue(tmp, TOOLTIP_KEY).toString())); + data->setTexts( + name, + JsonWizardFactory::localizedString(consumeValue(tmp, DISPLAY_NAME_KEY)), + JsonWizardFactory::localizedString(consumeValue(tmp, TOOLTIP_KEY))); data->setVisibleExpression(consumeValue(tmp, VISIBLE_KEY, true)); data->setEnabledExpression(consumeValue(tmp, ENABLED_KEY, true)); @@ -974,7 +975,7 @@ std::unique_ptr createStandardItemFromListItem(const QVariant &it auto standardItem = std::make_unique(); if (item.typeId() == QMetaType::QVariantMap) { QVariantMap tmp = item.toMap(); - const QString key = JsonWizardFactory::localizedString(consumeValue(tmp, "trKey", QString()).toString()); + const QString key = JsonWizardFactory::localizedString(consumeValue(tmp, "trKey")); const QVariant value = consumeValue(tmp, "value", key); if (key.isNull() || key.isEmpty()) { @@ -985,7 +986,7 @@ std::unique_ptr createStandardItemFromListItem(const QVariant &it standardItem->setData(value, ListField::ValueRole); standardItem->setData(consumeValue(tmp, "condition", true), ListField::ConditionRole); standardItem->setData(consumeValue(tmp, "icon"), ListField::IconStringRole); - standardItem->setToolTip(JsonWizardFactory::localizedString(consumeValue(tmp, "trToolTip", QString()).toString())); + standardItem->setToolTip(JsonWizardFactory::localizedString(consumeValue(tmp, "trToolTip"))); warnAboutUnsupportedKeys(tmp, QString(), "List"); } else { const QString keyvalue = item.toString(); diff --git a/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp b/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp index 6da06b0616a..4870056c9bf 100644 --- a/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp +++ b/src/plugins/projectexplorer/jsonwizard/jsonwizardfactory.cpp @@ -763,10 +763,9 @@ QString JsonWizardFactory::localizedString(const QVariant &value) return {}; if (value.typeId() == QMetaType::QVariantMap) { QVariantMap tmp = value.toMap(); - const QString locale = languageSetting().toLower(); - QStringList locales; - locales << locale << QLatin1String("en") << QLatin1String("C") << tmp.keys(); - for (const QString &locale : std::as_const(locales)) { + const QString currentLocale = languageSetting().toLower(); + const QStringList locales{currentLocale, "en", "C"}; + for (const QString &locale : locales) { QString result = tmp.value(locale, QString()).toString(); if (!result.isEmpty()) return result; From 69906c6525ab3b6aeca7e1fe9787bd9e417a706b Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Fri, 19 Jul 2024 11:14:22 +0200 Subject: [PATCH 58/77] Update qbs module to HEAD of 2.4 branch Change-Id: If06b28c8b98c823e2020d3e3be0229605faf5913 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 65096dc8307..70e60671e71 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit 65096dc8307979b973cd1fe3e01bc959384d2a20 +Subproject commit 70e60671e71730f294530349d1fc57cec9d215ee From e8855f97d59670f8be8103bbe662de761a225f39 Mon Sep 17 00:00:00 2001 From: hjk Date: Thu, 18 Jul 2024 16:20:44 +0200 Subject: [PATCH 59/77] Utils: Expand FilePaths per part, not as a full string Avoid the potential side effects from the toString/fromUserInput round trip. Fixes: QTCREATORBUG-31259 Change-Id: Id004d71079b4ef8ac26b927921c5cd7a23531110 Reviewed-by: Christian Stenger Reviewed-by: Christian Kandeler --- src/libs/utils/macroexpander.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/libs/utils/macroexpander.cpp b/src/libs/utils/macroexpander.cpp index fc138974745..51a38f4f8c6 100644 --- a/src/libs/utils/macroexpander.cpp +++ b/src/libs/utils/macroexpander.cpp @@ -274,7 +274,10 @@ QString MacroExpander::expand(const QString &stringWithVariables) const FilePath MacroExpander::expand(const FilePath &fileNameWithVariables) const { // We want single variables to expand to fully qualified strings. - return FilePath::fromUserInput(expand(fileNameWithVariables.toString())); + const QString host = expand(fileNameWithVariables.host().toString()); + const QString scheme = expand(fileNameWithVariables.scheme().toString()); + const QString path = expand(fileNameWithVariables.path()); + return FilePath::fromParts(scheme, host, path); } QByteArray MacroExpander::expand(const QByteArray &stringWithVariables) const From 410b275ecaf00c2a6b131ae1a076510521aa148f Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Thu, 14 Dec 2023 13:43:35 +0100 Subject: [PATCH 60/77] SquishTests: Attempt to stabilize designer test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The switch to cmake broke this test completely as qmake handles changes to ui files differently. Changing a ui file needs re-execution of moc which is not done automatically for cmake except when building. Beside this the cmake project manager seems to inform the code model about respective changes significantly later, if at all. So, we explicitly trigger a build now after changing the ui file and explicitly ensure the code model treats the file correctly by closing and re-opening it. Change-Id: Icb9cfb572c1442eff1bebc9c29fdee55155ca287 Reviewed-by: Robert Löhning --- .../tst_designer_autocomplete/test.py | 41 +++++++++++++++---- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/tests/system/suite_tools/tst_designer_autocomplete/test.py b/tests/system/suite_tools/tst_designer_autocomplete/test.py index c77d4b5f180..32db7647a83 100644 --- a/tests/system/suite_tools/tst_designer_autocomplete/test.py +++ b/tests/system/suite_tools/tst_designer_autocomplete/test.py @@ -3,6 +3,15 @@ source("../../shared/qtcreator.py") + +def closeMainWindowCppIfOpen(): + mainWindow = waitForObject(":Qt Creator_Core::Internal::MainWindow", 1000) + mainWindowCppClosed = lambda: "mainwindow.cpp " not in str(mainWindow.windowTitle) + if "mainwindow.cpp " in str(mainWindow.windowTitle): + invokeMenuItem('File', 'Close "mainwindow.cpp"') + waitFor(mainWindowCppClosed, 2000) + + def main(): startQC() if not startedWithoutPluginError(): @@ -15,11 +24,14 @@ def main(): earlyExit() return - invokeMenuItem('Build', 'Build Project "%s"' % projectName) + closeMainWindowCppIfOpen() selectFromLocator("mainwindow.ui") dragAndDrop(waitForObject("{container=':qdesigner_internal::WidgetBoxCategoryListView'" "text='Push Button' type='QModelIndex'}"), 5, 5, ":FormEditorStack_qdesigner_internal::FormWindow", 20, 50, Qt.CopyAction) + proposalExists = lambda: object.exists(':popupFrame_TextEditor::GenericProposalWidget') + fileNameCombo = waitForObject(":Qt Creator_FilenameQComboBox", 1000) + fileSaved = lambda: not str(fileNameCombo.currentText).endswith('*') for buttonName in [None, "aDifferentName", "anotherDifferentName", "pushButton"]: if buttonName: openContextMenu(waitForObject("{container=':*Qt Creator.FormEditorStack_Designer::Internal::FormEditorStack'" @@ -31,8 +43,13 @@ def main(): else: # Verify that everything works without ever changing the name buttonName = "pushButton" + invokeMenuItem("File", "Save All") + waitFor(fileSaved, 1000) + invokeMenuItem('Build', 'Build Project "%s"' % projectName) + waitForCompile() selectFromLocator("mainwindow.cpp") editor = waitForObject(":Qt Creator_CppEditor::Internal::CPPEditorWidget") + snooze(1) for tryDotOperator in [False, True]: if not placeCursorToLine(editor, "ui->setupUi(this);"): earlyExit("Maybe the project template changed.") @@ -42,21 +59,31 @@ def main(): if tryDotOperator: snooze(1) type(editor, ".") - waitFor("object.exists(':popupFrame_TextEditor::GenericProposalWidget')", 1500) else: type(editor, "-") snooze(1) type(editor, ">") + + if not test.verify(waitFor(proposalExists, 1500), "Proposal should be shown"): + type(editor, "") + continue + + proposalListView = waitForObject(':popupFrame_Proposal_QListView') + items = dumpItems(proposalListView.model()) + if test.verify(" %s" % buttonName in items, "Button present in proposal?"): + type(proposalListView, str(buttonName[0])) + else: + test.log(str(items)) snooze(1) - proposalExists = lambda: object.exists(':popupFrame_TextEditor::GenericProposalWidget') - nativeType("%s" % buttonName[0]) if test.verify(waitFor(proposalExists, 4000), "Verify that GenericProposalWidget is being shown."): - nativeType("") + type(proposalListView, "") lineCorrect = lambda: str(lineUnderCursor(editor)).strip() == "ui->%s" % buttonName test.verify(waitFor(lineCorrect, 1000), ('Comparing line "%s" to expected "%s"' % (lineUnderCursor(editor), "ui->%s" % buttonName))) - type(editor, "") # Delete line + type(editor, "") # Delete line + invokeMenuItem("File", "Save All") + closeMainWindowCppIfOpen() selectFromLocator("mainwindow.ui") - saveAndExit() + invokeMenuItem("File", "Exit") From e6dc3fb008c7cda07aa51a0f384f09a3dd87bebe Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 19 Jul 2024 12:50:59 +0200 Subject: [PATCH 61/77] QmlJS: Fix default command for qmlformat on Windows Fixes: QTCREATORBUG-31257 Change-Id: I72797f3e67e0b71dac434fcd90777b0aa7334995 Reviewed-by: Fabian Kosmale --- src/plugins/qmljseditor/qmljseditingsettingspage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/plugins/qmljseditor/qmljseditingsettingspage.cpp b/src/plugins/qmljseditor/qmljseditingsettingspage.cpp index c0e16b12887..3aa83bfe5b7 100644 --- a/src/plugins/qmljseditor/qmljseditingsettingspage.cpp +++ b/src/plugins/qmljseditor/qmljseditingsettingspage.cpp @@ -45,7 +45,7 @@ const char CUSTOM_COMMAND[] = "QmlJSEditor.useCustomFormatCommand"; const char CUSTOM_ANALYZER[] = "QmlJSEditor.useCustomAnalyzer"; const char DISABLED_MESSAGES[] = "QmlJSEditor.disabledMessages"; const char DISABLED_MESSAGES_NONQUICKUI[] = "QmlJSEditor.disabledMessagesNonQuickUI"; -const char DEFAULT_CUSTOM_FORMAT_COMMAND[] = "%{CurrentDocument:Project:QT_HOST_BINS}/qmlformat"; +const char DEFAULT_CUSTOM_FORMAT_COMMAND[] = "%{CurrentDocument:Project:QT_HOST_BINS}/qmlformat%{HostOs:ExecutableSuffix}"; using namespace QmlJSEditor::Internal; using namespace Utils; From 95ef7c8ff0bf3a61a26734edda7e17413a4b9a04 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 19 Jul 2024 13:58:51 +0200 Subject: [PATCH 62/77] Lua: Fix MinGW build for qbs Change-Id: Ia0afe744add081d8f255ad6328b6ae55ca07fc11 Reviewed-by: Christian Kandeler --- src/plugins/lua/lua.qbs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/plugins/lua/lua.qbs b/src/plugins/lua/lua.qbs index f9689e208f2..9c21feff048 100644 --- a/src/plugins/lua/lua.qbs +++ b/src/plugins/lua/lua.qbs @@ -9,6 +9,11 @@ QtcPlugin { Depends { name: "lua546" } Depends { name: "sol2" } + Properties { + condition: qbs.toolchain.contains("mingw") + cpp.optimization: "fast" + } + files: [ // "generateqtbindings.cpp", // use this if you need to generate some code "lua_global.h", From 945f0462f8729079d92b4abf8a31b02a511d70d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Thu, 2 May 2024 23:42:28 +0200 Subject: [PATCH 63/77] SquishTests: Wait until exactly one proposal is being shown ...so we don't accidentally use a wrong one. Change-Id: I4c08e11aab34b8649f40ba14385492b17e656385 Reviewed-by: Christian Stenger --- tests/system/suite_tools/tst_designer_autocomplete/test.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/system/suite_tools/tst_designer_autocomplete/test.py b/tests/system/suite_tools/tst_designer_autocomplete/test.py index 32db7647a83..1576e26e717 100644 --- a/tests/system/suite_tools/tst_designer_autocomplete/test.py +++ b/tests/system/suite_tools/tst_designer_autocomplete/test.py @@ -77,9 +77,12 @@ def main(): snooze(1) if test.verify(waitFor(proposalExists, 4000), "Verify that GenericProposalWidget is being shown."): + singleProposal = lambda: (object.exists(':popupFrame_Proposal_QListView') + and findObject(':popupFrame_Proposal_QListView').model().rowCount() == 1) + waitFor(singleProposal, 4000) type(proposalListView, "") lineCorrect = lambda: str(lineUnderCursor(editor)).strip() == "ui->%s" % buttonName - test.verify(waitFor(lineCorrect, 1000), + test.verify(waitFor(lineCorrect, 4000), ('Comparing line "%s" to expected "%s"' % (lineUnderCursor(editor), "ui->%s" % buttonName))) type(editor, "") # Delete line From b534aac6ab21073c7183bd0ee0e3a40da29517d9 Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Wed, 17 Jul 2024 21:44:13 +0200 Subject: [PATCH 64/77] ExtensionManager: Make links clickable Change-Id: I9c98f9bf2e7e3baef42fa9d0d60012881418ef44 Reviewed-by: hjk --- src/plugins/extensionmanager/extensionmanagerwidget.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/extensionmanager/extensionmanagerwidget.cpp b/src/plugins/extensionmanager/extensionmanagerwidget.cpp index 429d9a241f3..2ac839d98f0 100644 --- a/src/plugins/extensionmanager/extensionmanagerwidget.cpp +++ b/src/plugins/extensionmanager/extensionmanagerwidget.cpp @@ -423,6 +423,7 @@ ExtensionManagerWidget::ExtensionManagerWidget() m_linksTitle = sectionTitle(h6CapitalTF, Tr::tr("More information")); m_links = tfLabel(contentTF, false); m_links->setOpenExternalLinks(true); + m_links->setTextInteractionFlags(Qt::TextBrowserInteraction); m_imageTitle = sectionTitle(h6CapitalTF, {}); m_image = new QLabel; m_imageMovie.setDevice(&m_imageDataBuffer); From 0d2ae245806eeb462926eaa9ac2e61d8b2794357 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Fri, 19 Jul 2024 15:04:12 +0200 Subject: [PATCH 65/77] Haskell: Add wizard files to qbs build Change-Id: I5aa07fa430baa8b860e3ae540d8b0c1e1ce765c5 Reviewed-by: Christian Kandeler --- src/plugins/haskell/haskell.qbs | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/plugins/haskell/haskell.qbs b/src/plugins/haskell/haskell.qbs index d1362f32b11..589d8004401 100644 --- a/src/plugins/haskell/haskell.qbs +++ b/src/plugins/haskell/haskell.qbs @@ -25,4 +25,17 @@ QtcPlugin { "haskelltokenizer.cpp", "haskelltokenizer.h", "stackbuildstep.cpp", "stackbuildstep.h" ] + + Qt.core.resourceFileBaseName: "HaskellWizards" // avoid conflicting qrc file + Group { + name: "Wizard files" + Qt.core.resourceSourceBase: sourceDirectory + Qt.core.resourcePrefix: "haskell/" + fileTags: "qt.core.resource_data" + prefix: "share/wizards/" + files: [ + "module/file.hs", + "module/wizard.json", + ] + } } From 0de1a6cdf726d3f0a59bcecdf19fb8a3898890e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Fri, 19 Jul 2024 23:14:36 +0200 Subject: [PATCH 66/77] SquishTests: Don't expect qmake in tst_default_settings When qmake is not present in PATH or not usable, Creator does not add a Qt version and does not write qtversion.xml. Expect this behavior in the test. Change-Id: I0890b9a22bdec47c0ac7206ba0a83d1e3ded2bb3 Reviewed-by: Christian Stenger --- .../suite_general/tst_default_settings/test.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/tests/system/suite_general/tst_default_settings/test.py b/tests/system/suite_general/tst_default_settings/test.py index 194a8ac4ccf..c001763c297 100644 --- a/tests/system/suite_general/tst_default_settings/test.py +++ b/tests/system/suite_general/tst_default_settings/test.py @@ -16,10 +16,10 @@ def main(): if not startedWithoutPluginError(): return invokeMenuItem("Edit", "Preferences...") - __checkKits__() + qmakeFound = __checkKits__() clickButton(waitForObject(":Options.Cancel_QPushButton")) invokeMenuItem("File", "Exit") - __checkCreatedSettings__(emptySettings) + __checkCreatedSettings__(emptySettings, qmakeFound) def __createMinimumIni__(emptyParent): qtProjDir = os.path.join(emptyParent, "QtProject") @@ -61,6 +61,10 @@ def __checkKits__(): test.log(str(genericDebuggers)) # check Qt versions qmakePath = which("qmake") + if qmakePath and (not "Using Qt version" in + getOutputFromCmdline([qmakePath, "--version"], acceptedError=1)): + # ignore dysfunctional qmake, e.g. incomplete qtchooser + qmakePath = None foundQt = [] clickOnTab(":Options.qt_tabwidget_tabbar_QTabBar", "Qt Versions") __iterateTree__(":qtdirList_QTreeView", __qtFunc__, foundQt, qmakePath) @@ -71,6 +75,7 @@ def __checkKits__(): # check kits clickOnTab(":Options.qt_tabwidget_tabbar_QTabBar", "Kits") __iterateTree__(":BuildAndRun_QTreeView", __kitFunc__, foundQt, foundCompilerNames) + return qmakePath != None def __processSubItems__(treeObjStr, section, parModelIndexStr, doneItems, additionalFunc, *additionalParameters): @@ -377,7 +382,7 @@ def __lowerStrs__(iterable): else: yield it -def __checkCreatedSettings__(settingsFolder): +def __checkCreatedSettings__(settingsFolder, qmakeFound): waitForCleanShutdown() qtProj = os.path.join(settingsFolder, "QtProject") creatorFolder = os.path.join(qtProj, "qtcreator") @@ -390,8 +395,9 @@ def __checkCreatedSettings__(settingsFolder): os.path.join(creatorFolder, "devices.xml"):0, os.path.join(creatorFolder, "helpcollection.qhc"):0, os.path.join(creatorFolder, "profiles.xml"):0, - os.path.join(creatorFolder, "qtversion.xml"):0, os.path.join(creatorFolder, "toolchains.xml"):0} + if qmakeFound: + files[os.path.join(creatorFolder, "qtversion.xml")] = 0 for f in folders: test.verify(os.path.isdir(f), "Verifying whether folder '%s' has been created." % os.path.basename(f)) From ec735c3a2a13a638b7f651eccf30ae8588a84a48 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Fri, 19 Jul 2024 22:22:28 +0200 Subject: [PATCH 67/77] SquishTests: Fix tst_rename_file for case ignoring file systems On Linux, Creator only considers files with the exact extension ".qml" QML files and places them under a "QML" node in the project tree. On Mac and Windows, Creator also places files with extension ".QML" there. Change-Id: Id81989e867fa946081ea7a350b208ddfe09e5460 Reviewed-by: Jukka Nokso Reviewed-by: Christian Stenger --- tests/system/suite_general/tst_rename_file/test.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/tests/system/suite_general/tst_rename_file/test.py b/tests/system/suite_general/tst_rename_file/test.py index d2abe87ea2b..aebd7e5fd79 100644 --- a/tests/system/suite_general/tst_rename_file/test.py +++ b/tests/system/suite_general/tst_rename_file/test.py @@ -38,7 +38,7 @@ def main(): previous = filenames[-1] for filename in filenames: tempFiletype = filetype - if filetype == "QML" and not previous.endswith(".qml"): + if filetype == "QML" and not fileExtMatchesQml(previous): tempFiletype = "Other files" renameFile(templateDir, usedProFile, projectName + "." + tempFiletype, previous, filename) @@ -61,6 +61,15 @@ def verifyRenamedIncludes(templateDir, file, oldname, newname): 'Verify that new filename is included in %s' % file)): test.log(grep("include", fileText)) + +def fileExtMatchesQml(fileName): + if platform.system() == "Linux": + return fileName.endswith(".qml") + else: + # On case ignoring file systems, ".QML" is the same as ".qml" + return fileName.lower().endswith(".qml") + + def renameFile(projectDir, proFile, branch, oldname, newname): oldFilePath = os.path.join(projectDir, oldname) newFilePath = os.path.join(projectDir, newname) @@ -115,7 +124,7 @@ def renameFile(projectDir, proFile, branch, oldname, newname): test.verify(oldname not in os.listdir(projectDir), "Verify that file with old name does not exist: %s" % oldFilePath) - if newItemText.endswith("\\.qml"): + if fileExtMatchesQml(newItemText): newItemText = newItemText.replace(".Other files.", ".QML.") else: newItemText = newItemText.replace(".QML.", ".Other files.") From e9856ad138737c20946f965bfa420dcb8ad11541 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 22 Jul 2024 10:00:44 +0200 Subject: [PATCH 68/77] Update change log Change-Id: I055bfba24ea4610540dab930a30a998acba1b25e Reviewed-by: Leena Miettinen --- dist/changelog/changes-14.0.0.md | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/dist/changelog/changes-14.0.0.md b/dist/changelog/changes-14.0.0.md index 3625940c757..bd4a54d9310 100644 --- a/dist/changelog/changes-14.0.0.md +++ b/dist/changelog/changes-14.0.0.md @@ -17,6 +17,8 @@ General ([Documentation](https://doc-snapshots.qt.io/qtcreator-extending/lua-extensions.html)) * Added a mode for managing extensions * Added `Clear` and `Save Contents` to context menus of all output views +* Fixed the tab focus order in the search toolbar + ([QTCREATORBUG-30791](https://bugreports.qt.io/browse/QTCREATORBUG-30791)) * Locator * Added the option to show results relative to project root ([QTCREATORBUG-29462](https://bugreports.qt.io/browse/QTCREATORBUG-29462)) @@ -46,6 +48,14 @@ Editing ([QTCREATORBUG-31116](https://bugreports.qt.io/browse/QTCREATORBUG-31116)) * Fixed the unindenting with backspace when multiple cursors are active ([QTCREATORBUG-31158](https://bugreports.qt.io/browse/QTCREATORBUG-31158)) +* Fixed the `Save` shortcut after closing a document while the document's + drop-down menu is shown + ([QTCREATORBUG-31205](https://bugreports.qt.io/browse/QTCREATORBUG-31205)) +* Fixed the highlighting of matches for `Whole Words Only` searches + ([QTCREATORBUG-31020](https://bugreports.qt.io/browse/QTCREATORBUG-31020)) +* Fixed that the documents chooser did not close when releasing `Ctrl` in + some setups + ([QTCREATORBUG-31228](https://bugreports.qt.io/browse/QTCREATORBUG-31228)) ### C++ @@ -79,6 +89,9 @@ Editing ([QTCREATORBUG-29943](https://bugreports.qt.io/browse/QTCREATORBUG-29943)) * Fixed the handling of system headers ([QTCREATORBUG-30474](https://bugreports.qt.io/browse/QTCREATORBUG-30474)) + * Fixed a warning when adding an empty session to the list of sessions with + a single Clangd instance + ([QTCREATORBUG-31186](https://bugreports.qt.io/browse/QTCREATORBUG-31186)) * Built-in * Added the `Enable indexing` option in `Preferences` > `C++` > `Code Model` to turn off the built-in indexer @@ -101,6 +114,8 @@ Editing ([Documentation](https://doc.qt.io/qtcreator/creator-quick-ui-forms.html)) * Fixed that the color preview did not work on named colors ([QTCREATORBUG-30594](https://bugreports.qt.io/browse/QTCREATORBUG-30594)) +* Fixed the default path to `qmlformat` on Windows + ([QTCREATORBUG-31257](https://bugreports.qt.io/browse/QTCREATORBUG-31257)) * Language Server * Switched on by default for Qt 6.8 and later * Added an option for generating `qmlls.ini` files for CMake projects in @@ -206,6 +221,8 @@ Projects ([QTCREATORBUG-30836](https://bugreports.qt.io/browse/QTCREATORBUG-30836)) * Added support for custom build types ([QTCREATORBUG-30014](https://bugreports.qt.io/browse/QTCREATORBUG-30014)) + * Fixed issues with cross-compilation setups + ([QTCREATORBUG-31249](https://bugreports.qt.io/browse/QTCREATORBUG-31249)) ([Documentation](https://doc-snapshots.qt.io/qtcreator-14.0/creator-build-settings-cmake-presets.html)) @@ -317,6 +334,9 @@ Platforms * Improved the performance of the generic deployment method * Fixed that the file size check that is performed before parsing C++ files could freeze Qt Creator until finished for remote projects +* Fixed that the deployment of a directory deployed only its contents instead + of the directory itself + ([QTCREATORBUG-31136](https://bugreports.qt.io/browse/QTCREATORBUG-31136)) ### Qt Application Manager @@ -333,8 +353,9 @@ Ahmad Samir Aleksei German Alessandro Portale Alexander Drozdov +Alexandre Laurent Ali Kianian -Andre Hartmann +André Hartmann André Pönitz Artem Sokolovskii Assam Boudjelthia @@ -364,6 +385,7 @@ Mats Honkamaa Michael Weghorn Miikka Heikkinen Orgad Shaneh +Pino Toscano Pranta Dastider Ralf Habacker Robert Löhning From da9b4803e738f3bee68528a98a7741208dcc3b34 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 22 Jul 2024 10:41:59 +0200 Subject: [PATCH 69/77] German translation: Sync a string between ProjectExplorer and TextEditor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I833c58d0fbc3ad5565ee1c6346a9b0bd0bf13cbd Reviewed-by: Robert Löhning --- share/qtcreator/translations/qtcreator_de.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 65c29af732a..5bbf667de42 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -55010,7 +55010,7 @@ Drücken Sie zusätzlich die Umschalttaste, wird ein Escape-Zeichen an der aktue
    Documentation Comments - Kommentare für Dokumentation + Dokumentationskommentare Automatically creates a Doxygen comment upon pressing enter after a '/**', '/*!', '//!' or '///'. From d513663828e4ff34a94f2adde547d49ed0bd9ca5 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 22 Jul 2024 10:53:00 +0200 Subject: [PATCH 70/77] German translation: Unify to feature -> Funktion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I298c9eb2edeb4dc36dc4fe774fb4d3cf2a872032 Reviewed-by: Robert Löhning --- share/qtcreator/translations/qtcreator_de.ts | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 5bbf667de42..2c4dd15015a 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -7811,7 +7811,7 @@ Please check the output pane for more information. Also warns in the code editor about QML features that are not properly supported by the Qt Quick Designer. - Zeigt auch im Code-Editor eine Warnung bei QML-Features an, die vom Qt Quick Designer nicht vollständig unterstützt werden. + Zeigt auch im Code-Editor eine Warnung bei QML-Funktionen an, die vom Qt Quick Designer nicht vollständig unterstützt werden. Internationalization @@ -10927,7 +10927,7 @@ Dies kann nicht rückgängig gemacht werden. The device has to be connected with ADB debugging enabled to use this feature. - Das Gerät muss mit aktiviertem ADB-Debuggen angeschlossen sein, um diese Funktionalität nutzen zu können. + Das Gerät muss mit aktiviertem ADB-Debuggen angeschlossen sein, um diese Funktion nutzen zu können. Opening connection port %1 failed. @@ -11088,7 +11088,7 @@ Dies kann nicht rückgängig gemacht werden. Include default features for Qt modules. - Standard-Features für Qt-Module einschließen. + Standardfunktionen für Qt-Module einschließen. Add @@ -25744,7 +25744,7 @@ markers in the source code editor. <html><head/><body><p>Enables stepping backwards.</p><p><b>Note:</b> This feature is very slow and unstable on the GDB side. It exhibits unpredictable behavior when going backwards over system calls and is very likely to destroy your debugging session.</p></body></html> - <html><head/><body><p>Rückwärts-Debuggen aktivieren.</p><p><b>Hinweis:</b> Diese Funktionalität ist sehr langsam und instabil innerhalb von GDB. Es kann unvorhergesehenes Verhalten auftreten, wenn man rückwärts über einen Systemaufruf springt, und die Debugger-Sitzung kann leicht zerstört werden.</p></body></html> + <html><head/><body><p>Rückwärts-Debuggen aktivieren.</p><p><b>Hinweis:</b> Diese Funktion ist sehr langsam und instabil innerhalb von GDB. Es kann unvorhergesehenes Verhalten auftreten, wenn man rückwärts über einen Systemaufruf springt, und die Debugger-Sitzung kann leicht zerstört werden.</p></body></html> Debug all child processes @@ -28125,7 +28125,7 @@ Bitte wählen Sie einen 64-bit-Debugger in den Kit-Einstellungen für dieses Kit This feature is very slow and unstable on the GDB side. It exhibits unpredictable behavior when going backwards over system calls and is very likely to destroy your debugging session. - Diese Funktionalität ist sehr langsam und instabil innerhalb von GDB. Es kann unvorhergesehenes Verhalten auftreten, wenn man rückwärts über einen Systemaufruf springt, und die Debugger-Sitzung kann leicht unbenutzbar werden. + Diese Funktion ist sehr langsam und instabil innerhalb von GDB. Es kann unvorhergesehenes Verhalten auftreten, wenn man rückwärts über einen Systemaufruf springt, und die Debugger-Sitzung kann leicht unbenutzbar werden. Reverse Direction @@ -30618,7 +30618,7 @@ zu deaktivieren, deaktiviert auch die folgenden Plugins: Does not interpret key sequences like Ctrl-S in FakeVim but handles them as regular shortcuts. This gives easier access to core functionality at the price of losing some features of FakeVim. - Tastensequenzen wie Strg-S nicht in FakeVim verarbeiten, sondern sie als gewöhnliche Tastenkombinationen behandeln. Dies erleichtert den Zugriff auf die Kernfunktionalität auf Kosten eingeschränkter Funktionalität von FakeVim. + Tastensequenzen wie Strg-S nicht in FakeVim verarbeiten, sondern sie als gewöhnliche Tastenkombinationen behandeln. Dies erleichtert den Zugriff auf die Kernfunktionalität auf Kosten eingeschränkter Funktion von FakeVim. Does not interpret some key presses in insert mode so that code can be properly completed and expanded. @@ -43192,7 +43192,7 @@ Sie sollten nicht mehrere Test-Frameworks im selben Projekt mischen. At least one required feature is not present. - Mindestens ein benötigtes Feature ist nicht vorhanden. + Mindestens eine benötigte Funktion ist nicht vorhanden. Platform is not supported. @@ -43200,7 +43200,7 @@ Sie sollten nicht mehrere Test-Frameworks im selben Projekt mischen. At least one preferred feature is not present. - Mindestens ein bevorzugtes Feature ist nicht vorhanden. + Mindestens eine bevorzugte Funktion ist nicht vorhanden. Feature list is set and not of type list. From e2d0ec02fea52ac45a959da40fe414cfffbaf474 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20L=C3=B6hning?= Date: Mon, 22 Jul 2024 10:09:41 +0200 Subject: [PATCH 71/77] SquishTests: Don't expect Creator to detect 32 bit cdbs It stopped using them in Version 14. Change-Id: I81c481d48474ae6024187b876720026ed668575c Reviewed-by: Christian Stenger --- tests/system/suite_general/tst_default_settings/test.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/tests/system/suite_general/tst_default_settings/test.py b/tests/system/suite_general/tst_default_settings/test.py index c001763c297..0d64d887018 100644 --- a/tests/system/suite_general/tst_default_settings/test.py +++ b/tests/system/suite_general/tst_default_settings/test.py @@ -300,18 +300,11 @@ def __getExpectedDebuggers__(): def __getCDB__(): result = [] possibleLocations = ["C:\\Program Files\\Debugging Tools for Windows (x64)", - "C:\\Program Files (x86)\\Debugging Tools for Windows (x86)", - "C:\\Program Files (x86)\\Windows Kits\\8.0\\Debuggers\\x86", "C:\\Program Files (x86)\\Windows Kits\\8.0\\Debuggers\\x64", - "C:\\Program Files\\Windows Kits\\8.0\\Debuggers\\x86", "C:\\Program Files\\Windows Kits\\8.0\\Debuggers\\x64", - "C:\\Program Files (x86)\\Windows Kits\\8.1\\Debuggers\\x86", "C:\\Program Files (x86)\\Windows Kits\\8.1\\Debuggers\\x64", - "C:\\Program Files\\Windows Kits\\8.1\\Debuggers\\x86", "C:\\Program Files\\Windows Kits\\8.1\\Debuggers\\x64", - "C:\\Program Files (x86)\\Windows Kits\\10\\Debuggers\\x86", "C:\\Program Files (x86)\\Windows Kits\\10\\Debuggers\\x64", - "C:\\Program Files\\Windows Kits\\10\\Debuggers\\x86", "C:\\Program Files\\Windows Kits\\10\\Debuggers\\x64"] for cdbPath in possibleLocations: cdb = os.path.join(cdbPath, "cdb.exe") From bec20925d00449f7af7c6e19ca33fb6e866da8df Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 22 Jul 2024 10:56:09 +0200 Subject: [PATCH 72/77] German translation: Unify to built-in -> integriert MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I88c06f2aa9ea7d6c524e7825087bdb1929e5941f Reviewed-by: Christian Stenger Reviewed-by: Robert Löhning --- share/qtcreator/translations/qtcreator_de.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/share/qtcreator/translations/qtcreator_de.ts b/share/qtcreator/translations/qtcreator_de.ts index 2c4dd15015a..4586ab183e2 100644 --- a/share/qtcreator/translations/qtcreator_de.ts +++ b/share/qtcreator/translations/qtcreator_de.ts @@ -16965,7 +16965,7 @@ Stellen Sie sicher, dass der Wert der CMAKE_BUILD_TYPE-Variable derselbe wie der With clangd enabled, Qt Creator fully supports modern C++ when highlighting code, completing symbols and so on.<br>This comes at a higher cost in terms of CPU load and memory usage compared to the built-in code model, which therefore might be the better choice on older machines and/or with legacy code.<br>You can enable/disable and fine-tune clangd <a href="dummy">here</a>. - Wenn Clangd aktiviert ist, unterstützt Qt Creator semantische Hervorhebung, Symbolvervollständigung und so weiter für Code, der modernes C++ nutzt.<br/>Das wirkt sich nachteilig auf CPU-Last und Speicherverbrauch im Vergleich zum eingebauten Codemodell aus, das deshalb eine bessere Wahl für ältere Maschinen und/oder für Legacy Code sein kann.<br/>Sie können Clangd <a href="dummy">hier</a> aktivieren/deaktivieren und anpassen. + Wenn Clangd aktiviert ist, unterstützt Qt Creator semantische Hervorhebung, Symbolvervollständigung und so weiter für Code, der modernes C++ nutzt.<br/>Das wirkt sich nachteilig auf CPU-Last und Speicherverbrauch im Vergleich zum integrierten Codemodell aus, das deshalb eine bessere Wahl für ältere Maschinen und/oder für Legacy Code sein kann.<br/>Sie können Clangd <a href="dummy">hier</a> aktivieren/deaktivieren und anpassen. Enable Anyway @@ -53595,7 +53595,7 @@ Werte kleiner als 100% können überlappende und falsch ausgerichtete Darstellun %1 [built-in] - %1 [eingebaut] + %1 [integriert] %1 [customizable] @@ -53804,7 +53804,7 @@ Gibt an, wie sich die Rücktaste bezüglich Einrückung verhält. Enable built-in camel case &navigation - Eingebaute CamelCase-&Navigation aktivieren + Integrierte CamelCase-&Navigation aktivieren On Mouseover From d41015539516c7c64a06d9f79eca9eae8f8b6885 Mon Sep 17 00:00:00 2001 From: Eike Ziller Date: Mon, 22 Jul 2024 14:54:35 +0200 Subject: [PATCH 73/77] QmlDesigner: Fix context help in code editor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Context help is only triggered for the first widget in the focus widget's parent hierarchy that has an IContext registered. This change amends 411100b0378202dc617acaa236f4730eb4cc43b2 which removed the TextEditorActionHandler by registering an editor-specific IContext for the individual TextEditorWidgets. The code editor in QmlDesigner registered an IContext for a widget that _contains_ the actual editor widget and handled context help there. Now the editor widget has an IContext, which means that the IContext that QmlDesigner registered was never asked. Directly register the QmlDesigner IContext for the text editor widget itself, so it takes part in context help resolution. Fixes: QDS-13248 Change-Id: Ib49129d9de20bdfa022a8e75ba454c7674040699 Reviewed-by: Henning Gründl --- .../qmldesigner/components/texteditor/texteditorview.cpp | 7 ++++--- .../qmldesigner/components/texteditor/texteditorview.h | 2 +- src/plugins/qmldesigner/designmodecontext.cpp | 8 ++++---- src/plugins/qmldesigner/designmodecontext.h | 8 +++++++- 4 files changed, 16 insertions(+), 9 deletions(-) diff --git a/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp b/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp index 2e52b3358ba..254cfd0bea3 100644 --- a/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp +++ b/src/plugins/qmldesigner/components/texteditor/texteditorview.cpp @@ -48,10 +48,7 @@ const char TEXTEDITOR_CONTEXT_ID[] = "QmlDesigner.TextEditorContext"; TextEditorView::TextEditorView(ExternalDependenciesInterface &externalDependencies) : AbstractView{externalDependencies} , m_widget(new TextEditorWidget(this)) - , m_textEditorContext(new Internal::TextEditorContext(m_widget)) { - Core::ICore::addContextObject(m_textEditorContext); - Core::Context context(TEXTEDITOR_CONTEXT_ID); /* @@ -87,7 +84,11 @@ void TextEditorView::modelAttached(Model *model) // Set the context of the text editor, but we add another special context to override shortcuts. Core::Context context = textEditor->context(); context.prepend(TEXTEDITOR_CONTEXT_ID); + + m_textEditorContext = new Internal::TextEditorContext(m_widget); + m_textEditorContext->setWidget(textEditor->widget()); // toplevel focus widget of the editor m_textEditorContext->setContext(context); + Core::ICore::addContextObject(m_textEditorContext); m_widget->setTextEditor(std::move(textEditor)); } diff --git a/src/plugins/qmldesigner/components/texteditor/texteditorview.h b/src/plugins/qmldesigner/components/texteditor/texteditorview.h index 33a5ec8276c..35a33863fab 100644 --- a/src/plugins/qmldesigner/components/texteditor/texteditorview.h +++ b/src/plugins/qmldesigner/components/texteditor/texteditorview.h @@ -85,7 +85,7 @@ public: private: QPointer m_widget; - Internal::TextEditorContext *m_textEditorContext; + Internal::TextEditorContext *m_textEditorContext = nullptr; bool m_errorState = false; }; diff --git a/src/plugins/qmldesigner/designmodecontext.cpp b/src/plugins/qmldesigner/designmodecontext.cpp index 796261935af..2d73a01839b 100644 --- a/src/plugins/qmldesigner/designmodecontext.cpp +++ b/src/plugins/qmldesigner/designmodecontext.cpp @@ -85,16 +85,16 @@ void NavigatorContext::contextHelp(const HelpCallback &callback) const qobject_cast(m_widget)->contextHelp(callback); } -TextEditorContext::TextEditorContext(QWidget *widget) - : IContext(widget) +TextEditorContext::TextEditorContext(TextEditorWidget *parent) + : IContext(parent) + , m_parent(parent) { - setWidget(widget); setContext(Core::Context(Constants::C_QMLTEXTEDITOR, Constants::C_QT_QUICK_TOOLS_MENU)); } void TextEditorContext::contextHelp(const HelpCallback &callback) const { - qobject_cast(m_widget)->contextHelp(callback); + m_parent->contextHelp(callback); } } // namespace QmlDesigner::Internal diff --git a/src/plugins/qmldesigner/designmodecontext.h b/src/plugins/qmldesigner/designmodecontext.h index 1d146deb7d8..1ad7dded453 100644 --- a/src/plugins/qmldesigner/designmodecontext.h +++ b/src/plugins/qmldesigner/designmodecontext.h @@ -6,6 +6,9 @@ #include namespace QmlDesigner { + +class TextEditorWidget; + namespace Internal { /** @@ -70,8 +73,11 @@ class TextEditorContext : public Core::IContext Q_OBJECT public: - TextEditorContext(QWidget *widget); + TextEditorContext(TextEditorWidget *parent); void contextHelp(const Core::IContext::HelpCallback &callback) const override; + +private: + TextEditorWidget *m_parent = nullptr; }; } // namespace Internal } // namespace QmlDesigner From eee3fc69070355d50f2223d49a0bcbe5137d11c1 Mon Sep 17 00:00:00 2001 From: Pino Toscano Date: Sun, 21 Jul 2024 13:59:07 +0200 Subject: [PATCH 74/77] ClangFormat: explicitly link with LLVM The ClangFormat plugin uses the LLVM API explicitly, so explicitly link with the LLVM library when available, using its cmake target. This way the linking is done no matter whether the target for the clang format library declares LLVM as its public dependency. Change-Id: I997c720935750fd01229d4d4c20c1bdcadca9ac7 Reviewed-by: Cristian Adam --- src/plugins/clangformat/CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/plugins/clangformat/CMakeLists.txt b/src/plugins/clangformat/CMakeLists.txt index 30bc50dd2c3..6873e690a14 100644 --- a/src/plugins/clangformat/CMakeLists.txt +++ b/src/plugins/clangformat/CMakeLists.txt @@ -37,3 +37,8 @@ extend_qtc_plugin(ClangFormat DEFINES TESTDATA_DIR="${CMAKE_CURRENT_SOURCE_DIR}/tests/data" ) + +extend_qtc_plugin(ClangFormat + CONDITION TARGET LLVM + DEPENDS LLVM +) From 931f55200b60260060ad59c9860d5fff965849eb Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Mon, 22 Jul 2024 15:27:34 +0200 Subject: [PATCH 75/77] ExtensionManager: Keep "Load on Start" checkbox up to date If a plugin was selected in the ExtensionManager, and meanwhile, the "load" status of that plugin was changed via the plugin dialog, the change was not reflected in the ExtensionManager. This change connects the "Load on Start" checkbox in the ExtensionManager with the PluginManager's "changed" signal to keep the state in sync. Fixes: QTCREATORBUG-31177 Change-Id: I6946e23e8491e9c896026b55315acf76bb50cb92 Reviewed-by: Cristian Adam --- src/plugins/extensionmanager/extensionmanagerwidget.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/plugins/extensionmanager/extensionmanagerwidget.cpp b/src/plugins/extensionmanager/extensionmanagerwidget.cpp index 2ac839d98f0..9ce803e6f02 100644 --- a/src/plugins/extensionmanager/extensionmanagerwidget.cpp +++ b/src/plugins/extensionmanager/extensionmanagerwidget.cpp @@ -279,6 +279,8 @@ public: } }); + connect(ExtensionSystem::PluginManager::instance(), + &ExtensionSystem::PluginManager::pluginsChanged, this, &PluginStatusWidget::update); connect(m_restartButton, &QAbstractButton::clicked, ICore::instance(), &ICore::restart, Qt::QueuedConnection); From 7b4b1e2a7270232bde6477c248a27aa3d8dc80ad Mon Sep 17 00:00:00 2001 From: Alessandro Portale Date: Tue, 23 Jul 2024 09:02:52 +0200 Subject: [PATCH 76/77] Debugger: Fix debugger type detection of Android NDK LLDBs NDKs usually ship the python libraries required by the NDKs LLDB. However, these libraries reside in a different location. DebuggerItem::addAndroidLldbPythonEnv takes care of finding that location. This change re-adds the recently remopved DebuggerItem::addAndroidLldbPythonEnv call, so that LLDB can again be detected. Amends: b56a447a83abf19126764549c4908b8ffedc0375 Fixes: QTCREATORBUG-31279 Change-Id: I78cb7dfd1abd96f7bc52e4adff9dddd054f8ac0b Reviewed-by: Cristian Adam --- src/plugins/debugger/debuggeritem.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/plugins/debugger/debuggeritem.cpp b/src/plugins/debugger/debuggeritem.cpp index 9cd855c148e..120684c9fe4 100644 --- a/src/plugins/debugger/debuggeritem.cpp +++ b/src/plugins/debugger/debuggeritem.cpp @@ -146,6 +146,7 @@ void DebuggerItem::reinitializeFromFile(QString *error, Utils::Environment *cust } Environment env = customEnv ? *customEnv : m_command.deviceEnvironment(); + DebuggerItem::addAndroidLldbPythonEnv(m_command, env); // QNX gdb unconditionally checks whether the QNX_TARGET env variable is // set and bails otherwise, even when it is not used by the specific From 370c2d7787ec291565f4749e370fdecea77d12b1 Mon Sep 17 00:00:00 2001 From: Christian Stenger Date: Tue, 23 Jul 2024 09:52:12 +0200 Subject: [PATCH 77/77] Debugger: Fix snapshot handling Avoid sharing the workers with the engine creating the snapshot to avoid closing both when stopping the debugger engine for the snapshot. Correctly detach at finish to avoid having a runcontrol appearing still running. Fixes: QTCREATORBUG-31220 Change-Id: Iccb54b0fc2d7f5bf54b42a116e56c1a840b1f46e Reviewed-by: hjk --- src/plugins/debugger/debuggerruncontrol.cpp | 2 ++ src/plugins/projectexplorer/runcontrol.cpp | 6 ++++++ src/plugins/projectexplorer/runcontrol.h | 1 + 3 files changed, 9 insertions(+) diff --git a/src/plugins/debugger/debuggerruncontrol.cpp b/src/plugins/debugger/debuggerruncontrol.cpp index 007d3464bb8..f4f1405953e 100644 --- a/src/plugins/debugger/debuggerruncontrol.cpp +++ b/src/plugins/debugger/debuggerruncontrol.cpp @@ -575,9 +575,11 @@ void DebuggerRunTool::start() connect(engine, &DebuggerEngine::attachToCoreRequested, this, [this](const QString &coreFile) { auto rc = new RunControl(ProjectExplorer::Constants::DEBUG_RUN_MODE); rc->copyDataFromRunControl(runControl()); + rc->resetDataForAttachToCore(); auto name = QString(Tr::tr("%1 - Snapshot %2").arg(runControl()->displayName()).arg(++d->snapshotCounter)); auto debugger = new DebuggerRunTool(rc); debugger->setStartMode(AttachToCore); + debugger->setCloseMode(DetachAtClose); debugger->setRunControlName(name); debugger->setCoreFilePath(FilePath::fromString(coreFile), true); debugger->startRunControl(); diff --git a/src/plugins/projectexplorer/runcontrol.cpp b/src/plugins/projectexplorer/runcontrol.cpp index 5eac3498bcf..4dd364aaf0a 100644 --- a/src/plugins/projectexplorer/runcontrol.cpp +++ b/src/plugins/projectexplorer/runcontrol.cpp @@ -364,6 +364,12 @@ void RunControl::copyDataFromRunControl(RunControl *runControl) d->copyData(runControl->d.get()); } +void RunControl::resetDataForAttachToCore() +{ + d->m_workers.clear(); + d->state = RunControlState::Initialized; +} + void RunControl::copyDataFromRunConfiguration(RunConfiguration *runConfig) { QTC_ASSERT(runConfig, return); diff --git a/src/plugins/projectexplorer/runcontrol.h b/src/plugins/projectexplorer/runcontrol.h index 94288664361..b99439869ac 100644 --- a/src/plugins/projectexplorer/runcontrol.h +++ b/src/plugins/projectexplorer/runcontrol.h @@ -150,6 +150,7 @@ public: void copyDataFromRunConfiguration(RunConfiguration *runConfig); void copyDataFromRunControl(RunControl *runControl); + void resetDataForAttachToCore(); void setAutoDeleteOnStop(bool autoDelete);