<?xml version="1.0"  encoding="UTF-8" ?>

<chapter id="kmdr-basics">
<chapterinfo>
<title
>Bases de &kommander;</title>
<authorgroup>
<author
><firstname
>Tamara</firstname
> <surname
>King</surname
> <affiliation
><address
> <email
>tik@acm.org</email>
</address
></affiliation>
</author>
<author
><firstname
>Eric</firstname
> <surname
>Laffoon</surname
> <affiliation
><address
> <email
>sequitur@kde.org</email>
</address
></affiliation>
</author>

&traducteurYohannHamon; 

</authorgroup>
</chapterinfo>

<title
>Bases de &kommander;</title>

<!-- This chapter should tell the user how to use your app. You should use as
many sections (Chapter, Sect1, Sect3, etc...) as is necessary to fully document
your application. -->

<sect1 id="concepts">
<title
>Concepts</title>


<para
>&kommander; a été initialement conçu autour d'un concept simple qui s'est révélé assez révolutionnaire parmi les outils de conception visuel. D'une manière générale ces outils vous permettent de créer des boîtes de dialogue et parfois des interfaces principales. Bien sûr une interface principale d'application est la fenêtre qui contient généralement les menus, les barres d'outils, la barre d'état et l'espace dévolu à l'application. Les boîtes de dialogue sont des fenêtres enfants qui n'ont généralement pas de menus et sont ainsi nommées parce que leur rôle et <quote
>d'avoir un dialogue</quote
> ou d'échanger des informations entre vous et l'application. Les éléments d'une boîte de dialogue sont appelés <quote
>éléments graphiques</quote
> et vous liez votre programme à ces éléments graphiques. &kommander; est différent parce qu'il est par nature non pragmatique. Il utilise le concept d'association de texte avec les éléments graphiques de la boîte de dialogue. Au début cela a été appelé <quote
>Texte associé</quote
> mais c'est maintenant appelé <quote
>Texte &kommander;</quote
>. Les éléments graphiques des boîtes de dialogue &kommander; peuvent inclurent le contenu d'autres éléments graphiques par référence et un élément graphique peut faire référence à son propre contenu en utilisant un <quote
>Spécial</quote
> qui ressemble à ceci, @widgetText. Les spéciaux sont des commandes avec une signification particulière dans &kommander;. En conséquence si vous créez une boîte de dialogue avec deux éléments graphiques « LineEdit » et nommez le premier <quote
>Prénom</quote
> et le second <quote
>NomDeFamille</quote
> vous pouvez créer un bouton et configurer son texte &kommander; pour avoir la valeur <quote
>Mon nom est @Prénom @NomDeFamille</quote
>. Vous auriez besoin de saisir les valeurs des @widgetText dans les éléments graphiques « Prénom » et « NomDeFamille ». Vous vous souvenez ? Nous avons besoin de dire à &kommander; de référencer les textes qu'ils contiennent. Vous pourriez réaliser cela depuis une <application
>Konsole</application
> et il produirait cette chaîne de caractère pour vous. Il référencerait le prénom comme ceci : @Prénom -> obtenir l'élément graphique nommé Prénom (@Prénom) -> @widgetText -> obtenir le contenu de l'élément graphique « LineEdit ». Alors dans ce cas @Prénom renvoi <quote
>Eric</quote
> : @Prénom -> @widgetText -> <quote
>Eric</quote
>. </para>

<para
>C'est le coeur de &kommander;. Ce que vous pouvez faire avec cela est là où cela devient intéressant. Premièrement il est intéressant de noter que en comparaison de l'approche d'un outil basé sur un langage de programmation &kommander; ne nécessite pas de déclarations pour définir ces opérations. Cela rend &kommander; rapide pour les développeurs. Pour les utilisateurs finaux c'est plus simple qu'apprendre les règles de constructions d'un langage. Pour monsieur tout le monde cela signifie qu'on peut se concentrer sur la tâche à accomplir plutôt que d'avoir votre guide de référence toujours sous la main. Au début, lorsque les gens sont mis en contact d'un outil comme &kommander; la première question est <quote
>Où est ce que je pourrais trouver une utilisation à cet outil qui semble cool ?</quote
>. En fait, la manipulation de chaînes de caractères est utilisé à peu prês partout où vous pourriez jeter votre regard. </para>

<para
>Finalement, que peut réaliser &kommander; ? Voici une liste réduite aux opérations de bases. &kommander; peut : </para>

<orderedlist>
<listitem
><para
>Passer des chaînes de caractères au programme appelant à l'aide de stdout (la sortie standart).</para
></listitem>
<listitem
><para
>Appeler des programmes exécutables</para
></listitem>
<listitem
><para
>Utiliser &DCOP; pour interagir avec des programmes &kde;</para
></listitem>
</orderedlist>

<para
>Si vous n'êtes pas un programmeur vous pourriez vouloir une traduction en termes usuels. Pour commencer, si vous démarrez &kommander; depuis un terminal alors le terminal est le programme appelant. Il y a ici une relation de parent - enfant. Envoyer un message à un terminal est réalisé à l'aide de la sortie standart (stdout) du programme enfant, ainsi nommé parce qu'il y a également une sortie d'érreur. Ceci est intéressant parce que certains programmes, comme &quantaplus;, utilisent stdout pour recevoir des informations depuis les programmes qu'ils lancent. Les boîtes de dialogue &kommander; peuvent envoyer des chaînes de caractères directement dans l'éditeur de &quantaplus; si ils sont appelés par &quantaplus;. Cela signifie que les boîtes de dialogue de &kommander; peuvent être des extensions utiles à des programmes. </para>

