
<chapter id="extensions">
<title
>Kst-utökningar</title>

<para
>&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;. </para>

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

<screenshot>
<screeninfo
>Utökningsdialogrutan</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="Screenshot-kst-extensions-dialog.png" format="PNG"/>
</imageobject>
</mediaobject>
</screenshot>

<sect1 id="extensions-elog">

<title
>Elog-utökningen</title>

<para
>Elog-utökningen tillåter att <link linkend="data-types-eventmonitors"
>händelsebevakning</link
> 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 <ulink url="http://midas.psi.ch/elog/"
>hemsidan för Elog</ulink
>. Välj <menuchoice
><guimenu
>Inställningar</guimenu
><guimenuitem
>Utökningar...</guimenuitem
></menuchoice
> och försäkra dig om att <guilabel
>Elog-utökning</guilabel
> är markerad, för att aktivera Elog-utökningen i &kst;. </para>

<sect2 id="extensions-elog-settings">
<title
>Server- och logginställningar</title>
<para
>Server- och logginställningar måste ställas in innan en post läggs till i loggboken. För att anpassa logginställningar, välj <menuchoice
><guimenu
>Inställningar</guimenu
> <guimenuitem
>Elog...</guimenuitem
></menuchoice
> eller klicka på knappen <guibutton
>Inställning...</guibutton
> i dialogrutan <guilabel
>Elog-post</guilabel
> som antingen kan kommas åt från <menuchoice
><guimenu
>Arkiv</guimenu
> <guimenuitem
>Lägg till Elog-post...</guimenuitem
></menuchoice
> eller dialogrutan <link linkend="data-types-eventmonitors"
>Händelsebevakning</link
> om Elog-funktionen är aktiverad för ett händelsebevakningsobjekt. Följande dialogruta ska visas: </para>
<screenshot>
<screeninfo
>Serverinställningar för händelsebevakning</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="Screenshot-kst-extensions-elog-serversettings.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Serverinställningar för händelsebevakning</phrase>
</textobject>
</mediaobject>
</screenshot>

<para
>Beskrivningar av inställningarna i den här dialogrutan följer. </para>
<variablelist>
<varlistentry>
<term
><guilabel
>Anpassa</guilabel
>, <guibutton
>Spara</guibutton
> och <guibutton
>Ladda</guibutton
> </term>
<listitem>
<para
>Kombinationsrutan <guilabel
>Inställning</guilabel
> 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 <guibutton
>Ladda</guibutton
>. För att spara nuvarande inställningsalternativ på en plats, välj önskad plats och klicka på knappen <guilabel
>Spara</guilabel
>. </para>
<caution>
<para
>Att spara inställningar på en plats skriver över alla befintliga inställningar på den platsen. </para>
</caution>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>IP-adress</guilabel
> och <guilabel
>Portnummer</guilabel
></term>
<listitem>
<para
>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. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Loggbok</guilabel
></term>
<listitem>
<para
>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. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Användarnamn</guilabel
>, <guilabel
>Användarlösenord</guilabel
> och <guilabel
>Skriv lösenord</guilabel
></term>
<listitem>
<para
>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. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Dumpstorlek</guilabel
></term>
<listitem>
<para
>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). </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Skicka in som HTML-text</guilabel
></term>
<listitem>
<para
>Om den här kryssrutan är markerad, kan HTML-taggar användas i loggbokens indata. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Undertryck e-postbekräftelse</guilabel
></term>
<listitem>
<para
>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. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Verkställ</guilabel
></term>
<listitem>
<para
>Klicka på <guibutton
>Verkställ</guibutton
> för att verkställa de inskrivna inställningarna. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Uppdatera</guilabel
></term>
<listitem>
<para
>Klicka på <guibutton
>Uppdatera</guibutton
> för att uppdatera <link linkend="extensions-elog-entry"
>dialogrutan <guilabel
>Inmatning av Elog-händelse</guilabel
></link
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Stäng</guilabel
></term>
<listitem>
<para
>Klicka på <guibutton
>Stäng</guibutton
> för att avsluta dialogrutan. </para>
</listitem>
</varlistentry>

</variablelist>

</sect2>

<sect2 id="extensions-elog-entry">
<title
>Lägg till en Elog-post </title>
<para
>Välj <menuchoice
><guimenu
>Arkiv</guimenu
><guimenuitem
>Lägg till Elog-post...</guimenuitem
></menuchoice
> 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. Egenskapernas typ beror på loggbok som anges. Skärmbilden nedan visar ett exempel på möjliga egenskaper som krävs. </para>

<screenshot>
<screeninfo
>Att lägga till en post</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="Screenshot-kst-extensions-elog-addentry.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Att lägga till en post</phrase>
</textobject>
</mediaobject>
</screenshot>


<variablelist>



<varlistentry id= "logged-info">
<term
>Lagrad information</term>
<listitem>
<para
>Använd de tre kryssrutorna längst ner för att välja vilken typ av information som ska loggas. <itemizedlist>

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

