<appendix id="plugin-tools">
<title
>Outils modules externes</title>

<indexterm zone="plugin-tools">
  <primary
>modules externes</primary
></indexterm>

<para
>&kdevelop; contient un grand nombre de petits outils qui vous aident à effectuer certaines tâches. La plupart d'entre eux sont réalisés sous forme de modules externes (plugins). Cela signifie que, si vous n'avez pas besoin d'un module externe, vous pouvez le désactiver.</para>
<para
>Cela signifie également que si vous cherchez une fonctionnalité qui devrait être présente et qui ne l'est pas, il se peut qu'elle soit implémentée dans un module externe et que ce denier soit désactivé. Par exemple, dans le menu Fichier, il y a une fonctionnalité Ouverture rapide, mais uniquement si elle est activée dans la boîte de dialogue Projet - Options du projet. </para>
 
<para
>Techniquement, les modules externes sont basés sur la classe KDevPlugin définie dans lib/interfaces/kdevplugin.h. La suite est tirée d'un commentaire qui en provient.</para>

<para
>KDevPlugin est la classe de base pour tous les modules externes de KDevelop. Un module externe est un composant qui est chargé dans le shell de KDevelop au démarrage ou à la suite d'une requête. Un module externe a une portée qui peut être soit : <itemizedlist>
<listitem
><simpara
>Core</simpara
></listitem>
<listitem
><simpara
>Global</simpara
></listitem>
<listitem
><simpara
>Projet</simpara
></listitem>
</itemizedlist>
</para>

<para
>Les modules externes « core » sont des modules externes globaux qui offrent une certaine fonctionnalité « core » et ainsi, ne sont pas sélectionnables par l'utilisateur dans les pages de configuration des modules externes.</para>

<para
>Les modules externes globaux sont des modules externes qui ont besoin du shell uniquement pour être chargés et n'agissent pas sur l'interface de KDevProject et / ou n'utilisent pas d'informations à l'échelle du projet. Par exemple, le module externe « uimode » permet au développeur de choisir l'interface utilisateur qu'il souhaite employer. </para>

<para
>Les modules externes de projet nécessitent qu'un projet soit chargé et sont habituellement chargés / déchargés tout au long du projet. Si un module externe agit sur des informations liées au projet, alors c'est un module externe de projet. Le gestionnaire Automake, par exemple, ne doit être actif que quand un projet basé sur Automake est actuellement chargé. </para>

<para
>Comme établi ci-dessus, les modules externes « core » ne peuvent être désactivés. Les modules externes globaux peuvent être activés / désactivés dans <menuchoice
><guimenu
>Configuration</guimenu
> <guimenuitem
>Configurer KDevelop...</guimenuitem
></menuchoice
> sous <guibutton
>Modules externes</guibutton
>. Les modules externes peuvent être activés / désactivés dans <menuchoice
><guimenu
>Projet</guimenu
> <guimenuitem
>Options du projet...</guimenuitem
></menuchoice
> sous <guibutton
>Modules externes</guibutton
>. Les modules externes actifs peuvent avoir de nombreux effets sur KDevelop. Selon leur fonction, ils peuvent ajouter des menus supplémentaires, des éléments de menus supplémentaires, des boutons d'outils supplémentaires, etc. </para>

<para
>Les modules externes qui sont désactivés n'encombrent pas vos menus et ne sont pas chargés en mémoire. </para>


<para
>La liste de modules externes suivante est générée par un petit script (listplugins.sh) écrit par Volker Paul. Tous les modules externes comportent un fichier .desktop, où sont enregistrées des informations telles que leur nom et des commentaires. Si dans ce qui suit ces commentaires ne sont pas très utiles, c'est parce que leurs auteurs l'ont voulu ainsi.</para>
<para
>Les modules externes sont groupés par portée (Core, Global, Projet).</para>

<para
>Portée : Core</para>
<itemizedlist>
<listitem
><formalpara id="KDevAppWizard">
<title
>Assistant d'application</title>
<para
>Assistant d'application</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevDiff">
<title
>Afficheur de différences</title>
<para
>Afficheur de différences</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevFileCreate">
<title
>Création de fichiers</title>
<para
>Création de fichiers</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevFullScreen">
<title
>Plein écran</title>
<para
>Plein écran</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevTipOfDay">
<title
>Astuce du jour</title>
<para
>Astuce du jour</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevUIChooser">
<title
>Sélection de l'interface utilisateur</title>
<para
>Fournit une boîte de dialogue pour la sélection du mode d'interface utilisateur.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevVCSManager">
<title
>Gestionnaire VCS</title>
<para
>Gestionnaire de systèmes de contrôle de versions </para
></formalpara
></listitem>
</itemizedlist>

