# Bases de &kommander;

## Concepts

&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 d'avoir un dialogue ou d'échanger des informations entre vous et l'application. Les éléments d'une boîte de dialogue sont appelés composants graphiques et vous liez votre programme à ces composants graphiques. &kommander; est différent parce qu'il est par nature non pragmatique. Il utilise le concept d'association de texte avec les composants graphiques de la boîte de dialogue. Au début cela a été appelé Texte associé mais c'est maintenant appelé Texte &kommander;. Les composants graphiques des boîtes de dialogue &kommander; peuvent inclurent le contenu d'autres composants graphiques par référence et un composant graphique peut faire référence à son propre contenu en utilisant un Spécial 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 composants graphiques « LineEdit » et nommez le premier Prénom et le second NomDeFamille vous pouvez créer un bouton et configurer son texte &kommander; pour avoir la valeur Mon nom est @Prénom @NomDeFamille. Vous auriez besoin de saisir les valeurs des @widgetText dans les composants 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 Konsole et il produirait cette chaîne de caractère pour vous. Il référencerait le prénom comme ceci : @Prénom -> obtenir le composant graphique nommé Prénom (@Prénom) -> @widgetText -> obtenir le contenu du composant graphique « LineEdit ». Alors dans ce cas @Prénom renvoi Eric : @Prénom -> @widgetText -> Eric.

C'est le cœur 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 fondé 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 Où est ce que je pourrais trouver une utilisation à cet outil qui semble cool ?. En fait, la manipulation de chaînes de caractères est utilisé à peu près partout où vous pourriez jeter votre regard.

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

1. Passer des chaînes de caractères au programme appelant à l'aide de stdout (la sortie standart).

2. Appeler des programmes exécutables

3. Utiliser &DCOP; pour interagir avec des programmes &kde;

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 standard (stdout) du programme enfant, ainsi nommé parce qu'il y a également une sortie d'erreur. 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.

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 gimp 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 ls -l mais vous verriez apparaître le résultat uniquement si vous utilisiez un terminal.

Le troisième cas est réellement très intéressant. &DCOP; est une abréviation pour le protocole de communication du bureau &kde; (« Desktop COmmunication Protocol ») qui est très puissant. Allez-y, exécutez le programme kdcop 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 composant 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.

Est-ce qu'on en a fini avec le cœur 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 évènements. Dans son sens informatique un évènement signifie quelque chose c'est produit comme par exemple un composant graphique a été créé ou a vu sont texte changer. Ces changements émettent des signaux 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;, Texte population. Texte population remplira un composant graphique lorsqu'il est appelé. Tout comme Texte &kommander;, Texte population peut contenir des chaînes de caractères ou des scripts.

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;.

&editor;

## L'exécuteur

L'exécuteur, appelé kmdr-executor, exécute des scripts &kommander;. Il charge les fichiers `.kmdr` et produit dynamiquement une boîte de dialogue totalement fonctionnel.

### Exécuteur pour programmeurs

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.

## Création d'une boîte de dialogue