<listitem
><para
><guilabel
>Inkludera Kst-inställningsfil</guilabel
> anger att <filename
>*.kst</filename
> sparade filer ska biläggas posten. </para
></listitem>

<listitem
><para
>Om <guilabel
>Inkludera Kst-felsökningsinformation</guilabel
> är markerat, biläggs dessutom en kopia av <link linkend="settings-debuglog"
>felsökningsloggen</link
> till posten. </para
></listitem>

</itemizedlist>
</para>
</listitem>
</varlistentry>

<varlistentry id="configuration">
<term
><guilabel
>Inställning...</guilabel
></term>
<listitem
><para
>Genom att klicka på <guilabel
>Inställning...</guilabel
> visas dialogrutan <guilabel
>Elog-inställning</guilabel
>. Se avsnittet <link linkend="extensions-elog-settings"
>Inställning av server och loggning</link
> för detaljinformation. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Skicka</guilabel
></term>
<listitem
><para
>Klicka på <guilabel
>Skicka</guilabel
> för att skicka in loggposten. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Avbryt</guilabel
></term>
<listitem
><para
>Klicka på <guilabel
>Avbryt</guilabel
> för att stänga dialogrutan utan att skicka in loggposten. </para
></listitem>
</varlistentry>
</variablelist>

<para
>När Elog-funktionen är aktiverad för ett <link linkend="data-types-eventmonitors"
>händelsebevakningsobjekt</link
>, gör ett klick på knappen <guibutton
>Inställning...</guibutton
> i dialogrutan <guilabel
>Ny händelsebevakning</guilabel
> att dialogrutan <guilabel
>Elog händelseinmatning</guilabel
> visas. I denna dialogruta kan användaren mata in information för loggbokens egenskaper. Återigen beror typ av egenskaper på loggboken som är inställd i Elog-inställningsdialogrutan. </para>
<screenshot>
<screeninfo
>Loggningsinställningar för händelsebevakning</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="Screenshot-kst-extensions-elog-loggingsettings.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
>Loggningsinställningar för händelsebevakning</phrase>
</textobject>
</mediaobject>
</screenshot>
<variablelist>

<varlistentry>
<term
>Lagrad information</term>
<listitem>
<para
><link linkend="logged-info"
>Se förklaring ovan</link
>. </para>
</listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Inställning...</guilabel
></term>
<listitem
><para
><link linkend="configuration"
>Se förklaring ovan</link
>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Test</guilabel
></term>
<listitem
><para
>Knappen används för att prova Elog-inställningen. Om den användarspecificerade loggboken är rätt inställd, skickas ett provmeddelande till loggboken genom att klicka på <guilabel
>Test</guilabel
>: <quote
>Test av Elog-händelsepost</quote
>. </para
></listitem>
</varlistentry>

<varlistentry>
<term
><guilabel
>Stäng</guilabel
></term>
<listitem
><para
>Klicka på <guilabel
>Stäng</guilabel
> för att stänga dialogrutan. </para
></listitem>
</varlistentry>

</variablelist>




</sect2>









<sect2 id="extensions-elog-browser">
<title
>Elog-bläddrare</title>
<para
>Välj <menuchoice
><guimenu
>Arkiv</guimenu
><guimenuitem
>Starta Elog-bläddrare...</guimenuitem
></menuchoice
> för att visa befintliga loggböcker via Kst. </para>

<screenshot>
<screeninfo
>Starta Elog-bläddrare</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="Screenshot-kst-extensions-elog.png" format="PNG"/>

</imageobject>
<textobject>
<phrase
>Elog-bläddrare</phrase>
</textobject>
</mediaobject>
</screenshot>

<tip>
<para
>För att snabbt visa Elog-bläddraren och lägga till en post i en loggbok, klicka bara på <inlinemediaobject
> <imageobject
> <imagedata fileref="Screenshot-kst-extensions-elogbrowsericon.png" format="PNG"/></imageobject
> <textobject
> <phrase
>Elog-bläddrare</phrase
> </textobject
> </inlinemediaobject
> i verktygsraden för att starta Elog-bläddraren och <inlinemediaobject
> <imageobject
> <imagedata fileref="Screenshot-kst-extensions-elogentryicon.png" format="PNG"/></imageobject
> <textobject
> <phrase
>Postikon</phrase
> </textobject
> </inlinemediaobject
> för att lägga till en Elog-post. </para>
</tip>
</sect2>





<sect2 id="extensions-using-elog-class">
<title
>Använda klassen ELOG i Kst-skript</title>
<para
>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 <link linkend="class_ELOG"
>Dokumentation av klassen ELOG</link
>. </para>

<example id="Elog-class-eg">
<title
>Lägga till en Elog-post via Kst-skript</title>
<programlisting
>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");         
elog.addAttribute("Type", "Routine");         
                                         