<para
>Portée : Global</para>
<itemizedlist>
<listitem
><formalpara id="KDevAbbrev">
<title
>Expansion des abréviations</title>
<para
>Fournit la prise en charge des abréviations personnalisables - mots courts qui s'étendent en structures de code couramment requises.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevDocumentation">
<title
>Documentation</title>
<para
>Le module externe Documentation offre la navigation et la recherche dans la documentation locale et en ligne avec une prise en charge pour des systèmes de documentation multiples.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevfilelist">
<title
>Liste des fichiers</title>
<para
>Fournit une liste de tous les fichiers actuellement ouverts. (Pratique quand la barre d'onglets n'est pas tout à fait assez large.)</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevFileSelector">
<title
>Sélecteur de fichiers</title>
<para
>Puissant utilitaire navigateur de fichiers transparent vis-à-vis du réseau.</para
></formalpara
></listitem>
<listitem
><formalpara>
<title
>Filtrage et insertion dans le shell</title>
<para
>Fournit un moyen de manipuler le texte d'un éditeur à l'aide d'outils en ligne de commande. Apparaît dans le menu Outils.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevGrepView">
<title
>Interface Grep</title>
<para
>Intègre « find|grep » dans KDevelop - permet la recherche rapide de fichiers multiples à l'aide de motifs ou d'expressions rationnelles.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevKonsoleView">
<title
>Konsole embarquée</title>
<para
>Ce module externe donne à KDevelop une console embarquée pour un accès en ligne de commande rapide et facile.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevOpenWith">
<title
>Ajout du menu « Ouvrir avec »</title>
<para
>Ce module externe fournit des alternatives à « Ouvrir » additionnelles pour divers menus contextuels de KDevelop.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevPartExplorer">
<title
>Outil Explorateur de composants</title>
<para
>Un outil graphique pour effectuer des requêtes de type KTrader sur des services déclarés</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevRegexpTest">
<title
>Testeur d'expressions rationnelles</title>
<para
>Outil permettant de concevoir et de tester des expressions régulière par rapport à la syntaxe d'expressions rationnelles communes.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevReplace">
<title
>Composant remplacement</title>
<para
>Ce module externe est un outil « Recherche et remplacement » interactif à l'échelle du projet. Il effectue une recherche à l'aide de la correspondance de chaînes ou d'expressions rationnelles et sélectionne les remplacements à effectuer à partir d'un aperçu avant que l'action ne soit finalisée. Quand chargé, il apparaît dans le menu Édition.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevscripting">
<title
>Scriptage</title>
<para
>Le module Scriptage offre un scriptage basé sur KScript de l'application KDevelop</para
></formalpara
></listitem>
<listitem
><formalpara id="Code_Snippets">
<title
>Fragments de code</title>
<para
>Ce module externe vous permet de stocker des fragments de code et de les ajouter à votre code</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevTextTools">
<title
>Structure du texte</title>
<para
>Fournit un vue d'ensemble de la structure et une navigation pour les fichiers HTML et TEX</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevTools">
<title
>Ajout au menu Outils</title>
<para
>Ce module externe fournit un moyen facile d'ajouter des applications externes au menu Outils et à la barre d'outils.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevvalgrind">
<title
>Interface Valgrind</title>
<para
>Valgrind est un outil qui vous aide à repérer les problèmes de gestion de mémoire dans les programmes. http://developer.kde.org/~sewardj/</para
></formalpara
></listitem>
</itemizedlist>

