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

<authorgroup>
<author
><firstname
>Éric</firstname
> <surname
>Bischoff</surname
> </author>
<othercredit role="translator"
><firstname
>José</firstname
><surname
>Pires</surname
><affiliation
><address
><email
>zepires@gmail.com</email
></address
></affiliation
><contrib
>Tradução</contrib
></othercredit
> 
</authorgroup>

<date
>2016-05-11</date>
<releaseinfo
>1.0.0 (Aplicações 16.04)</releaseinfo>

<keywordset>
<keyword
>KDE</keyword>
<keyword
>Homem Batata</keyword>
<keyword
>referência técnica</keyword>
</keywordset>
</chapterinfo>

<title
>Referência Técnica</title>

<para
>O &ktuberling; oferece uma forma gentil e compensadora de introduzir à personalização e programação do &kde;. A aplicação pode ser extendida. Por exemplo, sem qualquer codificação, poderão ser adicionados novos recreios, alterando os ficheiros gráficos. Ao adicionar os ficheiros de som apropriados, os tradutores poderão alterar os sons para a sua língua-mãe! </para>

<para
>Se extender ou adicionar ao jogo, por favor pense na hipótese de enviar as suas adições ao programador <ulink url="mailto:alex@eyeos.org"
>Alex Fiestas</ulink
> de modo a inclui-las nas próximas versões. </para>

<sect1 id="for-artists">
<title
>Para Artistas</title>

<para
>Para criar um novo recreio para o &ktuberling;, terá de: </para>

<itemizedlist>

<listitem>
    <para
>Desenhar o recreio num ficheiro SVG, onde terá de: <itemizedlist>
            <listitem
><para
>Chamar "background" ao local onde os itens poderão ser largados.</para
></listitem>
            <listitem
><para
>Dar um nome único a todos os itens arrastáveis.</para
></listitem>
        </itemizedlist>
    </para>
</listitem>

<listitem>
    <para
>Criar um ficheiro '.theme' que terá de seguir este esquema:</para>
    <programlisting
>&lt;playground gameboard="<replaceable
>oSeuFicheiroSVG</replaceable
>" name="<replaceable
>oFicheiroDesktop</replaceable
>"&gt;
    &lt;object name="<replaceable
>nomeItem</replaceable
>" sound="<replaceable
>nomeSom</replaceable
>" scale="<replaceable
>valor</replaceable
>" /&gt;
    ...
    ...
    ...
    &lt;/playground&gt;
    </programlisting>
    <itemizedlist>
        <listitem
><para
><replaceable
>oSeuFicheiroSVG</replaceable
> é o nome do ficheiro SVG que tem o desenho.</para
></listitem>
        <listitem
><para
><replaceable
>oFicheiroDesktop</replaceable
> é o nome do ficheiro 'desktop' que tem o nome do tema.</para
></listitem>
        <listitem
><para
>Para cada objecto, irá necessitar de um item &lt;object&gt;. O <replaceable
>nomeItem</replaceable
> é o nome único que usou no ficheiro SVG, o <replaceable
>nomeSom</replaceable
> é o nome do som que será tocado ao arrastar o item; veja o HOWTO de temas de sons para mais informações.</para
></listitem>
        <listitem
><para
>O 'scale' é opcional e o <replaceable
>valor</replaceable
> é o factor de escala que será usado ao desenhar este objecto fora do armazém; se não for indicado, é igual a 1.</para
></listitem>
    </itemizedlist>
</listitem>

<listitem>
    <para
>Crie um ficheiro '.desktop' que siga este esquema</para>
    <programlisting
>[KTuberlingTheme]
    Name=<replaceable
>nomeTema</replaceable
>
    </programlisting>
    <itemizedlist>
        <listitem
><para
><replaceable
>nomeTema</replaceable
> é o nome que identifica o tema, o qual aparecerá no menu de Recreio.</para
></listitem>
    </itemizedlist>
</listitem>

<listitem>
    <para
>Se estiver a adicionar o tema ao repositório do &ktuberling;, adicione os ficheiros '.svg' '.theme' e '.desktop' à secção FILES do ficheiro CMakeLists.txt da pasta 'pics/' </para>
</listitem>

<listitem>
    <para
>Se o quiser instalar você mesmo, coloque os ficheiros '.svg', '.theme' e '.desktop' do tema em <filename class="directory"
>ktuberling/pics</filename
>, dentro da pasta devolvida por <userinput
><command
>qtpaths</command
> <option
>--paths GenericDataLocation</option
></userinput
> </para>
</listitem>

</itemizedlist>

</sect1>

<sect1 id="for-translators">
<title
>Para os Tradutores</title>

<para
>Para além do mecanismo normal dos ficheiros <literal role="extension"
>.po</literal
> para traduzir os textos do programa e as mensagens, os sons também poderão ser localizados. </para>

