# Kst-utökningar

&kst;-utökningar är ett kraftfullt sätt att lägga till funktioner i &kst;. De kan till exempel lägga till element i &kst;s användargränssnitt. De konstrueras oftast för att åstadkomma särskilda uppgifter som inte är av allmänt intresse för alla användare av &kst;.

Välj Inställningar Utökningar... för att ladda eller ta bort utökningar i &kst;. En dialogruta visas som låter dig ladda eller ta bort installerade insticksprogram.

Utökningsdialogrutan

## Elog-utökningen

Elog-utökningen tillåter att händelsebevakning skapar poster i en loggbok på en server som kör pogrammet Electronic Logbook (ELOG). Posterna i loggboken kan till exempel användas för att bevaka &kst;-händelser från en annan dator, eller skapa periodiska datarapporter. För information om att ställa in och underhålla en ELOG-server, se den officiella hemsidan för ELOG. Välj Inställningar Utökningar... och försäkra dig om att Elog-utökning är markerad, för att aktivera Elog-utökningen i &kst;.

### Installera ELOG-programmet

För att kunna använda ELOG-programmet i &kst;, måste du först installera ELOG-programmet i operativsystemet. Klicka här för att ladda ner ELOG. Skriv följande kommando för att starta ELOG-programmet på Linux: `/etc/rc.d/init.d/elogd start`.

För att testa anslutningen, starta vilken webbläsare som helst, och skriv in följande webbadress: http://ditt_värddatornamn/loggboksnamn:8080 (eller en annan port där du startade ELOG).

### ELOG-bläddrare

Välj Arkiv Starta ELOG-bläddrare... för att visa befintliga loggböcker via Kst.

Starta ELOG-bläddrare
ELOG-bläddrare

### Lägg till en ELOG-post

Välj Arkiv Lägg till ELOG-post... för att lägga till en post i loggboken. Det visar en dialogruta som låter användaren ange information för egenskaper, samt skriva loggmeddelandets innehåll. Informationen för Upphovsman och Typ är väsentlig. Dialogrutan låter också användaren ändra ELOG-inställning.

Att lägga till en post
Att lägga till en post

Upphovsman*:

  Skriv in upphovsmannens namn.

Typ*:

  Välj loggmeddelandets typ bland:

  - Rutin

  - Programvaruinstallation

  - Problem rättat

  - Inställning

  - Annan

Kategori

  Välj loggmeddelandets kategori bland:

  - Allmänt

  - Hårdvara

  - Programvara

  - Nätverk

  - Annan

Rubrik

  Ange loggmeddelandets rubrik, och skriv meddelandet i efterföljande textruta.

De tre kryssrutorna därunder låter användare välja typ av information som ska loggas. Se ytterligare information i Inställning av server och loggning.

Att klicka på knappen Inställning... visar ELOG-inställningen.

Klicka slutligen på Skicka för att skicka meddelandet till loggboken.

För att snabbt visa ELOG-bläddraren och lägga till en post i en loggbok, klicka bara på ELOG-bläddrare i verktygsraden för att starta ELOG-bläddraren och Postikon för att lägga till en ELOG-post.

### Server- och logginställningar

Server- och loggningsinställningar ska anpassas om ELOG-funktionen är aktiverad för ett händelsebevakningsobjekt. Klicka på knappen Anpassa... i avdelningen ELOG i händelsebevakningsdialogrutan för att anpassa loggningsinställningar. Dialogrutan för ELOG händelseinmatning ska visas:

Loggningsinställningar för händelsebevakning
Loggningsinställningar för händelsebevakning

Använd de tre kryssrutorna längst ner för att välja vilken typ av information som ska loggas.

- Inkludera Kst-skärmbild anger att en skärmbild av fönstret som för närvarande är aktivt ska ingå i posten.

- Inkludera Kst-inställningsfil anger att `*.kst` sparade filer ska biläggas posten.

- Om Inkludera Kst-felsökningsinformation är markerat, biläggs dessutom en kopia av felsökningsloggen till posten.

Ytterligare fält visas i dialogrutan när inställningar för ELOG-servern är gjorda. För att anpassa ELOG-serverinställningar, klicka på knappen Anpassa.... Följande dialogruta ska visas:

Serverinställningar för händelsebevakning
Serverinställningar för händelsebevakning

Beskrivningar av inställningarna i den här dialogrutan följer.

Anpassa, Spara och Ladda

  Kombinationsrutan Inställning innehåller en lista med sparade ELOG-serverinställningar. För att ladda en uppsättning inställningsalternativ, välj ett objekt i listan och klicka på knappen Ladda. För att spara nuvarande inställningsalternativ på en plats, välj önskad plats och klicka på knappen Spara.

  Att spara inställningar på en plats skriver över alla befintliga inställningar på den platsen.