<para
>Portée : Projet</para>
<itemizedlist>
<listitem
><formalpara id="KDevannotation">
<title
>Module externe Annotation</title>
<para
>Description des annotations</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevAStyle">
<title
>Formateur de code source</title>
<para
>Un module externe pour formater du code source en fonction d'un ensemble spécifié de règles. Quand chargé, il se trouve dans le menu Outils.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevBookmarks">
<title
>Signets</title>
<para
>Module externe qui fournir une navigation et une vue d'ensemble des signets actifs et les rend persistants entre deux sessions.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevClassView">
<title
>Vue des classes</title>
<para
>Ce module externe affiche une vue graphique de toutes les classes du projet, complète avec les méthodes et les attributs. Il fournit également un moyen de navigation direct dans les sources.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevcopyto">
<title
>Copier vers</title>
<para
>Module externe simple d'envoi de fichiers. Il effectue une copie de fichier sur n'importe quel protocole KIO pris en charge.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevCTags2">
<title
>Interface CTags</title>
<para
>CTags est un outil de navigation dans les sources avec prise en charge de nombreux langages. Quand chargé, il fournit un menu contextuel pour trouver des déclarations / définitions de types, ainsi qu'une boîte de dialogue de requêtes. http://ctags.sourceforge.net/</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevdistpart">
<title
>Prise en charge du conditionnement final</title>
<para
>Aide à construire et à publier le projet final. Seul le format de paquetage RPM est pris en charge pour l'instant.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevDoxygen">
<title
>Prise en charge de Doxygen</title>
<para
>Le module externe Doxygen fournit un moyen de spécifier et de contrôler la génération de documentation pour un projet, en fonction du contenu des sources. Vous devez avoir installé Doxygen pour pouvoir l'utiliser. Pour plus d'informations, visitez http://www.doxygen.org</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevQuickOpen">
<title
>QuickOpen</title>
<para
>Fournit un moyen efficace de trouver / ouvrir des fichiers, classes et méthodes dans un gros projet. Il apparaît dans les menus Fichier et Outils quand chargé.</para
></formalpara
></listitem>
<listitem
><formalpara id="KDevSecurity">
<title
>Contrôleur de sécurité</title>
<para
>Contrôleur de sécurité du code</para
></formalpara
></listitem>
</itemizedlist>
<para
>Jusqu'ici, la liste des modules externes générés.</para>


<table id="table-project-parts">
<title
>Modules externes de gestion de projet dans &kdevelop;</title>
<tgroup cols="2"
><tbody>
<row>
  <entry
>antproject</entry>
  <entry
>Gestionnaire de projets ANT (applications &Java;)</entry>
</row>
<row>
  <entry
>autoproject</entry>
  <entry
>Gestionnaire de projets Automake</entry>
</row>
<row>
  <entry
>customproject</entry>
  <entry
>Gestionnaire de projets personnalisés</entry>
</row>
<row>
  <entry
>trollproject</entry>
  <entry
>Gestionnaire de projets basé sur QMake</entry>
</row>
</tbody
></tgroup>
</table>
<para
>Les modules externes ci-dessus sont actuellement (en mai 2005) vides. Peut-être la prise en charge des gestionnaires de projets sera-t-elle implémentée sous forme de modules externes dans le futur.</para>


<table>
<title
>Modules externes de gestion des langages dans &kdevelop;</title>
<tgroup cols="2">
<tbody>
<row
><entry
>cppsupport</entry
><entry
>Prise en charge de C/C++</entry
></row>
<row
><entry
>fortransupport</entry
><entry
>Prise en charge de Fortran</entry
></row>
<row
><entry
>javasupport</entry
><entry
>Prise en charge de &Java;</entry
></row>
<row
><entry
>perlsupport</entry
><entry
>Prise en charge de Perl</entry
></row>
<row
><entry
>phpsupport</entry
><entry
>Prise en charge de PHP</entry
></row>
<row
><entry
>pythonsupport</entry
><entry
>Prise en charge de Python</entry
></row>
</tbody
></tgroup>
</table>


<para
>Dans ce qui suit, certains des modules externes seront étudiés en détail.</para>

<itemizedlist>
<listitem>
<formalpara>
<title
>Le module externe <command
>abbrev</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>abbrev</command
></primary
></indexterm>

<para
>Ce module externe étend les abréviations en fragments de code fréquemment utilisés. Il est activé en appuyant sur <keycombo
><keycap
>Ctrl</keycap
> <keycap
>Espace</keycap
></keycombo
>. Par exemple, quand vous saisissez <literal
>« ife »</literal
> en C++ dans un éditeur et que vous appuyez sur <keycombo
><keycap
>Ctrl</keycap
><keycap
>Espace</keycap
></keycombo
>, vous obtenez un modèle de code <literal
>if-else</literal
> et enregistrez certaines frappes de touches. L'ensemble des abréviations prises en charge dépend du langage de programmation du fichier édité. Par exemple, pour le PHP, vous serez bien évidemment intéressé par des modèles de code autres que pour &Java;. </para>
</formalpara>

<para
>L'ensemble des modèles de code est configurable. Si le module externe est activé, vous pouvez voir ceux qui sont disponibles dans la boîte de dialogue <menuchoice
><guimenu
>Configuration</guimenu
> <guimenuitem
>Configurer KDevelop...</guimenuitem
></menuchoice
> sous <guibutton
>Abréviations</guibutton
>. </para>
</listitem>