<para
>Para criar um novo tema de sons do &ktuberling;, terá de: </para>

<itemizedlist>

<listitem
><para
>Gravar os sons no formato de ficheiro RC3 do OGG Vorbis.</para
></listitem>

<listitem>
<para
>Criar um ficheiro <replaceable
>codigoDuasLetrasDaSuaLingua</replaceable
>.soundtheme que terá de seguir este esquema:</para>
<programlisting
>&lt;language code="<replaceable
>oCodigoDuasLetrasLingua</replaceable
>"&gt;
&lt;sound name="<replaceable
>nomeSom</replaceable
>" file="<replaceable
>localRelativo</replaceable
>" /&gt;
...
...
...
&lt;/language&gt;
</programlisting>
<itemizedlist>
<listitem
><para
><replaceable
>oSeuCodigoDuasLetras</replaceable
> é o código de duas letras da sua língua, sendo por exemplo 'pt' para o Português.</para
></listitem>
<listitem
><para
>Para cada som, deverá existir um item &lt;sound&gt;. O <replaceable
>nomeSom</replaceable
> deverá corresponder ao 'nomeSom' indicado no tema do recreio (ver o HOWTO dos temas). O <replaceable
>localRelativo</replaceable
> deverá ser o local relativo onde irá instalar o ficheiro com este som, sendo tipicamente igual a umLocalUnico/nomeSom.format (o 'umLocalUnico' pode ser o código de duas letras da sua língua, por exemplo).</para
></listitem>
</itemizedlist>
</listitem>

<listitem
><para
>Se estiver a adicionar o tema de sons ao &ktuberling; na sua pasta 'language':</para>
<itemizedlist>
<listitem
><para
>Adicione os ficheiros de sons e o ficheiro '.soundtheme' à pasta 'data/kdegames/ktuberling' das traduções da sua língua.</para
></listitem>
<listitem
><para
>Nessa mesma pasta, será necessário um ficheiro 'CMakeLists.txt' que descreve como instalar os ficheiros, sendo tipicamente.</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
>codigoDuasLetrasDaSuaLingua</replaceable
> )
INSTALL( FILES <replaceable
>codigoDuasLetrasDaSuaLingua</replaceable
>.soundtheme DESTINATION ${KDE_INSTALL_DATADIR}/ktuberling/sounds/ )
</programlisting>
</listitem>
</itemizedlist>
</listitem>

<listitem>
<para
>Se quiser instalá-lo você mesmo:</para>
<itemizedlist>
<listitem
><para
>Coloque o ficheiro <replaceable
>codigoDuasLetrasSuaLingua</replaceable
>.soundtheme na pasta <filename class="directory"
>ktuberling/sounds</filename
> dentro da pasta devolvida por <userinput
><command
>qtpaths</command
> <option
>--paths GenericDataLocation </option
></userinput
></para
></listitem>
<listitem
><para
>Coloque os seus ficheiros de som em <filename class="directory"
>ktuberling/sounds/localizacaoUnica</filename
>, dentro da pasta devolvida por <userinput
><command
>qtpaths</command
> <option
>--paths GenericDataLocation </option
></userinput
></para
></listitem>
</itemizedlist>
</listitem>

</itemizedlist>

<para
>A informação sobre como lidar com os mecanismos de tradução no &kde; está disponível no <ulink url="http://l10n.kde.org/docs/translation-howto/index.html"
>HOWTO de Traduções do &kde;</ulink
>. </para>

</sect1>

<sect1 id="for-programmers">

<title
>Para os Programadores</title>
<para
>Não é difícil aos programadores estenderem o &ktuberling;.</para>

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

<variablelist>
<varlistentry>
<term
><classname
>TopLevel</classname
></term>
<listitem>
<para
>Janela de topo e gestão básica do programa</para>
</listitem>
</varlistentry>

<varlistentry>
<term
><classname
>PlayGround</classname
></term>
<listitem>
<para
>Descrição de um dos níveis de jogo</para
> </listitem>
</varlistentry>

<varlistentry>
<term
><classname
>ToDraw</classname
></term>
<listitem>
<para
>Uma descrição de um dos <quote
>objectos</quote
> gráficos a serem desenhados</para
> </listitem>
</varlistentry>

<varlistentry>
<term
><classname
>SoundFactory</classname
></term>
<listitem>
<para
>Descrição de uma das línguas e dos seus sons</para
> </listitem>
</varlistentry>

<varlistentry>
<term
><classname
>Action</classname
></term>
<listitem>
<para
>Uma das acções do utilizador na minha de desfazer/refazer.</para
> </listitem>
</varlistentry>
</variablelist>

</sect2>

</sect1>
</chapter>