<para
>Le second cas est l'appel d'un exécutable. Tout programme qui fonctionne sur votre système est un exécutable. Même un programme sous forme de script est exécuté par un interpréteur de script et est donc techniquement exécuté. &kommander; peut exécuter des commandes tout comme le fait un terminal même si vous le démarrez depuis le menu. Ainsi, si par exemple vous vouliez ouvrir &GIMP; vous auriez à créer un bouton avec la chaîne de caractères <quote
>gimp</quote
> et le placer dans un spécial comme ceci : @exec(gimp). Rien qu'avec ça vous verrez &GIMP; s'ouvrir lorsque vous utiliserez le bouton. Vous pourriez également exécuter <quote
>ls -l</quote
> mais vous verriez apparaître le résultat uniquement si vous utilisiez un terminal. </para>

<para
>Le troisième cas est réellement très intéressant. &DCOP; est une abréviation pour le protocole de communication du bureau &kde; (« <emphasis
>D</emphasis
>esktop <emphasis
>CO</emphasis
>mmunication <emphasis
>P</emphasis
>rotocol ») qui est très puissant. Allez-y, exécutez le programme <application
>kdcop</application
> et observez. Vous verrez rapidement que tous les programmes &kde; construits sur les standards produisent des choses dans &DCOP; et les mieux conçus en ont tout un tas. À l'aide de &DCOP; vous pouvez aussi bien demander toutes sortes d'informations ou bien changer la valeur d'un élément graphique ou bien d'autres choses encore. Il y a une section sur l'utilisation de &DCOP; dans ce manuel. &kommander; peut envoyer des &DCOP; vers tous les programmes &kde; et également être contrôlé par &DCOP;. En fait vous pouvez envoyer des &DCOP; à l'aide de la ligne de commande à n'importe quel programme &kde;. Et alors, en quoi c'est si fort ? Le truc fort c'est que si vous voulez avoir recourt à une quantité importante de commandes vous réaliserez vite que les communications &DCOP; en ligne de commande sont adéquat pour des commandes courtes, mais cela peut causer des délais pour des commandes exécutées depuis une boucle des centaines de fois. C'est pourquoi &kommander; possède un spécial @dcop qui est environ 1000 fois plus rapide. Parce que &kommander; peut envoyer et recevoir &DCOP;, &DCOP; peut être utilisé pour contrôler &kommander; à l'aide de scripts. C'est pourquoi nous avons également un spécial &DCOP; local, @ldcop, qui vous permet d'en saisir beaucoup moins pour produire une commande. </para>

<para
>Est-ce qu'on en a fini avec le coeur de &kommander; ? Non, mais cela devrait vous permettre de comprendre comment cela fonctionne pour que ce dont on parle ne vous semble pas comme une langue étrangère. Il y a deux ou trois choses en plus. Signaux et connecteurs sont utilisés par &kommander; pour gérer les évennements. Dans son sens informatique un évennement signifie <quote
>quelque chose c'est produit</quote
> comme par exemple un élément graphique a été créé ou a vu sont texte changer. Ces changements <quote
>émettent des signaux</quote
> et vous pouvez connecter ces signaux à un connecteur de réception qui fera ensuite quelque chose lorsque l'évènement se produit.  Une utilisation de ceci dans &kommander; est le compagnon de Texte &kommander;, <quote
>Texte population</quote
>. Texte population remplira un élément graphique lorsqu'il est appelé. Tout comme Texte &kommander;, Texte population peut contenir des chaînes de caractères ou des scripts. </para>

<para
>Cela devrait vous fournir les concepts de base pour commencer à utiliser &kommander;. Nous essayons de conserver le nombre de spéciaux bas et utilisons &DCOP; un maximum. L'idée est que nous voulons conserver la puissance de &kommander; tout en restant aussi cohérent et rationnel que possible. Vous découvrirez que vous pouvez inclure n'importe quel langage de script dans &kommander; à l'endroit où vous en avez besoin et même plusieurs langages de scripts dans une même boîte de dialogue. Le reste des informations dans ce document suppose que vous êtes familier avec les concepts et les termes présentés ici. Les exemples et les tutoriels sont également très utiles pour comprendre ce qui peut être réalisé avec &kommander;. </para>
</sect1>
&editor; <sect1 id="executor">
<title
>L'exécuteur</title>

<para
>L'exécuteur, appelé <application
>kmdr-executor</application
>, exécute des scripts &kommander;. Il charge les fichiers <literal role="extension"
>.kmdr</literal
> et produit dynamiquement une boîte de dialogue totalement fonctionnel. </para>

<sect2 id="executor-for-programmers">
<title
>Exécuteur pour programmeurs</title>

<para
>Les développeurs C++ peuvent facilement utiliser la classe KmdrDialogInstance dans leurs programmes C++ pour que la fonctionnalité d'exécution soit incluse dans leurs applications rendant obsolète le besoin d'utiliser l'exécuteur externe. Pour des boîtes de dialogue standards la surcharge lors de la création de la boîte de dialogue est minime mais la création de l'application &kde; peut retarder la boîte de dialogue d'environ une seconde. </para>
</sect2>

</sect1>

<sect1 id="create-dialog">
<title
>Création d'une boîte de dialogue</title>

<para
></para>
</sect1>

</chapter>