IP-adress och Portnummer

  Skriv in IP-adressen för datorn som kör ELOG-serverprogrammet. Portnumret som ELOG-servern lyssnar på kan ställas in via servern, men standardvärdet är 8080, så om du är osäker skriv in 8080 som portnummer.

Loggbok

  Varje ELOG-server kan innehålla en eller flera loggböcker, så namnet på loggboken där poster ska skrivas måste anges. Försäkra dig om att stavningen av loggbokens namn är riktigt.

Användarnamn, Användarlösenord och Skriv lösenord

  Beroende på hur ELOG-serverprogrammet är inställt, kan dessa inställningar vara nödvändiga eller inte. Om de är det, skriv in riktig inloggningsinformation i de lämpliga textrutorna.

Dumpstorlek

  Använd den här listrutan för att välja storleken, i bildpunkter, av &kst;s skärmdump som ska bifogas (om den anges).

Skicka in som HTML-text

  Om den här kryssrutan är markerad, kan HTML-taggar användas i loggbokens indata.

Undertryck e-postbekräftelse

  Om loggboken är inställd att skicka e-postbekräftelser för nya objekt, inaktiveras bekräftelserna genom att markera kryssrutan. Observera att det här alternativet inte hör ihop med &kst;s egna inställningar av e-postbekräftelser för händelsebevakning.

Klicka på knappen Verkställ för att verkställa inmatade inställningar. Klicka på Uppdatera för att uppdatera ELOG-händelsepostdialogrutan (föregående dialogruta). Ytterligare fält ska synas i ELOG-händelsepostdialogrutan. Dessa fält är unika för den valda loggboken. När du väl är nöjd med inställningarna, kan knappen Testa användas för att skicka en loggbokspost som test. Klicka på Stäng för att avsluta dialogrutan.

### Använda klassen ELOG i Kst-skript

Som ett alternativ kan användare också använda klassen ELOG som tillhandahålls i Kst-skript för att skriva och skicka in meddelanden i loggboken, samt ändra server- och logginställningar. Se information i Dokumentation av klassen ELOG.

#### Lägga till en ELOG-post via Kst-skript

    elog = new ELOG();                         // skapa ett nytt ELOG-objekt
    elog.port = 8080;                         // ange porten
    elog.hostname = "localhost";                 // ange värddatornamnet
    elog.logbook = "demo";                         // ange loggboken
    elog.text = "meddelande";         // skriv meddelandet
    elog.addAttribute("Author", "Kst");         // ange loggpostens upphovsman
    elog.addAttribute("Type", "Routine");         // ange loggpostens typ
                                             // se förklaringen ovan.
    elog.submit();                                 // skicka in posten

## Kst-skript

Kst-skript är en anpassning av Javaskript till &kst;. Dess mål är att erbjuda fullständiga möjligheter att styra alla aspekter av &kst;. Välj Inställningar Utökningar... och försäkra dig om att Javaskript-utökning är markerad, för att aktivera Kst-skript.

### Att köra ett Kst-skript

Det finns tre sätt att köra ett Kst-skript.

- Från kommandoraden när &kst; startas:

      kst -E js:"loadScript('mitt_skript.js')"

- Genom att använda kstcmd, vilket är en Javaskript-tolk som ansluter till en &kst;-session. Den kan köras från en extern terminal, eller inifrån &kst; själv, genom att välja Verktyg Visa Javaskript-terminal.

      kstcmd
      Attached to Kst session kst-17704
      kst
      > loadScript(mitt_skript.js)

- Från menyn när &kst; väl har startats: Arkiv Ladda Javaskript

Observera att med de första två sätten kan vilket Kst-skript-kommando som helst, eller vilken samling av Kst-skript-kommandon som helst, ersätta kommandot loadscript.

### Exempel på Kst-skript

Kst-skript ger &kst; ett kraftfullt programmeringsgränssnitt. I huvudsak kan det användas för att skapa smarta makrofunktioner för vanliga uppgifter. Vi tar först en titt på ett grundläggande exempel, som åskådliggör hur &kst; styrs via Kst-skript, och därefter tar vi en titt på ett exempel med en makrofunktion.

#### Ett enkelt Kst-skript

