# Extensions

## Introduction

Les extensions sont de petits programmes qui peuvent être rajoutés pour interagir avec KStars/Ekos/Indi afin de fournir des fonctions et fonctionnalités supplémentaires.

Les extensions sont séparées de KStars/Ekos/Indi. Elles ne font pas partie de ce programme. Seule une manière de les appeler est fournie par commodité. Soyez sûr de comprendre les exigences et risques liés à leur utilisation.

## Exigences

Chaque extension doit contenir au moins deux fichiers, un troisième pour l'icône est optionnel.

- Le fichier programme. C'est un fichier exécutable qui s'exécute sur le système de l'utilisateur. L'utilisateur utilisé pour faire tourner KStars doit posséder les droits d'exécution sur ce fichier.

- Le fichier de configuration. C'est un fichier de texte définissant les entrées nécessaires et optionnelles pour cette extension. Il doit se nommer de la même manière que le fichier exécutable avec « .conf » comme extension.

  Il est obligatoire que le fichier de configuration contient une ligne débutant par minimum_kstars_version=n.n.n où n.n.n est la version minimale de KStars qui gère cette extension, par exemple 3.7.3.

  Il peut facultativement (mais ça n'est pas la manière préférée) contenir une ligne commençant par runDetached=true. Si cette ligne est présente, l'extension s'exécutera de manière indépendante de KStars. Une fois démarrée, l'extension ne pourra pas informer de son état à Ekos. Cette option ne devrait être utilisée que par les extensions qui doivent continuer de tourner après la fermeture de KStars. L'extension doit également fournir sa propre interface utilisateur.

  De plus, le fichier de configuration peut contenir n'importe quel autre paramètre que l'auteur de l'extension décide, ainsi que du texte libre.

- Le fichier d'icône, si présent, doit être nommé de la même manière que l'exécutable avec l'extension appropriée pour le format de l'image. Les formats « jpg », « bmp », « gif », « png » et « svg » sont pris en charge. Cette icône, si fournie, sera utilisée dans la boîte de sélection des extensions.

Tous ces fichiers doivent être copiés dans le dossier de données de KStars, par exemple ~/.local/share/kstars/extensions.

Les extensions présentes qui ont un fichier de configuration valable et qui ont une version minimale de KStars pas plus élevée que l'installation courante seront détectées au démarrage d'Ekos. Dans le cas contraire, elles ne seront pas affichées dans l'interface utilisateur. Les éléments de l'extension dans l'interface utilisateur seront affichés dans une boîte avec son nom et son icône, ainsi qu'un bouton de démarrage/arrêt. Si l'extension échoue à se fermer après 10 secondes, elle sera réactivée avec un bouton d'abandon qui la forcera à se fermer. Seule une extension peut être utilisée en même temps.

## Développement

La suite décrit les points importants pour les développeurs d'extension.

- Les sources de quelques extensions incluant une extension squelette sont disponibles à l'adresse KStars Extension Github.

- Chaque extension doit vérifier l'existence et la validité du fichier de configuration. L'entrée minimum_kstars_version du fichier de configuration doit être vérifiée par rapport à une référence interne pour confirmer que ce fichier correspond aux exigences de l'extension. Voir l'exemple du fichier squelette.

- La version de KStars est passée à l'extension comme arg(1) de l'appel QProcess.

- Toutes les interactions avec KStars/Ekos/Indi doivent être réalisées via l'interface D-Bus. Des outils utiles pour interroger, surveiller et comprendre D-Bus incluent D-Feet et Bustle.

  On pourrait avoir l'impression au début que l'utilisation du système d'adaptateurs de Qt pour D-Bus serait bien plus simple que l'utilisation direct de l'Interface/Messages de Qt D-Bus et KStars fournit les définitions « xml » nécessaires. Toutefois, il y a actuellement une utilisation importante de types personnalisés dont la définition est combinée avec d'autres informations dans les sources de KStars. Cela conduit à un grand ensemble de fichiers de KStars qui nécessite une inclusion depuis l'extension afin de pouvoir utiliser les adaptateur de Qt pour D-Bus. Ce problème sera, espérons-le, adresser dans le futur.