# Extensies

## Inleiding

Extensies zijn kleine programma's die toegevoegd kunnen worden om samen te werken met Kstars/Ekos/INDI om extra functies en mogelijkheden te leveren.

Extensies zijn gescheiden van Kstars/Ekos/INDI. Ze worden niet geleverd als onderdeel van deze software. Allee als een middel om ze aan te roepen wordt voor het gemak geleverd. Ga na dat u begrijpt wat de vereisten zijn en de risico's van het gebruik van een extensie.

## Vereisten

Elke extensie moet bestaan uit minstens 2 bestanden, met een optioneel derde pictogrambestand.

- Het programmabestand. Dit is elk uitvoerbaar bestand dat zal draaien op het systeem van de gebruiker. De gebruiker waaronder KStars draait moet uitvoerrechten hebben op dit bestand.

- Het configuratiebestand. Dit is een gewoon tekstbestand dat de vereiste en optionele invoer voor de extensie definieert. Het moet hetzelfde genaamd zijn als de uitvoerbare bestand met de toevoeging van de bestandsextensie .conf.

  Het is verplicht dat het configuratiebestand een regel heeft dat begint met minimum_kstars_version=n.n.n waar n.n.n de laagste versie van KStars is die de extensie ondersteunt ⪚ 3.7.3

  Optioneel (en zonder voorkeur) kan het configuratiebestand een regel bevatten die begint met runDetached=true. Indien aanwezig, zorgt deze regel dat de extensie onafhankelijk van KStars draait. Nadat het is gestart kan de extensie geen statusinformatie teruggeven aan Ekos. Dit zou alleen gebruikt moeten worden door extensies die vereisen om door te gaan met draaien nadat KStars is afgesloten. De extensie moet ook zijn eigen gebruikersinterface leveren.

  Daarnaast kan het configuratiebestand elke andere parameters bevatten die de auteur van de extensie bepaalt en vrije tekst.

- Het pictogrambestand, indien aanwezig, moet dezelfde naam hebben als het uitvoerbare bestand van de extensie met de toevoeging van de juiste extensie van de bestandsnaam voor het afbeeldingsformaat, .jpg, .bmp, .gif, .png en .svg worden ondersteund. Indien geleverd zal dit pictogram gebruikt worden in de keuzelijst voor de selectie van de extensies. Als er geen pictogram is geleverd zal in plaats daarvan een standaard pictogram worden gebruikt.

Alle bestanden van de extensie (uitvoerbaar, configuratie en optioneel pictogram) moeten gekopieerd zijn in de beschikbare gegevenslocatie/extensies van KStars ⪚ ~/.local/share/kstars/extensions

Extensies die aanwezig zijn, hebben een geldig configuratiebestand en hebben een minimale KStars versie niet hoger dan de huidige installatie en zal gedetecteerd worden wanneer Ekos wordt gestart. Als er geen geldige extensies gedetecteerd worden zal het element extensie-UI niet worden getoond. De elementen extensie-UI worden in een keuzelijst getoond met de naam en het pictogram van elke gedetecteerde extensie en een start/stop-knop. Als de extensie niet sluit binnen 10 seconden nadat op de stopknop id geklikt, wordt het opnieuw ingeschakeld als een afbreekknop die het sluiten van de extensie zal afdwingen. Slechts één extensie tegelijk kan gebruikt worden.

## Ontwikkeling

Het volgende beschrijft extra punten voor ontwikkelaars van extensies.

- Enige bronnen van extensies inclusief een voorbeeld raamwerk van een zijn beschikbaar in de KStars extensie Github

- Elke extensie moet controleren op het bestaan en de geldigheid van zijn eigen configuratiebestand. Het item minimum_kstars_version in het configuratiebestand moet gecontroleerd worden tegen een interne referentie om te bevestigen dat het configuratiebestand overeenkomt met de vereisten aan een extensie. Zie het raamwerkvoorbeeld.

- De versie van het aanroepende KStars wordt doorgegeven aan de extensie als arg(1) in de aanroep bij starten met QProcess.

- Alle interactie met KStars/Ekos/INDI zou moeten gaan via het DBus-interface. Zie het raamwerkvoorbeeld. nuttige hulpmiddelen voor ondervragen, monitoren en begrijpen van DBus omvatten D-Feet en Bustle

  Het kan, bij initieel onderzoek, lijken dat het gebruik van het Qt DBus Adaptors-systeem veel gemakkelijker is dan direct gebruik van de Qt DBus Interfaces/Messages en KStars levert ook de vereiste xml-definities. Er is echter nu zwaar gebruik van aangepaste typen, waarvan de definities gecombineerd met andere informatie in de broncode van KStars. Dit resulteert in een grote set bestanden van KStars die opname vereisen in een extensie om gebruik te maken van de Qt DBus Adaptors. Hopelijk zal dit in de toekomst aangepakt worden.