<chapter id="technical-reference">
<chapterinfo>

<authorgroup>
<author
><firstname
>Éric</firstname
> <surname
>Bischoff</surname
> </author>
<othercredit role="translator"
> <firstname
>Stefan</firstname
> <surname
>Asserhäll</surname
> <affiliation
><address
><email
>stefan.asserhall@bredband.net</email
></address
></affiliation
> <contrib
>Översättare</contrib
></othercredit
> 
</authorgroup>

<date
>2016-05-11</date>
<releaseinfo
>1.0.0 (Program 16.04)</releaseinfo>

<keywordset>
<keyword
>KDE</keyword>
<keyword
>Potatismannen</keyword>
<keyword
>teknisk referens</keyword>
</keywordset>
</chapterinfo>

<title
>Teknisk referens</title>

<para
>Potatismannen erbjuder en mjuk och lönande inledning till anpassning och programmering av &kde;. Programmet kan utökas. Utan att koda kan till exempel nya lekplatser läggas till genom att ändra grafikfiler. Genom att lägga till lämpliga ljudfiler, kan översättare ändra ljuden till sitt modersmål! </para>

<para
>Om du utökar eller lägger till något i spelet, skicka gärna dina tillägg till utvecklaren <ulink url="mailto:alex@eyeos.org"
>Alex Fiestas</ulink
> så att de kan läggas till i framtida utgåvor. </para>

<sect1 id="for-artists">
<title
>För grafiker</title>

<para
>För att skapa en ny lekplats i Potatismannen måste du: </para>

<itemizedlist>

<listitem>
    <para
>Rita lekplatsen i en SVG-fil, är du måste: <itemizedlist>
            <listitem
><para
>Namnge platsen där objekt kan dras "bakgrunden".</para
></listitem>
            <listitem
><para
>Namnge vart och ett av objekten som kan dras med ett unikt namn.</para
></listitem>
        </itemizedlist>
    </para>
</listitem>

<listitem>
    <para
>Skapa en .theme-fil, som måste ha följande utseende:</para>
    <programlisting
>&lt;playground gameboard="<replaceable
>din_SVG-fil</replaceable
>" name="<replaceable
>skrivbordsfilen</replaceable
>"&gt;
    &lt;object name="<replaceable
>objektnamn</replaceable
>" sound="<replaceable
>ljudnamn</replaceable
>" scale="<replaceable
>något_värde</replaceable
>" /&gt;
    ...
    ...
    ...
    &lt;/playground&gt;
    </programlisting>
    <itemizedlist>
        <listitem
><para
><replaceable
>din_SVG-fil</replaceable
> är namnet på SVG-filen som innehåller grafiken.</para
></listitem>
        <listitem
><para
><replaceable
>skrivbordsfilen</replaceable
> är namnet på skrivbordsfilen som har samma namn som temat.</para
></listitem>
        <listitem
><para
>För varje objekt behövs posten &lt;object&gt;. <replaceable
>Objektnamn</replaceable
> är det unika namn som användes i SVG-filen. <replaceable
>Ljudnamn</replaceable
> är ljudnamnet som spelas när det dras, se beskrivningen av ljudteman för mer information.</para
></listitem>
        <listitem
><para
>Skalan är valfri och <replaceable
>något_värde</replaceable
> är skalfaktorn som används när objektet ritas utanför lagret. Om den inte anges är den 1.</para
></listitem>
    </itemizedlist>
</listitem>

<listitem>
    <para
>Skapa en .desktop-fil, som måste ha följande utseende:</para>
    <programlisting
>[KTuberlingTheme]
    Name=<replaceable
>temanamn</replaceable
>
    </programlisting>
    <itemizedlist>
        <listitem
><para
><replaceable
>temanamn</replaceable
> är namnet som identifierar temat, och som visas i menyn Lekplats.</para
></listitem>
    </itemizedlist>
</listitem>

<listitem>
    <para
>Om du lägger till temat i Potatismannens arkiv, lägg till .svg-, .theme- och .desktop-filer i avdelningen FILES av CMakeLists.txt i katalogen pics/. </para>
</listitem>

<listitem>
    <para
>Om du vill installera det själv, placera .svg-, .theme- och .desktop-filer i <filename class="directory"
>ktuberling/pics</filename
> i <userinput
><command
>qtpaths</command
> <option
>--paths GenericDataLocation</option
></userinput
> </para>
</listitem>

</itemizedlist>

</sect1>

<sect1 id="for-translators">
<title
>För översättare</title>

<para
>Förutom den vanliga <literal role="extension"
>.po</literal
>-fil mekanismen för att översätta programrubriker och promptrar, kan ljuden också anpassas. </para>

<para
>För att skapa ett nytt ljudtema för Potatismannen måste du: </para>

