Skriptid ja KStars: DCOP liides &kstars;i üks eesmärke on pakkuda võimalust kasutada ka kõige keerulisemaid võimalusi skripti vahendusel. See lubab luua virtuaalretki taevakaardil ning aitab õpetajatel koolitöös illustreerida mõningaid astronoomilisi põhimõtteid ning üldse juttu ja teksti köitvamaks muuta. Juba praegu on võimalik &kstars;is selliseid skripte kasutada, kuigi veel ei saa pruukida kõiki funktsioone, mida me tahaksime pakkuda. Meil on küll graafiline skriptide loomise abivahend, kuid siiski tuleb skriptid ise veel käsitsi kirjutada. Käesolev peatükk selgitabki, kuidas &kstars;i skripte kirja panna. &kde; arhitektuur pakub skripte tarvitavatele rakendustele vajaliku raamistiku DCOP liidese näol. DCOP tähendab töölaua kommunikatsiooniprotokolli (inglise keeles Desktop COmmunication Protocol) ning just DCOP võimaldabki &kde; rakendusi juhtida teistest rakendustest, käsurealt või tekstiskripti abil. DCOP funktsioonid &kstars;i DCOP kiides kasutab järgmisi funktsioone: lookTowards( const QString suund ): tsentreerib vaate argumendiga määratud punkti. Selleks võib olla suvalise taevakeha nimi või mõni järgmistest sõnadest või lühenditest: zenith (või z) seniidi tähistusena, north (n) põhjakaare, northeast (ne) kirde, east (e) ida, southeast (se) kagu, south (s), southwest (sw) edela, west (w) lääne ja northwest (nw) loode tähistusena. setRaDec( double OT, double kääne ): tsentreerib vaate määratud ekvaatorilistele koordinaatidele. setAltAz(double h, double a): tsentreerib vaate määratud horisondiliste koordinaatidele. zoomIn(): suurendab vaate suurendust. zoomOut(): vähendab vaate suurendust. defaultZoom(): taastab vaikesuurenduse = 3. setLocalTime(int aasta, int kuu, int päev, int tund, int min, int sek): seab simulatsioonikella määratud kuupäevale ja ajale. waitFor( double t ): paus t sekundit enne järgneva skriptikäsu rakendamist. waitForKey( const QString klahv ): skripti rakendamine peatatakse, kuni kasutaja vajutab määratud klahvi. Praegu ei saa määrata klahvikombinatsioone (näiteks &Ctrl;C), vaid ainult üksikklahve. Tühikuklahvi jaoks tuleb kirjutada space. setTracking( bool track ): jälgimisrežiimi näitamise lülitamine. changeViewOption( const QString võimalus, const QString väärtus ): vaatevõimaluse määramine. Kasutada saab kümneid võimalusi, sisuliselt kõike, mida saab seadistada &kstars;i vaateseadistuste aknas. Esimene argument ongi võimalus (vastav nimi võetakse seadistustefailist kstarsrc), teine soovitud väärtus. Argumentide parser on püütud teha võimalikult lollikindel, nii et kui kirjutad midagi kogemata valesti, siis see lihtsalt ei rakendu. setGeoLocation( const QString linn, const QString provints/maakond, const QString riik ): võimalus määrata vaatluskohaks mingi konkreetne linn. Kui argumendis määratud linna andmebaasist ei leita, ei tee see käsk midagi. stop() [clock]: seiskab simulatsioonikella. start() [clock]: käivitab simulatsioonikella. setScale(float s) [clock]: määrab simulatsioonikella ajasammu. s=1.0 vastab reaalajale, 2.0 on kaks korda kiirem reaalajast jne. DCOP funktsioonide testimine DCOP funktsioone saab hõlpsast testida rakenduse kdcop abil. Kui kdcop käivitada, näeb puukujulises nimekirjas kõiki töötavaid rakendusi ja kui &kstars; peaks töötama, on ta samuti seal kirjas. Enamik DCOP funktsioone on kirjas KStarsInterface päises, kuid kellafunktsioonid on ära toodud clock all. Suvalise funktsiooni käivitamiseks tee sellel topeltklõps. Kui funktsioon eeldab argumente, ilmub aken, kuhu need saab sisestada. DCOP skripti kirjutamine DCOP funktsioone saab välja kutsuda ka UNIX-i käsurealt ning neid on võimalik skripti kaasata. Me näitame siin üht näidisskripti, mis lülitab sisse ekvaatorilised koordinaadid, tsentreerib vaate Kuule, suurendab veidi ning paneb kella käima kiirusega üks tund sekundis. Seda skripti saab kasutada mallina meelepäraste skriptide loomisel. Kõigepealt siis skript ning seejärel seletus. #!/bin/bash #KStars script: Jälgi Kuud! # KSTARS=`dcopfind -a 'kstars*'` MAIN=KStarsInterface CLOCK=clock#1 dcop $KSTARS $MAIN changeViewOption UseAltAz false dcop $KSTARS $MAIN lookTowards Moon dcop $KSTARS $MAIN defaultZoom dcop $KSTARS $MAIN zoomIn dcop $KSTARS $MAIN zoomIn dcop $KSTARS $MAIN zoomIn dcop $KSTARS $MAIN zoomIn dcop $KSTARS $MAIN zoomIn dcop $KSTARS $CLOCK setScale 3600. dcop $KSTARS $CLOCK start dcop $KSTARS $MAIN waitFor 20. dcop $KSTARS $CLOCK stop dcop $KSTARS $MAIN defaultZoom ## Salvesta skript failina. Nimi võib olla milline tahes, mina soovitaksin anda nimeks midagi kirjeldavat, näiteks kuuvaatlus.kstars. Skripti muutmiseks käivitatavaks anna järgmine käsk: chmod kuuvaatlus.kstars . Nüüd saab skripti käivitada käsuga ./kuuvaatlus.kstars kataloogis, kus skript asub. Arvesta, et skript toimib ainult siis, kui KStars eelnevalt töötab. Uue &kstars;i akna avamiseks võib skriptis kasutada käsku dcopstart. Nüüd siis selgitused skripti juurde. Ülemine rida tuvastab faili BASHi shelliskriptina. Järgmised kaks rida on kommentaarid (kommentaarid on kõik read, mille alguses seisab #, ning shell jätab need arvesse võtmata). Järgmised kolm rida määravad mõningad muutujad, mida hiljem kasutatakse. Muutuja KSTARS tuvastab töötava &kstars;i protsessi, kasutades selleks käsku dcopfind. Muutujad MAIN jaCLOCK tuvastavad kaks &kstars;iga seotud DCOP liidest. Ülejäänud osa skriptist kujutabki endast tegelike DCOP väljakutsete loetelu. Esimene rida määrab ekvaatoriliste koordinaatide kasutamise, määrates võimaluse UseAltAz (ehk siis kõrguse ja asimuudi kasutamise) väärtuseks false ehk väär (kõiki võimalusi, mida kasutab changeViewOptions ehk vaateseadistuste dialoog, näeb seadistustefailis kstarsrc). Järgmine käsk tsentreerib vaate Kuule ja lülitab sisse selle jälgimise. Seejärel kehtestatakse vaikesuurendus ja suurendatakse seda viis korda. Siis määratakse kell käima kiirusega üks tund sekundis (3600 sekundit on ju üks tund) ning kell käivitatakse. Järgmine rida peatab skripti 20 sekundiks, mille kestel saab jälgida üle taevalaotuse kulgevat Kuud. Lõpuks peatatakse kell ning taastatakse vaikesuurendus. Me loodame, et KStarsi skriptivõimalused pakuvad sulle suurt naudingut ja lubavad luua huvitavaid lahendusi. Kui oled loonud mõne huvipakkuva skripti, võid sellest teada anda ka meiliaadressil kstars@30doradus.org, sest meile meeldiks teada saada, mida teevad meie kasutajad, ja võimaluse korral ka skripte oma veebileheküljel avaldada. Kui sul aga on mingeid mõtteid, kuidas skriptidesse (või üldse mis tahes &kstars;i töö osasse) puutuvat parandada, anna sellest teada aadressil kstars-devel@lists.sourceforge.net või esita oma soov Bugzilla vahendusel.