elog.submit();                                 
</programlisting>
</example>
</sect2>



</sect1>

<sect1 id="extensions-kstscript">
<title
>Kst-skript</title>
<para
>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 <menuchoice
><guimenu
>Inställningar</guimenu
><guimenuitem
>Utökningar...</guimenuitem
></menuchoice
> och försäkra dig om att <guilabel
>Javaskript-utökning</guilabel
> är markerad, för att aktivera Kst-skript. </para>

<sect2 id="kstscriptrunning">
<title
>Att köra ett Kst-skript</title>
<para
>Det finns tre sätt att köra ett Kst-skript. </para>

<itemizedlist>
<listitem
> <para
>Från kommandoraden när &kst; startas: <screen
><userinput
><command
>kst -E js:"loadScript('mitt_skript.js')"</command
></userinput
></screen>

</para
> </listitem>
<listitem
> <para
>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 <menuchoice
><guimenu
>Verktyg</guimenu
><guimenuitem
>Visa Javaskript-terminal</guimenuitem
></menuchoice
>. <screen
><userinput
><command
>kstcmd</command>
</userinput
>Attached to Kst session kst-17704
kst
> <command
>loadScript(mitt_skript.js)</command
>
</screen>
</para
> </listitem>
<listitem
> <para
>Från menyn när &kst; väl har startats: <menuchoice
><guimenu
>Arkiv</guimenu
><guimenuitem
>Ladda Javaskript</guimenuitem
></menuchoice
> </para
> </listitem>
</itemizedlist>
<para
>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. </para>

</sect2>

<sect2 id="kstscriptexamples">
<title
>Exempel på Kst-skript</title>

<para
>Kst-skript ger &kst; ett kraftfullt programmeringsgränssnitt. I huvudsak kan det användas för att skapa <quote
>smarta</quote
> 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. </para>

<sect3 id="kstscriptexample">
<title
>Ett enkelt Kst-skript</title>
<para
>Här har vi det enklast möjliga Kst-skriptet: rita upp en kurva från slumptal. </para>
<para
> <screen
>// 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 &lt; 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)"
</screen
></para>
<para
>Skriptet kan köras med vilken som helst av metoderna i <xref linkend="kstscriptrunning"/>. Här är en skärmbild av &kst; efter att kommandona har matats in via metoden med inbäddad terminal. </para>
<screenshot>
<screeninfo
>Enkel utmatning</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="Screenshot-kst-extensions-kstscriptexample.png" format="PNG"/>
</imageobject>
<textobject>
<phrase
></phrase>
</textobject>
</mediaobject>
</screenshot>

<para
>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 <quote
>anonym vektor 1</quote
>, eller <quote
></quote
>. Det är orsaken till att vi tar emot flera meddelanden med <quote
>odefinierad</quote
> 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: <screen
>p.curves.append("signalvstime");
</screen>
</para>
</sect3>

<sect3 id="kstscriptsubroutines">
<title
>Skriva, inkludera och anropa funktioner</title>
<para
>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: </para>
<para
> <screen
>// 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 &lt; w.plots.length; ip++ ) {
                cp = w.plots[ip]; // aktuellt diagram
                if (cp.xAxis.label == "Tid (s)") {
                        for (ic = 0; ip &lt; 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);
}

</screen
> </para>
<para
>Exemplet innehåller två funktioner: <command
>takeSpectraOfTimePlots()</command
> och <command
>plotSpectrum(p,v)</command
>. 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. </para>
<para
>Följande skript laddar rutinerna från <filename
>subrutiner.js</filename
>. Det använder <filename
>enkel.js</filename
> 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 <filename
>subrutiner.js</filename
> laddas med <command
>loadScript()</command
>, samma anrop som användes på kommandoraden i <xref linkend="kstscriptrunning"/>. </para>
<para
> <screen
>// anropasubs.js
// Demonstrera anrop av subrutiner

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

takeSpectraOfTimePlots();
</screen
> </para>

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

<para>
<screenshot>
<screeninfo
>Utmatning från anropasubs</screeninfo>
<mediaobject>
<imageobject>
<imagedata fileref="Screenshot-kst-extensions-kstscriptsubroutinesexample.png" format="PNG"/>
</imageobject>
</mediaobject>
</screenshot>
</para>

</sect3>
</sect2>

<sect2 id="kstscriptmoreinfo">
<title
>Ytterligare dokumentation av Kst-skript</title>

<para
>Fullständig dokumentation om klasser i Kst-skript finns i <link linkend="script-chapter"
>Appendix D</link
>. </para>
</sect2>
</sect1>

</chapter>


<!-- Keep this comment at the end of the file
Local variables:
mode: xml
sgml-omittag:nil
sgml-shorttag:nil
sgml-namecase-general:nil
sgml-general-insert-case:lower
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:0
sgml-indent-data:true
sgml-parent-document:("index.docbook" "book" "chapter")
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
-->