<itemizedlist>

<listitem
><para
>Spela in ljuden med OGG Vorbis rc3 filformat.</para
></listitem>

<listitem>
<para
>Skapa filen <replaceable
>ditt_språks_tvåbokstavskod</replaceable
>.soundtheme, som måste ha följande utseende:</para>
<programlisting
>&lt;language code="<replaceable
>ditt_språks_tvåbokstavskod</replaceable
>"&gt;
&lt;sound name="<replaceable
>ljudnamn</replaceable
>" file="<replaceable
>relativ_sökväg</replaceable
>" /&gt;
...
...
...
&lt;/language&gt;
</programlisting>
<itemizedlist>
<listitem
><para
><replaceable
>ditt_språks_tvåbokstavskod</replaceable
> är koden med två bokstäver för ditt språk, till exempel sv för svenska.</para
></listitem>
<listitem
><para
>För varje ljud behövs posten &lt;sound&gt;. <replaceable
>ljudnamn</replaceable
> som ska passa ihop med ljudnamn som anges för lekplatsen (se beskrivningen av teman). <replaceable
>relativ_sökväg</replaceable
> är platsen där filen med ljudet ska installeras. Oftast är det någon_unik_sökväg/ljudnamn.format (någon_unik_sökväg kan till exempel vara språkets tvåbokstavskod).</para
></listitem>
</itemizedlist>
</listitem>

<listitem
><para
>Om du lägger till ljudtemat för Potatismannens i din språkkatalog:</para>
<itemizedlist>
<listitem
><para
>Lägg till ljudfilerna och .soundtheme-filerna i katalogen data/kdegames/ktuberling under översättningen av ditt språk.</para
></listitem>
<listitem
><para
>I samma katalog behövs en CMakeLists.txt som beskriver hur filerna ska installeras. Typiskt innehåller den:</para>
<!--FIXME l10n-kf5/*/data/kdegames/ktuberling/CMakeLists.txt has DATA_INSTALL_DIR, has this to be changed?-->
<programlisting
>FILE( GLOB oggfiles *.ogg )
INSTALL( FILES ${oggfiles} DESTINATION ${KDE_INSTALL_DATADIR}/ktuberling/sounds/<replaceable
>ditt_språks_tvåbokstavskod</replaceable
> )
INSTALL( FILES <replaceable
>ditt_språks_tvåbokstavskod</replaceable
>.soundtheme DESTINATION ${KDE_INSTALL_DATADIR}/ktuberling/sounds/ )
</programlisting>
</listitem>
</itemizedlist>
</listitem>

<listitem>
<para
>Om du vill installera den själv:</para>
<itemizedlist>
<listitem
><para
>Placera filen <replaceable
>ditt_språks_tvåbokstavskod</replaceable
>.soundtheme i <filename class="directory"
>ktuberling/sounds</filename
> i <userinput
><command
>qtpaths</command
> <option
>--paths GenericDataLocation </option
></userinput
></para
></listitem>
<listitem
><para
>Placera dina ljudtemafiler i <filename class="directory"
>ktuberling/sounds/någon_unik_sökväg</filename
> i <userinput
><command
>qtpaths</command
> <option
>--paths GenericDataLocation </option
></userinput
></para
></listitem>
</itemizedlist>
</listitem>

</itemizedlist>

<para
>Information om hur man arbetar med översättningsmekanismen i &kde; finns tillgänglig på <ulink url="http://l10n.kde.org/docs/translation-howto/index.html"
>&kde; Translation HOWTO</ulink
>. </para>

</sect1>

<sect1 id="for-programmers">

<title
>För programmerare</title>
<para
>Potatismannen är inte särskilt svår att utöka för programmerare.</para>

<sect2 id="classes">
<title
>C++ klasser</title>

<variablelist>
<varlistentry>
<term
><classname
>TopLevel</classname
></term>
<listitem>
<para
>Toppnivåfönster och grundläggande programhantering</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><classname
>PlayGround</classname
></term>
<listitem>
<para
>Beskrivning av en av spelets nivåer</para
> </listitem>
</varlistentry>

<varlistentry>
<term
><classname
>ToDraw</classname
></term>
<listitem>
<para
>Beskrivning av ett av de grafiska <quote
>objekten</quote
> som ska ritas</para
> </listitem>
</varlistentry>

<varlistentry>
<term
><classname
>SoundFactory</classname
></term>
<listitem>
<para
>Beskrivning av ett av språken och dess ljud</para
> </listitem>
</varlistentry>

<varlistentry>
<term
><classname
>Action</classname
></term>
<listitem>
<para
>En av användarens åtgärder i stacken med ångra och gör om.</para
> </listitem>
</varlistentry>
</variablelist>

</sect2>

</sect1>
</chapter>