Här har vi det enklast möjliga Kst-skriptet: rita upp en kurva från slumptal.

    // enkel.js: Ett enkelt exempel på ett Kst-skript.
    // Skapar ett nytt diagram med en kurva av slumptal.

    // Lagra fönstret
    var w = Kst.windows[0];

    // Lägg till ett diagram i fönstret
    var p = new Plot(w);

    // Skapa nya (redigeringsbara) vektorer.
    // De skulle också kunna ha laddats från filer.
    var xv = new Vector(); var yv = new Vector();

    xv.tagName = "time"; yv.tagName = "signal";

    // Gör deras längd till 100.
    xv.resize(100); yv.resize(100);

    // Fyll i deras värden.
    for (var i = 0; i < 100; i++) {
            xv[i] = i; //index
            yv[i] = Math.random(); // Likformigt distribuerat mellan 0 och 1.
    }

    // Skapa en kurva från X och Y
    var c = new Curve(xv,yv);
    c.tagName = "signalvstime";

    // Lägg till kurvan i det nya diagrammet
    p.curves.append(c);

    // Namnge X-axeln i vårt diagram
    p.xAxis.label = "Tid (s)"

Skriptet kan köras med vilken som helst av metoderna i . Här är en skärmbild av &kst; efter att kommandona har matats in via metoden med inbäddad terminal.

Enkel utmatning

I &kst;s grafiska gränssnitt betecknas inte objekt med de variabelnamn som vi använder i vårt Kst-skript, utan hänvisas till med sina taggnamn (eller "unika namn"). Om du inte anger taggnamnet för nya objekt manuellt, hittar du kryptiska namn som anonym vektor 1, eller . Det är orsaken till att vi tar emot flera meddelanden med odefinierad ovan. Om du någonsin avser att använda det grafiska gränssnittet för att arbeta med objekt du har skapat med Kst-skript, bör du ange egenskapen taggnamn för dem. Du kan också använda taggnamn i Kst-skript själv. Efter att ha angett taggnamnet på den nya kurvan, skulle vi kunna ha anropat:

    p.curves.append("signalvstime");

#### Skriva, inkludera och anropa funktioner

Som med alla Javaskript-miljöer, kan du skriva och anropa funktioner med Kst-skript. Dessutom äger Kst-skript ett sätt att ladda funktioner från disk ifrån ett Kst-skript. Betrakta följande exempel:

    // subrutiner.js

    function takeSpectraOfTimePlots() {
    // Tar alla diagram i det första fönstret som har X-axeln "Tid (s)"
    // och skapar effektspektra för deras kurvor, som läggs i ett enda nytt
    // diagram.
            var w = Kst.windows[0];
            var p = new Plot(w);
            p.xAxis.label = "Frekvens (Hz)"

            for (var ip = 0; ip < w.plots.length; ip++ ) {
                    cp = w.plots[ip]; // aktuellt diagram
                    if (cp.xAxis.label == "Tid (s)") {
                            for (ic = 0; ip < cp.curves.length; ic++) {
                                    plotSpectrum(p,cp.curves[ic].yVector)
                            }
                    }
            }
    }

    function plotSpectrum(p,v) {
    // Skapar ett effektspektrum för vektorn v och visar det i diagrammet p. Antar
    // att vektorn är data som samplas med 1 Hz.
            ps = new PowerSpectrum(v, 1);
            ps.tagName = v.tagName + "-PS";
            c = new Curve(ps.xVector,ps.yVector);
            c.tagName = ps.tagName + "-C";
            p.curves.append(c);
    }

Exemplet innehåller två funktioner: `takeSpectraOfTimePlots()` och `plotSpectrum(p,v)`. takeSpectraOfTimePlots() är en makrofunktion som skapar spektra för alla diagram i det första fönstret som har "Tid (s)" som X-axel. I exemplet kan vi se hur kraftfullt Kst-skript är för sådana uppgifter.

Följande skript laddar rutinerna från `subrutiner.js`. Det använder `enkel.js` från föregående avsnitt för att skapa ett brusdiagram med en tidsaxel, och därefter anropa takeSpectraOfTimePlots() för att hitta dess spektrum. Observera att `subrutiner.js` laddas med `loadScript()`, samma anrop som användes på kommandoraden i .

    // anropasubs.js
    // Demonstrera anrop av subrutiner

    loadScript('subrutiner.js');
    loadScript('enkel.js');

    takeSpectraOfTimePlots();

En skärmbild av &kst; efter att dessa kommandon har utförts visas nedan.

Utmatning från anropasubs

### Ytterligare dokumentation av Kst-skript

Utveckling av Kst-skript pågår fortfarande, och hela anpassningen har inte implementerats, men de flesta av de grundläggande funktionerna finns med. Utveckling av Kst-skript är baserat på behov, och om du vill se till att något specifikt inkluderas, är det bra att fråga på e-postlistan för utveckling av &kst; (se http://kst.kde.org). Dokumentation av den aktuella anpassningen av Kst-skript finns i katalogen `js` i källkodsdistributionen.

All dokumentation om tillgängliga klasser i Kst-skript finns i Appendix D.