<listitem>
<formalpara id="KDevFilter">
<title
>Le module externe <command
>filter</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>filter</command
></primary
></indexterm>

<para
>Celui-ci offre deux fonctionnalités. Si vous sélectionnez <menuchoice
><guimenu
>Outils</guimenu
> <guimenuitem
>Exécuter une commande</guimenuitem
></menuchoice
>, vous pouvez saisir une commande de shell. La sortie de cette commande est insérée dans le tampon de l'éditeur quand vous cliquez sur le bouton <guibutton
>Démarrer</guibutton
>. </para>
</formalpara>

<para
>Une fonctionnalité connexe est disponible sous <menuchoice
><guimenu
>Outils</guimenu
><guimenuitem
>Choix d'un filtre par une commande...</guimenuitem
></menuchoice
>. Pour l'utiliser, vous devez sélectionner une zone de texte dans l'éditeur. Si vous saisissez à présent une commande de shell et que vous cliquez sur le bouton <guibutton
>Démarrer</guibutton
>, la commande est lancée et la sélection utilisée comme l'entrée standard pour celle-ci. La sortie standard de la commande est alors insérée dans l'éditeur, remplaçant la sélection. </para>

<para
>Par exemple, si vous écrivez de la documentation, vous devez fréquemment vous référer aux éléments de menu. Pour le faire correctement, par exemple pour la commande « Copier » du menu Édition, vous devez écrire : <programlisting
>&lt;menuchoice&gt;&lt;guimenu&gt;Édition&lt;/guimenu&gt;&lt;guimenuitem&gt;Copier&lt;/guimenuitem&gt;&lt;/menuchoice&gt;</programlisting
> Comme c'est fastidieux, vous pourriez aussi bien n'écrire que « Édition- Copier » et laisser l'ordinateur réaliser le marquage. Voici comment vous pouvez le faire. Écrivez un petit script shell appelé « mef » que vous placez par exemple dans votre répertoire personnel : <programlisting
>sed s/"^\(.*\) - \(.*\)\$"/"&lt;menuchoice&gt;&lt;guimenu&gt;\1&lt;\/guimenu&gt;&lt;guimenuitem&gt;\2&lt;\/guimenuitem&gt;&lt;\/menuchoice&gt;"/</programlisting
> N'oubliez pas de le rendre exécutable. C'est tout. Maintenant, dans le source .docbook de votre documentation, écrivez « Édition- Copier ». Sélectionnez ce texte que vous venez de saisir, choisissez <menuchoice
><guimenu
>Outils</guimenu
><guimenuitem
>Choix d'un filtre par une commande...</guimenuitem
></menuchoice
> et appelez ~/bin/mef. Instantanément, « Édition- Copier » est remplacé par <programlisting
>&lt;menuchoice&gt;&lt;guimenu&gt;Édition&lt;/guimenu&gt;&lt;guimenuitem&gt;Copier&lt;/guimenuitem&gt;&lt;/menuchoice&gt;</programlisting>
</para>


</listitem>

<listitem>
<formalpara>
<title
>Le module externe &doxygen;</title>
<indexterm zone="plugin-tools"
><primary
>&doxygen;</primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>outil de documentation</primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>Documentation de l'API</primary
></indexterm>

<para
>Celui-ci vous aide à utiliser l'outil de documentation d'API &doxygen; (<ulink url="http://www.doxygen.org"
></ulink
>). Vous pouvez sélectionner <menuchoice
><guimenu
>Projet</guimenu
> <guimenuitem
>Exécuter Doxygen</guimenuitem
></menuchoice
> pour générer la documentation de l'API pour votre projet actuel, en fonction de la configuration donnée par le fichier <filename
>Doxyfile</filename
> dans le dossier de votre projet. </para>
</formalpara>

<para
>De plus, vous pouvez configurer &doxygen; dans la boîte de dialogue <menuchoice
><guimenu
>Projet</guimenu
> <guimenuitem
>Options du projet...</guimenuitem
></menuchoice
>. Cette boîte de dialogue est très similaire à l'outil &doxywizard;. </para>
</listitem>

<listitem>
<formalpara>
<title
>Le module externe &ctags;</title>
<indexterm zone="plugin-tools"
><primary
>&ctags;</primary
></indexterm>

<para
>Bien que le navigateur de classes vous donne une compréhension exhaustive des symboles et des classes de votre projet, il se peut aussi que vous soyez amené à utiliser l'outil ctags. En particulier, celui-ci prend en charge beaucoup plus de langages que le navigateur de classes. </para>
</formalpara>

