Merge remote-tracking branch 'origin/14.0'

Change-Id: I9c2a0f87c7a3da1f336a2e02c67c32ffba03efa3
This commit is contained in:
Eike Ziller
2024-09-02 14:44:55 +02:00
16 changed files with 344 additions and 179 deletions

View File

@@ -22,10 +22,12 @@
Qt versions and compilers by adding the paths to them and by creating
\l{Kits}{kits} that use them.
To make \QC behave more like your favorite code editor or IDE,
change the preferences for keyboard shortcuts, color schemes, generic
highlighting, code snippets, and version control systems. Manage plugins
to turn on and off \QC features.
To make \QC behave more like your favorite code editor or IDE, change the
preferences for generic highlighting, code snippets, and version control
systems. Manage plugins to turn on and off \QC features.
To make \QC more accessible, use keyboard navigation or adjust colors and
zoom levels.
The following sections summarize the options that you have and point you to
detailed information to help you specify any required settings and to make
@@ -69,41 +71,6 @@
For more information, see \l{Manage Kits}{How To: Manage Kits} and
\l{Develop for Devices}{How To: Develop for Devices}.
\section1 Changing Keyboard Shortcuts
You can use \QC with your favorite keyboard shortcuts.
To view and edit all keyboard shortcuts defined in \QC, go to \preferences >
\uicontrol Environment > \uicontrol Keyboard. For more information, see
\l{Keyboard Shortcuts}.
\section1 Changing Color Schemes
Themes set the appearance of the \QC UI: widgets, colors, and icons.
To switch themes, go to \preferences > \uicontrol Environment >
\uicontrol Interface and select a theme in \uicontrol Theme.
Use the \QC text and code editors with your favorite color scheme that sets
highlighting of code elements and the background color. Select one of the
predefined color schemes or create custom ones. The color schemes apply to
highlighting C++ files, QML files, and generic files.
To change the color scheme, go to \preferences >
\uicontrol {Text Editor} > \uicontrol {Font & Colors}.
For more information, see \l{Change editor colors}.
\l{https://api.kde.org/frameworks/syntax-highlighting/html/index.html}
{KSyntaxHighlighting} offers generic highlighting. It is the syntax
highlighting engine for Kate syntax definitions. \QC comes with most of
the commonly used syntax files, and you can download additional files.
To download and use highlight definition files, go to \preferences >
\uicontrol {Text Editor} > \uicontrol {Generic Highlighter}.
For more information, see \l{Download highlight definitions}.
\section1 Adding Your Own Code Snippets
As you write code, \QC suggests properties, IDs, and code snippets to
@@ -144,5 +111,72 @@
To install plugins, go to \uicontrol Help > \uicontrol {About Plugins} and
select \uicontrol {Install Plugins}.
\section1 Accessibility
You can use keyboard shortcuts to navigate the UI without a mouse, or set
zoom levels and change colors to improve the visibility of the text. Also,
\QC supports screen readers.
\section2 Changing Keyboard Shortcuts
You can use \QC with your favorite keyboard shortcuts.
To view and edit all keyboard shortcuts defined in \QC, go to \preferences >
\uicontrol Environment > \uicontrol Keyboard. For more information, see
\l{Keyboard Shortcuts}.
\section2 Navigating with the Keyboard
To move between UI controls, press the the \key Tab key or the \key Left,
\key Right, \key Up, and \key Down arrow keys.
\section2 Setting Zoom Levels
To set editor font and colors, select \preferences >
\uicontrol {Text Editor} > \uicontrol {Font & Colors}.
Select the font family and size, and set the zoom level in percentage for
viewing the text or use keyboard shortcuts or the mouse wheel to zoom in or
out.
To improve the readability of text in the editor, adjust the line spacing.
For more information, see \l{Font & Colors}.
The system configuration determines the font sizes in other parts of \QC.
When viewing output, use the \inlineimage icons/plus.png {Plus button} and
\inlineimage icons/minus.png {Minus button} buttons or keyboard shortcuts to
set the zoom level.
For more information, see \l{View output}.
\section2 Changing Color Schemes
Themes set the appearance of the \QC UI: widgets, colors, and icons.
To switch themes, go to \preferences > \uicontrol Environment >
\uicontrol Interface and select a theme in \uicontrol Theme.
Use the \QC text and code editors with your favorite color scheme that sets
highlighting of code elements and the background color. Select one of the
predefined color schemes or create custom ones. The color schemes apply to
highlighting C++ files, QML files, and generic files.
To change the color scheme, go to \preferences >
\uicontrol {Text Editor} > \uicontrol {Font & Colors}.
For more information, see \l{Change editor colors}.
\l{https://api.kde.org/frameworks/syntax-highlighting/html/index.html}
{KSyntaxHighlighting} offers generic highlighting. It is the syntax
highlighting engine for Kate syntax definitions. \QC comes with most of
the commonly used syntax files, and you can download additional files.
To download and use highlight definition files, go to \preferences >
\uicontrol {Text Editor} > \uicontrol {Generic Highlighter}.
For more information, see \l{Download highlight definitions}.
\sa {Installation}, {Reset \QC settings}, {Preferences}
*/

View File

@@ -5373,7 +5373,8 @@ Erreur :
</message>
<message>
<source>Axis</source>
<translation></translation>
<translatorcomment>Peut être au pluriel ?</translatorcomment>
<translation>Axe</translation>
</message>
<message>
<source>Threshold</source>
@@ -6184,10 +6185,6 @@ est en cours.</translation>
</context>
<context>
<name>QKeychain::JobPrivate</name>
<message>
<source>Unknown error</source>
<translation>Erreur inconnue</translation>
</message>
<message>
<source>Access to keychain denied</source>
<translatorcomment>keychain ?</translatorcomment>
@@ -6345,46 +6342,6 @@ Do you want to edit this effect?</source>
<translation>Assurez-vous de l&apos;avoir sauvegardé dans le compositeur d&apos;effet.
Souhaitez-vous éditer cet effet&#xa0;?</translation>
</message>
<message>
<source>Access to keychain denied</source>
<translation>Accès au porte-clés refusé</translation>
</message>
<message>
<source>No keyring daemon</source>
<translation>Aucun démon de trousseau disponible</translation>
</message>
<message>
<source>Already unlocked</source>
<translation>Déjà déverrouillé</translation>
</message>
<message>
<source>No such keyring</source>
<translation>Aucun trousseau de ce type</translation>
</message>
<message>
<source>Bad arguments</source>
<translation>Arguments incorrects</translation>
</message>
<message>
<source>I/O error</source>
<translation>Erreur d&apos;E/S</translation>
</message>
<message>
<source>Cancelled</source>
<translation>Annulé</translation>
</message>
<message>
<source>Keyring already exists</source>
<translation>Le trousseau existe déjà</translation>
</message>
<message>
<source>No match</source>
<translation>Aucun résultat</translation>
</message>
<message>
<source>Unknown error</source>
<translation>Erreur inconnue</translation>
</message>
<message>
<source>Entry not found</source>
<translation>Entrée introuvable</translation>
@@ -12958,7 +12915,7 @@ Exécutable&#xa0;: %2</translation>
</message>
<message>
<source>Stop on failure</source>
<translation>Arrêt sur échec</translation>
<translation>Arrêter sur échec</translation>
</message>
<message>
<source>Run tests in parallel mode using given number of jobs.</source>
@@ -15659,11 +15616,11 @@ Par exemple, «&#xa0;Revision&#xa0;: 15&#xa0;» laissera la branche à la révis
</message>
<message>
<source>CMake arguments:</source>
<translation>Arguments de Cmake :</translation>
<translation>Arguments de CMake&#xa0;:</translation>
</message>
<message>
<source>Tool arguments:</source>
<translation>Arguments de loutil :</translation>
<translation>Arguments de l&apos;outil&#xa0;:</translation>
</message>
<message>
<source>Stage for installation</source>
@@ -16048,7 +16005,7 @@ Par exemple, «&#xa0;Revision&#xa0;: 15&#xa0;» laissera la branche à la révis
</message>
<message>
<source>CMake generator defines how a project is built when using CMake.&lt;br&gt;This setting is ignored when using other build systems.</source>
<translation></translation>
<translation>Le générateur CMake définit comment le projet est compilé par CMake.&lt;br&gt;Ce paramètre est ignoré lors de l&apos;utilisation d&apos;un autre système de compilation.</translation>
</message>
<message>
<source>CMake Tool is unconfigured, CMake generator will be ignored.</source>
@@ -17818,8 +17775,8 @@ Définissez dabord un exécutable valide.</translation>
</message>
<message>
<source>Class View</source>
<translatorcomment>Ou est-ce un rapport avec la Vue ? (graphics/view)</translatorcomment>
<translation>Affichage de la classe</translation>
<translatorcomment>Ce texte est affiché dans le combobox du panneau de gauche ( l&apos;on affiche la hiérarchie du projets ou le système de fichiers). Peut être que &quot;symboles&quot; aurait plus sa place, sachant que ce mode affiche une liste des classes et les symboles définis par ces classes.</translatorcomment>
<translation>Classes</translation>
</message>
</context>
<context>
@@ -20315,7 +20272,8 @@ provided they were unmodified before the refactoring.</source>
</message>
<message>
<source>Whole words o&amp;nly</source>
<translation>&amp;Mots complets uniquement</translation>
<translatorcomment>On trouve, plus couramment, l&apos;expression &quot;Mots entiers&quot;</translatorcomment>
<translation>&amp;Mots entiers uniquement</translation>
</message>
<message>
<source>Use re&amp;gular expressions</source>
@@ -20403,7 +20361,7 @@ provided they were unmodified before the refactoring.</source>
</message>
<message>
<source>Whole Words Only</source>
<translation>Mots complets uniquement</translation>
<translation>Mots entiers uniquement</translation>
</message>
<message>
<source>Use Regular Expressions</source>
@@ -21214,8 +21172,8 @@ To do this, you type this shortcut and a space in the Locator entry field, and t
<translation>Type</translation>
</message>
<message>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;MIME magic data is interpreted as defined by the Shared MIME-info Database specification from &lt;a href=&quot;http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html&quot;&gt;freedesktop.org&lt;/a&gt;.&lt;hr/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Les données magiques MIME sont interprétées conformément à la spécification de la base de données partagée dinformations MIME de &lt;a href=&quot;http://standards.freedesktop.org/shared-mime-info-spec/shared-mime-info-spec-latest.html&quot;&gt;freedesktop.org&lt;/a&gt;.&lt;hr/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;MIME magic data is interpreted as defined by the Shared MIME-info Database specification from &lt;a href=&quot;https://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec/&quot;&gt;freedesktop.org&lt;/a&gt;.&lt;hr/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Les données magiques MIME sont interprétées conformément à la spécification de la base de données partagée dinformations MIME fournie par &lt;a href=&quot;https://www.freedesktop.org/wiki/Specifications/shared-mime-info-spec/&quot;&gt;freedesktop.org&lt;/a&gt;.&lt;hr/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<source>String</source>
@@ -23862,7 +23820,7 @@ Ces préfixes sont utilisés en complément au répertoire actuel pour basculer
</message>
<message>
<source>Switch Between Function Declaration/Definition</source>
<translation>Changer entre la définition et déclaration de la fonction</translation>
<translation>Changer entre la définition et la déclaration de la fonction</translation>
</message>
<message>
<source>Open Function Declaration/Definition in Next Split</source>
@@ -26804,7 +26762,8 @@ Il peut vous être demandé de partager le contenu de ce journal lorsque vous si
</message>
<message>
<source>Global Debugger &amp;Log</source>
<translation>&amp;Journal du débogueur général</translation>
<translatorcomment>Je pense que &quot;Global&quot; se réfère au log et non au débogueur.</translatorcomment>
<translation>&amp;Journal général du débogueur</translation>
</message>
<message>
<source>Reload Debugging Helpers</source>
@@ -27195,7 +27154,7 @@ Il peut vous être demandé de partager le contenu de ce journal lorsque vous si
</message>
<message>
<source>Start and Break on Main</source>
<translation>Démarrer et sarrêter sur le Main</translation>
<translation>Démarrer et s&apos;arrêter sur la fonction Main</translation>
</message>
<message>
<source>DAP</source>
@@ -27344,7 +27303,8 @@ Il peut vous être demandé de partager le contenu de ce journal lorsque vous si
</message>
<message>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;You are trying to run the tool &quot;%1&quot; on an application in %2 mode. The tool is designed to be used %3.&lt;/p&gt;&lt;p&gt;Run-time characteristics differ significantly between optimized and non-optimized binaries. Analytical findings for one mode may or may not be relevant for the other.&lt;/p&gt;&lt;p&gt;Running tools that need debug symbols on binaries that don&apos;t provide any may lead to missing function names or otherwise insufficient output.&lt;/p&gt;&lt;p&gt;Do you want to continue and run the tool in %2 mode?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Vous essayez dexécuter loutil «&#xa0;%1&#xa0;» sur une application en mode %2. Loutil est conçu pour être utilisé en mode %3.&lt;/p&gt;&lt;p&gt;Les caractéristiques dexécution diffèrent considérablement entre les binaires optimisés et non optimisés. Lexécution doutils nécessitant des symboles de débogage sur des binaires qui nen fournissent pas peut conduire à des noms de fonctions manquants ou à des résultats insuffisants.&lt;/p&gt;&lt;p&gt;Voulez-vous continuer et exécuter loutil en mode %2&#xa0;?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
<translatorcomment>%3 est remplacé par la chaîne précédente (on optimized code...)</translatorcomment>
<translation>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Vous essayez d&apos;exécuter l&apos;outil «&#xa0;%1&#xa0;» sur une application en mode %2. L&apos;outil est conçu pour être utilisé %3.&lt;/p&gt;&lt;p&gt;Les caractéristiques d&apos;exécution diffèrent considérablement entre les binaires optimisés et non optimisés. L&apos;exécution d&apos;outils nécessitant des symboles de débogage sur des binaires qui n&apos;en fournissent pas peut conduire à des noms de fonctions manquants ou à des résultats insuffisants.&lt;/p&gt;&lt;p&gt;Voulez-vous continuer et exécuter l&apos;outil en mode %2&#xa0;?&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</translation>
</message>
<message>
<source>Start</source>
@@ -30909,7 +30869,7 @@ Raison : %3</translation>
</message>
<message>
<source>Plugin Emulation</source>
<translation>Émulation de plug-in</translation>
<translation>Émulation de greffon</translation>
</message>
<message>
<source>Use smartcase</source>
@@ -30917,7 +30877,7 @@ Raison : %3</translation>
</message>
<message>
<source>Use wrapscan</source>
<translation>Utiliser recherche circulaire</translation>
<translation>Utiliser la recherche circulaire</translation>
</message>
<message>
<source>Use ignorecase</source>
@@ -32712,7 +32672,7 @@ Valider maintenant&#xa0;?</translation>
</message>
<message>
<source>Manage Remotes...</source>
<translation></translation>
<translation>Gérer les dépôts distants</translation>
</message>
<message>
<source>Git &amp;Tools</source>
@@ -41850,7 +41810,7 @@ Sélectionne un Qt optimisé pour bureaux pour compiler l&apos;application, si d
</message>
<message>
<source>Nim Script File</source>
<translation></translation>
<translation>Fichier de script Nim</translation>
</message>
<message>
<source>Creates an empty Nim file using UTF-8 charset.</source>
@@ -43467,7 +43427,8 @@ Activez cette option si vous envisagez de créer des binaires x86 32 bits sans u
</message>
<message>
<source>Standard error</source>
<translation>Sortie erreur (stderr)</translation>
<translatorcomment>A revoir -&gt; Sortie d&apos;erreur</translatorcomment>
<translation>Sortie d&apos;erreur (stderr)</translation>
</message>
<message>
<source>E&amp;rror message:</source>
@@ -43926,7 +43887,7 @@ Activez cette option si vous envisagez de créer des binaires x86 32 bits sans u
</message>
<message>
<source>Files in All Project Directories:</source>
<translation>Fichiers dans tous les répertoires du projet :</translation>
<translation>Fichiers dans tous les répertoires du projet&#xa0;:</translation>
</message>
<message>
<source>Setting</source>
@@ -55011,7 +54972,8 @@ Ne sapplique pas aux espaces blancs dans les commentaires et dans les chaîne
</message>
<message>
<source>Underline</source>
<translation></translation>
<translatorcomment>Vu dans LibreOffice</translatorcomment>
<translation>Soulignage</translation>
</message>
<message>
<source>Color:</source>
@@ -57242,7 +57204,7 @@ dans «&#xa0;%2&#xa0;».
</message>
<message>
<source>Show %1 Column</source>
<translation></translation>
<translation>Afficher la colonne «&#xa0;%1&#xa0;»</translation>
</message>
<message>
<source>No clangd executable specified.</source>
@@ -57272,7 +57234,7 @@ dans «&#xa0;%2&#xa0;».
</message>
<message>
<source>Error while trying to copy file: %1</source>
<translation></translation>
<translation>Erreur lors de la copie du fichier&#xa0;: %1</translation>
</message>
<message>
<source>Could not copy file: %1</source>
@@ -57441,7 +57403,7 @@ Pour définir ou changer une variable, utilisez VARIABLE=VALEUR.
Pour désactiver une variable, préfixez la ligne avec le caractère «&#xa0;#&#xa0;».
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}.
Les variables existantes peuvent être référencées dans une VALEUR avec ${AUTRE}.
Pour effacer une variable, placez son nom sur une ligne avec rien d&apos;autre sur celle-ci.
Les lignes débutant avec «&#xa0;###&#xa0;» seront traitées comme commentaires.</translation>
</message>
@@ -57754,7 +57716,7 @@ Les lignes débutant avec «&#xa0;###&#xa0;» seront traitées comme commentaire
</message>
<message>
<source>Backtrace frame count:</source>
<translation>Backtracer le nombre de trames :</translation>
<translation>Nombre de trames à remonter&#xa0;:</translation>
</message>
<message>
<source>Suppression files:</source>
@@ -57906,7 +57868,7 @@ Avec la simulation du cache, dautres compteurs dévènements sont activés
</message>
<message>
<source>Check for leaks on finish:</source>
<translation>Vérification des fuites lorsque cest fini :</translation>
<translation>Vérification des fuites à la fin&#xa0;:</translation>
</message>
<message>
<source>Summary Only</source>
@@ -59205,7 +59167,7 @@ Vérifiez les paramètres pour vous assurer que Valgrind est installé et dispon
</message>
<message>
<source>Wrap submit message at:</source>
<translation>Limiter la largeur du message à :</translation>
<translation>Limiter la taille du message à&#xa0;:</translation>
</message>
<message>
<source> characters</source>
@@ -59550,7 +59512,7 @@ si un dépôt requiert une authentification SSH (voir la documentation sur SSH e
</message>
<message>
<source>Mode Selector</source>
<translation></translation>
<translation>Sélecteur de mode</translation>
</message>
<message>
<source>Select different modes depending on the task at hand.</source>
@@ -59558,7 +59520,7 @@ si un dépôt requiert une authentification SSH (voir la documentation sur SSH e
</message>
<message>
<source>&lt;p style=&quot;margin-top: 30px&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td style=&quot;padding-right: 20px&quot;&gt;Welcome:&lt;/td&gt;&lt;td&gt;Open examples, tutorials, and recent sessions and projects.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Edit:&lt;/td&gt;&lt;td&gt;Work with code and navigate your project.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Design:&lt;/td&gt;&lt;td&gt;Visually edit Widget-based user interfaces, state charts and UML models.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Debug:&lt;/td&gt;&lt;td&gt;Analyze your application with a debugger or other analyzers.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Projects:&lt;/td&gt;&lt;td&gt;Manage project settings.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Help:&lt;/td&gt;&lt;td&gt;Browse the help database.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</source>
<translation>&lt;p style=&quot;margin-top: 30px&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td style=&quot;padding-right: 20px&quot;&gt;Accueil :&lt;/td&gt;&lt;td&gt;Ouvrez des exemples, des tutoriels et des sessions et projets récents.&lt;/td&gt;&lt;/tr&gt;&lt;td&gt;Modifier :&lt;/td&gt;&lt;td&gt;Travaillez avec le code et naviguez dans votre projet.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Design:&lt;/td&gt;&lt;td&gt;Modifiez visuellement des interfaces utilisateur basées sur des widgets, des diagrammes détat et des modèles UML. &lt;/td&gt;&lt;/tr&gt;&lt;ttr&gt;&lt;td&gt;Débogage :&lt;/td&gt;&lt;td&gt;Analysez votre application avec un débogueur ou dautres analyseurs.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Projets :&lt;/td&gt;&lt;td&gt;Gérez les paramètres du projet.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Aide :&lt;/td&gt;&lt;td&gt;Parcourez la base de données daide.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</translation>
<translation>&lt;p style=&quot;margin-top: 30px&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td style=&quot;padding-right: 20px&quot;&gt;Accueil :&lt;/td&gt;&lt;td&gt;Ouvrez des exemples, des tutoriels et des sessions et projets récents.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Modifier&#xa0;:&lt;/td&gt;&lt;td&gt;Travaillez avec le code et naviguez dans votre projet.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Design&#xa0;:&lt;/td&gt;&lt;td&gt;Modifiez visuellement des interfaces utilisateur basées sur des widgets, des diagrammes d&apos;état et des modèles UML. &lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Débogage&#xa0;:&lt;/td&gt;&lt;td&gt;Analysez votre application avec un débogueur ou d&apos;autres analyseurs.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Projets&#xa0;:&lt;/td&gt;&lt;td&gt;Gérez les paramètres du projet.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Aide&#xa0;:&lt;/td&gt;&lt;td&gt;Parcourez la base de données d&apos;aide.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</translation>
</message>
<message>
<source>Kit Selector</source>
@@ -59590,7 +59552,7 @@ si un dépôt requiert une authentification SSH (voir la documentation sur SSH e
</message>
<message>
<source>Build the active project.</source>
<translation>Compiler le projet actif.</translation>
<translation>Compile le projet actif.</translation>
</message>
<message>
<source>Locator</source>
@@ -59610,7 +59572,7 @@ si un dépôt requiert une authentification SSH (voir la documentation sur SSH e
</message>
<message>
<source>Find compile and application output here, as well as a list of configuration and build issues, and the panel for global searches.</source>
<translation>Vous y trouverez les résultats de la compilation et de lapplication, ainsi quune liste des problèmes de configuration et de compilation, et le panneau des recherches générales.</translation>
<translation>Vous y trouverez les résultats de la compilation et de l&apos;application, ainsi quune liste des problèmes de configuration et de compilation, ainsi que le panneau des recherches globales.</translation>
</message>
<message>
<source>Progress Indicator</source>
@@ -59634,8 +59596,7 @@ si un dépôt requiert une authentification SSH (voir la documentation sur SSH e
</message>
<message>
<source>You have now completed the UI tour. To learn more about the highlighted controls, see &lt;a style=&quot;color: #41CD52&quot; href=&quot;qthelp://org.qt-project.qtcreator/doc/creator-quick-tour.html&quot;&gt;User Interface&lt;/a&gt;.</source>
<translation>Vous avez maintenant terminé la visite guidée de linterface utilisateur
Pour en savoir plus sur les contrôles mis en évidence, voir l&lt;a style=&quot;color: #41CD52&quot; href=&quot;qthelp://org.qt-project.qtcreator/doc/creator-quick-tour.html&quot;&gt;interface utilisateur&lt;/a&gt;.</translation>
<translation>Vous avez maintenant terminé la visite guidée de l&apos;interface utilisateur. Pour en savoir plus sur les contrôles mis en évidence, consultez la page d&apos;aide concernant l&apos;&lt;a style=&quot;color: #41CD52&quot; href=&quot;qthelp://org.qt-project.qtcreator/doc/creator-quick-tour.html&quot;&gt;interface utilisateur&lt;/a&gt;.</translation>
</message>
<message>
<source>UI Introduction %1/%2 &gt;</source>
@@ -60869,7 +60830,7 @@ Elle est utilisée pour calculer la taille totale implicite.</translation>
</message>
<message>
<source>Current value of the Slider. The default value is 0.0.</source>
<translation></translation>
<translation>Valeur actuelle du slider. La valeur par défaut est 0.0.</translation>
</message>
<message>
<source>Maximum value</source>

View File

@@ -6818,7 +6818,8 @@ namespace sol {
static_assert(std::is_constructible<T, Args&&...>::value, "T must be constructible with Args");
*this = nullopt;
this->construct(std::forward<Args>(args)...);
new (static_cast<void*>(this)) optional(std::in_place, std::forward<Args>(args)...);
return **this;
}
/// Swaps this optional with the other.

View File

@@ -15,6 +15,7 @@
#include "cmakespecificsettings.h"
#include "cmaketoolmanager.h"
#include "projecttreehelper.h"
#include "targethelper.h"
#include <android/androidconstants.h>
@@ -1031,6 +1032,11 @@ bool CMakeBuildSystem::renameFile(Node *context,
return false;
}
void CMakeBuildSystem::buildNamedTarget(const QString &target)
{
CMakeProjectManager::Internal::buildTarget(this, target);
}
FilePaths CMakeBuildSystem::filesGeneratedFrom(const FilePath &sourceFile) const
{
FilePath project = projectDirectory();

View File

@@ -64,6 +64,7 @@ public:
bool renameFile(ProjectExplorer::Node *context,
const Utils::FilePath &oldFilePath,
const Utils::FilePath &newFilePath) final;
void buildNamedTarget(const QString &target) final;
Utils::FilePaths filesGeneratedFrom(const Utils::FilePath &sourceFile) const final;
QString name() const final { return QLatin1String("cmake"); }

View File

@@ -23,7 +23,7 @@ using namespace Utils;
namespace CMakeProjectManager::Internal {
using BuildAcceptor = std::function<void(const FilePath &, const QString &)>;
using BuildAcceptor = std::function<void(const BuildSystem *, const QString &)>;
// CMakeBuildTargetFilter
@@ -62,8 +62,8 @@ static LocatorMatcherTasks cmakeMatchers(const BuildAcceptor &acceptor)
LocatorFilterEntry entry;
entry.displayName = displayName;
if (acceptor) {
entry.acceptor = [projectPath, displayName, acceptor] {
acceptor(projectPath, displayName);
entry.acceptor = [bs, displayName, acceptor] {
acceptor(bs, displayName);
return AcceptResult();
};
}

View File

@@ -4,34 +4,21 @@
#include "targethelper.h"
#include <projectexplorer/buildmanager.h>
#include <projectexplorer/buildsystem.h>
#include <projectexplorer/buildsteplist.h>
#include <projectexplorer/projectmanager.h>
#include <projectexplorer/target.h>
#include <utils/algorithm.h>
#include "cmakebuildstep.h"
#include "cmakebuildsystem.h"
#include "cmakeproject.h"
namespace CMakeProjectManager {
namespace CMakeProjectManager::Internal {
void buildTarget(const Utils::FilePath &projectPath, const QString &targetName)
void buildTarget(const ProjectExplorer::BuildSystem *buildSystem, const QString &targetName)
{
// Get the project containing the target selected
const auto cmakeProject = qobject_cast<CMakeProject *>(Utils::findOrDefault(
ProjectExplorer::ProjectManager::projects(), [projectPath](ProjectExplorer::Project *p) {
return p->projectFilePath() == projectPath;
}));
if (!cmakeProject || !cmakeProject->activeTarget()
|| !cmakeProject->activeTarget()->activeBuildConfiguration())
return;
if (ProjectExplorer::BuildManager::isBuilding(cmakeProject))
if (ProjectExplorer::BuildManager::isBuilding(buildSystem->project()))
ProjectExplorer::BuildManager::cancel();
// Find the make step
const ProjectExplorer::BuildStepList *buildStepList
= cmakeProject->activeTarget()->activeBuildConfiguration()->buildSteps();
= buildSystem->buildConfiguration()->buildSteps();
const auto buildStep = buildStepList->firstOfType<Internal::CMakeBuildStep>();
if (!buildStep)
return;
@@ -41,8 +28,8 @@ void buildTarget(const Utils::FilePath &projectPath, const QString &targetName)
buildStep->setBuildTargets({targetName});
// Build
ProjectExplorer::BuildManager::buildProjectWithDependencies(cmakeProject);
ProjectExplorer::BuildManager::buildProjectWithDependencies(buildSystem->project());
buildStep->setBuildTargets(oldTargets);
}
} // namespace CMakeProjectManager
} // namespace CMakeProjectManager::Internal

View File

@@ -3,12 +3,12 @@
#pragma once
#include "cmake_global.h"
#include <QString>
#include <utils/filepath.h>
namespace ProjectExplorer { class BuildSystem; }
namespace CMakeProjectManager {
namespace CMakeProjectManager::Internal {
CMAKE_EXPORT void buildTarget(const Utils::FilePath &projectPath, const QString &targetName);
void buildTarget(const ProjectExplorer::BuildSystem *buildSystem, const QString &targetName);
} // namespace CMakeProjectManager
} // namespace CMakeProjectManager::Internal

View File

@@ -23,23 +23,118 @@ static inline QString msgCannotInterrupt(qint64 pid, const QString &why)
# define PROCESS_SUSPEND_RESUME (0x0800)
#endif // PROCESS_SUSPEND_RESUME
static BOOL isWow64Process(HANDLE hproc)
{
using LPFN_ISWOW64PROCESS = BOOL (WINAPI*)(HANDLE, PBOOL);
BOOL ret = false;
static LPFN_ISWOW64PROCESS fnIsWow64Process = NULL;
if (!fnIsWow64Process) {
if (HMODULE hModule = GetModuleHandle(L"kernel32.dll"))
fnIsWow64Process = reinterpret_cast<LPFN_ISWOW64PROCESS>(GetProcAddress(hModule, "IsWow64Process"));
}
if (!fnIsWow64Process) {
qWarning("Cannot retrieve symbol 'IsWow64Process'.");
return false;
}
if (!fnIsWow64Process(hproc, &ret)) {
qWarning("IsWow64Process() failed for %p: %s",
hproc, qPrintable(Utils::winErrorMessage(GetLastError())));
return false;
}
return ret;
}
// Open the process and break into it
bool Debugger::Internal::interruptProcess(qint64 pID, QString *errorMessage)
{
bool ok = false;
HANDLE inferior = NULL;
const DWORD rights = PROCESS_QUERY_INFORMATION | PROCESS_SET_INFORMATION | PROCESS_VM_OPERATION
| PROCESS_VM_WRITE | PROCESS_VM_READ | PROCESS_DUP_HANDLE
| PROCESS_TERMINATE | PROCESS_CREATE_THREAD | PROCESS_SUSPEND_RESUME;
do {
const DWORD rights = PROCESS_QUERY_INFORMATION|PROCESS_SET_INFORMATION
|PROCESS_VM_OPERATION|PROCESS_VM_WRITE|PROCESS_VM_READ
|PROCESS_DUP_HANDLE|PROCESS_TERMINATE|PROCESS_CREATE_THREAD|PROCESS_SUSPEND_RESUME;
inferior = OpenProcess(rights, FALSE, DWORD(pID));
if (inferior == NULL) {
*errorMessage = QString::fromLatin1("Cannot open process %1: %2")
.arg(pID)
.arg(Utils::winErrorMessage(GetLastError()));
} else if (ok = DebugBreakProcess(inferior); !ok) {
*errorMessage = "DebugBreakProcess failed: " + Utils::winErrorMessage(GetLastError());
*errorMessage = QString::fromLatin1("Cannot open process %1: %2").
arg(pID).arg(Utils::winErrorMessage(GetLastError()));
break;
}
enum DebugBreakApi {
UseDebugBreakApi,
UseWin64Interrupt,
UseWin32Interrupt
};
/*
Windows 64 bit has a 32 bit subsystem (WOW64) which makes it possible to run a
32 bit application inside a 64 bit environment.
When GDB is used DebugBreakProcess must be called from the same system (32/64 bit) running
the inferior.
Therefore we need helper executables (win(32/64)interrupt.exe) on Windows 64 bit calling
DebugBreakProcess from the correct system.
DebugBreak matrix for windows
Api = UseDebugBreakApi
Win64 = UseWin64Interrupt
Win32 = UseWin32Interrupt
N/A = This configuration is not possible
| Windows 32bit | Windows 64bit
| QtCreator 32bit | QtCreator 32bit | QtCreator 64bit
| Inferior 32bit | Inferior 32bit | Inferior 64bit | Inferior 32bit | Inferior 64bit |
----------|-----------------|-----------------|-----------------|-----------------|----------------|
GDB 32bit | Api | Api | NA | Win32 | NA |
64bit | NA | Api | Win64 | Win32 | Api |
----------|-----------------|-----------------|-----------------|-----------------|----------------|
*/
DebugBreakApi breakApi = UseDebugBreakApi;
#ifdef Q_OS_WIN64
if (isWow64Process(inferior))
breakApi = UseWin32Interrupt;
#else
if (isWow64Process(GetCurrentProcess()) && !isWow64Process(inferior))
breakApi = UseWin64Interrupt;
#endif
if (breakApi == UseDebugBreakApi) {
ok = DebugBreakProcess(inferior);
if (!ok)
*errorMessage = "DebugBreakProcess failed: " + Utils::winErrorMessage(GetLastError());
} else {
const QString executable = breakApi == UseWin32Interrupt
? QCoreApplication::applicationDirPath() + "/win32interrupt.exe"
: QCoreApplication::applicationDirPath() + "/win64interrupt.exe";
if (!QFileInfo::exists(executable)) {
*errorMessage = QString::fromLatin1(
"%1 does not exist. If you have built %2 "
"on your own, checkout "
"https://code.qt.io/cgit/qt-creator/binary-artifacts.git/.")
.arg(QDir::toNativeSeparators(executable),
QGuiApplication::applicationDisplayName());
break;
}
switch (QProcess::execute(executable, QStringList(QString::number(pID)))) {
case -2:
*errorMessage = QString::fromLatin1("Cannot start %1. Check src\\tools\\win64interrupt\\win64interrupt.c for more information.").
arg(QDir::toNativeSeparators(executable));
break;
case 0:
ok = true;
break;
default:
*errorMessage = QDir::toNativeSeparators(executable)
+ " could not break the process.";
break;
}
break;
}
} while (false);
if (inferior != NULL)
CloseHandle(inferior);
if (!ok)

View File

@@ -82,6 +82,7 @@ public:
const Utils::FilePath &newFilePath);
virtual bool addDependencies(Node *context, const QStringList &dependencies);
virtual bool supportsAction(Node *context, ProjectAction action, const Node *node) const;
virtual void buildNamedTarget(const QString &target) { Q_UNUSED(target) }
virtual QString name() const = 0;
// Owned by the build system. Use only in main thread. Can go away at any time.

View File

@@ -102,20 +102,90 @@ void DesktopProcessSignalOperation::killProcessSilently(qint64 pid)
void DesktopProcessSignalOperation::interruptProcessSilently(qint64 pid)
{
#ifdef Q_OS_WIN
enum SpecialInterrupt { NoSpecialInterrupt, Win32Interrupt, Win64Interrupt };
bool is64BitSystem = is64BitWindowsSystem();
SpecialInterrupt si = NoSpecialInterrupt;
if (is64BitSystem)
si = is64BitWindowsBinary(m_debuggerCommand) ? Win64Interrupt : Win32Interrupt;
/*
Windows 64 bit has a 32 bit subsystem (WOW64) which makes it possible to run a
32 bit application inside a 64 bit environment.
When GDB is used DebugBreakProcess must be called from the same system (32/64 bit) running
the inferior. If CDB is used we could in theory break wow64 processes,
but the break is actually a wow64 breakpoint. CDB is configured to ignore these
breakpoints, because they also appear on module loading.
Therefore we need helper executables (win(32/64)interrupt.exe) on Windows 64 bit calling
DebugBreakProcess from the correct system.
DebugBreak matrix for windows
Api = UseDebugBreakApi
Win64 = UseWin64InterruptHelper
Win32 = UseWin32InterruptHelper
N/A = This configuration is not possible
| Windows 32bit | Windows 64bit
| QtCreator 32bit | QtCreator 32bit | QtCreator 64bit
| Inferior 32bit | Inferior 32bit | Inferior 64bit | Inferior 32bit | Inferior 64bit
----------|-----------------|-----------------|-----------------|-----------------|----------------
CDB 32bit | Api | Api | N/A | Win32 | N/A
64bit | N/A | Win64 | Win64 | Api | Api
----------|-----------------|-----------------|-----------------|-----------------|----------------
GDB 32bit | Api | Api | N/A | Win32 | N/A
64bit | N/A | N/A | Win64 | N/A | Api
----------|-----------------|-----------------|-----------------|-----------------|----------------
*/
HANDLE inferior = NULL;
const DWORD rights = PROCESS_QUERY_INFORMATION | PROCESS_SET_INFORMATION | PROCESS_VM_OPERATION
| PROCESS_VM_WRITE | PROCESS_VM_READ | PROCESS_DUP_HANDLE
| PROCESS_TERMINATE | PROCESS_CREATE_THREAD | PROCESS_SUSPEND_RESUME;
do {
const DWORD rights = PROCESS_QUERY_INFORMATION|PROCESS_SET_INFORMATION
|PROCESS_VM_OPERATION|PROCESS_VM_WRITE|PROCESS_VM_READ
|PROCESS_DUP_HANDLE|PROCESS_TERMINATE|PROCESS_CREATE_THREAD|PROCESS_SUSPEND_RESUME;
inferior = OpenProcess(rights, FALSE, pid);
if (inferior == NULL) {
appendMsgCannotInterrupt(
pid, Tr::tr("Cannot open process: %1") + winErrorMessage(GetLastError()));
} else if (!DebugBreakProcess(inferior)) {
appendMsgCannotInterrupt(
pid,
Tr::tr("DebugBreakProcess failed:") + QLatin1Char(' ')
appendMsgCannotInterrupt(pid, Tr::tr("Cannot open process: %1")
+ winErrorMessage(GetLastError()));
break;
}
bool creatorIs64Bit = is64BitWindowsBinary(
FilePath::fromUserInput(QCoreApplication::applicationFilePath()));
if (!is64BitSystem
|| si == NoSpecialInterrupt
|| (si == Win64Interrupt && creatorIs64Bit)
|| (si == Win32Interrupt && !creatorIs64Bit)) {
if (!DebugBreakProcess(inferior)) {
appendMsgCannotInterrupt(pid, Tr::tr("DebugBreakProcess failed:")
+ QLatin1Char(' ') + winErrorMessage(GetLastError()));
}
} else if (si == Win32Interrupt || si == Win64Interrupt) {
QString executable = QCoreApplication::applicationDirPath();
executable += si == Win32Interrupt
? QLatin1String("/win32interrupt.exe")
: QLatin1String("/win64interrupt.exe");
if (!QFileInfo::exists(executable)) {
appendMsgCannotInterrupt(pid,
Tr::tr("%1 does not exist. If you built %2 "
"yourself, check out https://code.qt.io/cgit/"
"qt-creator/binary-artifacts.git/.")
.arg(QDir::toNativeSeparators(executable),
QGuiApplication::applicationDisplayName()));
}
switch (QProcess::execute(executable, QStringList(QString::number(pid)))) {
case -2:
appendMsgCannotInterrupt(pid, Tr::tr(
"Cannot start %1. Check src\\tools\\win64interrupt\\win64interrupt.c "
"for more information.").arg(QDir::toNativeSeparators(executable)));
break;
case 0:
break;
default:
appendMsgCannotInterrupt(pid, QDir::toNativeSeparators(executable)
+ QLatin1Char(' ') + Tr::tr("could not break the process."));
break;
}
}
} while (false);
if (inferior != NULL)
CloseHandle(inferior);
#else

View File

@@ -1085,6 +1085,15 @@ void Project::configureAsExampleProject(Kit * /*kit*/)
{
}
void Project::buildTarget(const QString &target)
{
if (!activeTarget() || !activeTarget()->activeBuildConfiguration()
|| !activeTarget()->activeBuildConfiguration()->buildSystem()) {
return;
}
activeTarget()->activeBuildConfiguration()->buildSystem()->buildNamedTarget(target);
}
bool Project::hasMakeInstallEquivalent() const
{
return d->m_hasMakeInstallEquivalent;

View File

@@ -131,6 +131,8 @@ public:
bool needsBuildConfigurations() const;
virtual void configureAsExampleProject(ProjectExplorer::Kit *kit);
void buildTarget(const QString &target);
virtual ProjectImporter *projectImporter() const;
virtual DeploymentKnowledge deploymentKnowledge() const { return DeploymentKnowledge::Bad; }

View File

@@ -1,5 +1,5 @@
add_qtc_plugin(QmlJSEditor
DEPENDS LanguageUtils QmlJS QmlEditorWidgets CMakeProjectManager
DEPENDS LanguageUtils QmlJS QmlEditorWidgets
PLUGIN_DEPENDS Core ProjectExplorer QmlJSTools TextEditor LanguageClient
SOURCES
qmlexpressionundercursor.cpp qmlexpressionundercursor.h

View File

@@ -5,7 +5,6 @@
#include "qmljseditorconstants.h"
#include "qmljseditorsettings.h"
#include <cmakeprojectmanager/targethelper.h>
#include <coreplugin/icore.h>
#include <coreplugin/idocument.h>
#include <projectexplorer/project.h>
@@ -120,11 +119,10 @@ void QmlTaskManager::updateSemanticMessagesNow()
static void triggerQmllintCMakeTarget()
{
CMakeProjectManager::buildTarget(
ProjectManager::startupProject()->projectFilePath(), Constants::QMLLINT_BUILD_TARGET);
if (ProjectManager::startupProject())
ProjectManager::startupProject()->buildTarget(Constants::QMLLINT_BUILD_TARGET);
}
void QmlTaskManager::updateMessagesNow(bool updateSemantic)
{
// heuristic: qmllint will output meaningful warnings if qmlls is enabled