<para
>Vous activez ce module externe sous <menuchoice
><guimenu
>Outils</guimenu
> <guimenuitem
>CTags...</guimenuitem
></menuchoice
>. Quand vous le démarrez pour la première fois, vous êtes invité à générer d'abord une base de données de recherche. Après que vous l'avez accepté, le programme &ctags; démarre et crée un fichier nommé <filename
>tags</filename
> dans le dossier de votre projet. C'est un fichier texte contenant tous les symboles de vos fichiers sources. </para>

<para
>Vous pouvez faire une recherche dans la base de données des symboles de deux manières : quand la case <guilabel
>Correspondance avec une expression rationnelle</guilabel
> est cochée, le texte que vous saisissez sera interprété comme une expression rationnelle (dialecte POSIX) et concordant avec les symboles existants. Par exemple, le texte <literal
>.*Widget</literal
> cherchera tous les symboles se terminant par <literal
>Widget</literal
>. Si la case n'est pas cochée, la recherche aura lieu mot à mot. </para>

<para
>Lors de la recherche, vous obtiendrez une liste des symboles concordants, accompagnés des numéros de ligne où ils sont définis. Vous passez au point concerné en cliquant sur la liste. </para>

<para
>Pour certains langages, &ctags; distingue différentes sortes de symboles. Par exemple, Python comporte des classes et des fonctions. Vous pouvez faire une recherche sélective uniquement pour des classes en cochant les types respectifs dans la boîte de dialogue. </para>

<para
>La base de données des symboles n'est normalement pas mise à jour quand vos sources changent. En conséquence, au bout d'un moment, les numéros de ligne ne seront plus corrects et les classes et fonctions récemment ajoutées seront absentes. Vous devriez donc mettre à jour le fichier <filename
>tags</filename
> à intervalles réguliers en cliquant sur le bouton <guibutton
>Régénerer</guibutton
>. </para>
</listitem>

<listitem>
<formalpara>
<title
>Le module externe <command
>astyle</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>astyle</command
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
><application
>Style artistique</application
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>indentation</primary
></indexterm>

<para
>Astyle est un module externe pour formater le code source en fonction d'un ensemble spécifié de règles. </para>
</formalpara>
</listitem>

<listitem>
<formalpara>
<title
>Le module externe <command
>regexptest</command
></title>
<indexterm zone="plugin-tools"
><primary
><command
>regexptest</command
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>débogage</primary
><secondary
>expressions rationnelles</secondary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>expressions rationnelles</primary
><secondary
>débogage</secondary
></indexterm>

<para
>Concevoir avec des expressions rationnelles peut être un travail ardu. Souvent, la première tentative auprès d'une expression correspond à de trop nombreuses chaînes. En particulier, en travaillant avec un langage compilé, les délais d'exécution lors du débogage d'une expression rationnelle peuvent être pénalisants. Le module externe « regexptest » vous permet d'explorer directement les changements dans une expression rationnelle. Il est activé en choisissant <menuchoice
><guimenu
>Outills</guimenu
> <guimenuitem
>Déboguer l'expression rationnelle...</guimenuitem
></menuchoice
>. </para>
</formalpara>

<para
>Dans la zone des groupes de dialectes, vous pouvez choisir le dialecte du moteur d'expressions rationnelles utilisé. Actuellement, sont pris en charge le dialecte défini dans la norme POSIX, qui est utilisé par le programme &grep; et la syntaxe POSIX étendue utilisée par le programme &egrep;. </para>

<para
>Quand vous saisissez une expression, vous avez un retour immédiat sur toute erreur de syntaxe qu'elle contient. En saisissant un texte sous <guilabel
>Chaîne de test</guilabel
>,vous pouvez voir si l'expression correspond à cette chaîne. En particulier, si votre expression rationnelle inclut des groupes, tels que <literal
>([a-z])</literal
>, le contenu des sous-groupes concordants sera affiché dans une zone de liste. </para>
</listitem>

<!--
<listitem>
<formalpara>
<title
>The <command
>konsole</command
> Plugin</title>
<indexterm zone="plugin-tools"
><primary
><command
>konsole</command
></primary
></indexterm>
<indexterm zone="plugin-tools"
><primary
>terminal</primary
><secondary
>embedded</secondary
></indexterm>
<para
></para>
</formalpara>
</listitem>
-->

</itemizedlist>

</appendix
> <!-- plugin-tools -->

<!-- ====================================================================== -->
