<chapter id="kdm-themes">
  <title
>Thema's aanmaken voor de &kdm;-begroeting</title>

  <para
>Deze sectie beschrijft het aanmaken van thema's voor de greeter met thema's. Voor voorbeelden inclusief schermafdrukken, zie de geïnstalleerde standaard thema's en de thema's van <ulink type="http" url="http://www.kde-look.org/index.php?xcontentmode=40"
> de thema-website</ulink
>. </para>

  <sect1 id="theme-overview">
    <title
>Thema-overzicht</title>

    <para
>&kdm;-thema's kunnen worden aangemaakt door een XML-bestand aan te maken die de specificatie volgt in <filename
>$<envar
>KDEDIR</envar
>/share/apps/doc/kdm/greeter.dtd</filename
>. Thema-bestanden worden opgeslagen in de map <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/apps/kdm/themes/<replaceable
>thema_naam</replaceable
></filename
>. De thema-map zou een bestand genaamd <filename
>KdmGreeterTheme.desktop</filename
> moeten bevatten die hetzelfde formaat heeft als andere <filename class="extension"
>.desktop</filename
>-bestanden en er uit ziet als: <programlisting
>[KdmGreeterTheme]
Greeter=cirkels.xml
Name=Cirkels
Description=Thema met blauwe cirkels
Author=Bond, James Bond
Copyright=(c) 2002 Bond, James Bond
Screenshot=schermafdruk.png
</programlisting>
    </para>

    <para
>De <literal
>Name</literal
>, <literal
>Description</literal
>, <literal
>Author</literal
> en <literal
>Copyright</literal
> velden kunnen in de lokale taal worden ingevuld zoals in andere <filename class="extension"
>.desktop</filename
>-bestanden. Alle genoemde bestanden zouden zich in de thema-map zelf moeten bevinden. Het <literal
>Screenshot</literal
> veld wijst naar een bestand dat een schermafbeelding zou moeten zijn van 200x150 van het thema in actie (het is OK er geen te hebben, maar het is mooier voor de gebruiker). Het <literal
>Greeter</literal
>-item wijst naar een XML-bestand dat de beschrijving bevat van het thema. </para>

    <!--
    <para>
      Once a theme is installed, it can be tested with the
      <command
>gdmthemetester</command
> program.  This program assumes that
      the X server supports a nested server command.  This command takes two
      arguments, first the environment that should be used.  The environment
      can be one of the following values: console, console-timed, flexi,
      remote-flexi, or xdmcp.  The &quot;console&quot; option tests the
      theme as it would be shown on an attached display.  The
      &quot;console-timed&quot; option tests the theme as it would be shown
      on an attached display with timed login enabled.  The &quot;flexi&quot;
      option tests the theme as it would be shown on an attached flexible
      display (such as started via Xnest).  Finally, the &quot;xdmcp&quot;
      option tests the theme as it would be shown for remote XDMCP 
      displays.  The second argument is the theme name.  For example, to 
      test how the circles theme would look in XDMP remote display mode,
      you would run the following command:
    </para>

<cmdsynopsis>
  <command
>gdmthemetester</command
> <arg
>xdmcp</arg
> <arg
><replaceable
>circles</replaceable
></arg>
</cmdsynopsis>

    <para>
      When developing a theme, make sure to test all the environments, and
      make sure to test how the caps lock warning looks by pressing the caps
      lock key.  Running <command
>gdmthemetester</command
> is also a good way
      to take screenshots of &kdm; themes.  Simply take a screenshot of the
      theme running in the nested display window.  This can be done in GNOME
      by focusing the nested login window and pressing Alt-PrintScreen.
    </para>
    -->

    <para
>Als een thema uiteindelijk volledig is getest, dan maakt u een tarball die de map bevat zoals het zou worden geïnstalleerd in de map <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/apps/kdm/themes</filename
>. Dit is het standaard formaat voor het distribueren van &kdm;-thema's. </para>
  </sect1>

  <sect1 id="theme-format">
    <title
>Gedetailleerde omschrijving van het thema-xml-formaat</title>

    <sect2 id="greeter-tag">
      <title
>Toplevel-node</title>

      <para
>&kdm; thema's zijn XML-bestanden met de &lt;greeter&gt;-tag aan hun oorsprong. De toplevel-node is een <link linkend="item-nodes"
>item-node</link
> van het type <literal
>rect</literal
> met een impliciete <link linkend="fixed-nodes"
>vaste indeling</link
>. </para>

      <!--
      <para>
        You may specify a Qt GUI style to
        be used with this theme by using the gui-style attribute in the
          greeter tag as in the following example.
 gui-style=&quot;Plastique&quot;
      </para>
      -->

<programlisting
>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;!DOCTYPE greeter SYSTEM "greeter.dtd"&gt;
&lt;greeter&gt;
[...]
&lt;/greeter&gt;
</programlisting>

      <para
>Ingebed tussen de greeter-tag kunnen de beschreven nodes zijn in de volgende secties van dit document. Enkele van deze nodes zijn containers (indelingsnodes, itemnodes) die weer andere nodes kunnen bevatten. </para>
    </sect2>

    <sect2 id="item-nodes">
      <title
>Itemnodes</title>

      <para
>Een &kdm;-thema wordt aangemaakt door een hiërarchie van item- en indelingsnodes. Itemnodes kunnen de volgende waarde voor het <literal
>type</literal
>-attribuut hebben: </para>

      <variablelist>

        <varlistentry>
          <term
>knop</term>
          <listitem>
            <para
>Een knopveld. Dit veld gebruikt een Qt-knop. </para>
            <para
>Het is ook mogelijk om elk ander item zich als een knop te laten gedragen door zijn <literal
>button</literal
>-attribuut op <literal
>true</literal
> in te stellen. Het is echter beter om Qt-knoppen in &kdm; te gebruiken omdat deze toegankelijk voor gehandicapte gebruikers. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>entry</term>
          <listitem>
            <para
>Een invoer-widget zoals een regelinvoervak of combovak. Merk op dat dit een plaatshouder is voor Qt-widgets.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>label</term>
          <listitem>
            <para
>Een tekstlabel. Moet of een <link linkend="text-nodes"
><literal
>text</literal
>-node</link
> bevatten of een <link linkend="stock-nodes"
><literal
>stock</literal
>-node</link
> om tekst te specificeren. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>lijst</term>
          <listitem>
            <para
>Een widget voor het gezichtsbladerprogramma.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>pixmap</term>
          <listitem>
            <para
>Een rasterafbeelding in een formaat dat Qt ondersteunt, &eg; PNG, JPEG, Tiff, etc.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>rect</term>
          <listitem>
            <para
>Een gewone rechthoek.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>svg</term>
          <listitem>
            <para
>Een vectorafbeelding in SVG-formaat.</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para
>Bijvoorbeeld: <programlisting>
&lt;item type=&quot;label&quot;&gt;
</programlisting
> Een item dat zich gedraagt als een knop: <programlisting
>&lt;item type=&quot;rect&quot; id=&quot;disconnect_button&quot; button=&quot;true&quot;&gt;.
</programlisting>
      </para>

      <para
>Standaard verdwijnt het &kdm;-aanmeldscherm na authenticatie. Dit kan geflikker tot gevolg hebben tussen het aanmeldscherm en de sessie. Het <literal
>background</literal
>-attribuut stelt gebruikers in staat om  te specificeren welke elementen van het thema de achtergrondafbeelding vormen. Bij gebruik zorgt dit ervoor dat &kdm; alle niet-achtergrond items uit het scherm verwijdert en de overblijvende <literal
>background</literal
>-items mengt met het beginvenster. Dit kan worden gebruikt voor een gladde overgang tussen het aanmeldscherm en de sessie: <programlisting>
&lt;item type=&quot;rect&quot; background=&quot;true&quot;&gt;
  &lt;normal file="background.svg"/&gt;
  &lt;pos x=&quot;0&quot; y=&quot;0&quot; width=&quot;100%&quot; height=&quot;-75&quot;/&gt;
&lt;/item&gt;
</programlisting
> Om een verschillende achtergrond te hebben voor de aanmeldtransitie dan die gebruikt wordt voor aanmelden, zou het thema twee item-nodes moeten specificeren (die bijvoorbeeld pixmaps of svg-afbeeeldingen bevatten). Het item dat overeenkomt met de begroetingsachtergrond zou geen <literal
>background</literal
>-eigenschap moeten hebben terwijl het item dat overeenkomt met de transitieachtergrond wel de <literal
>background</literal
>-eigenschap zou moeten hebben. Bijvoorbeeld : <programlisting
>&lt;?xml version="1.0" encoding=&quot;UTF-8&quot;?&gt;
&lt;!DOCTYPE greeter SYSTEM &quot;greeter.dtd&quot;&gt;
&lt;greeter&gt;
  &lt;item type=&quot;rect&quot; background=&quot;true&quot;&gt;
    &lt;normal file="background_for_login.svg" element="background"/&gt;
    &lt;pos x=&quot;0&quot; y=&quot;0&quot; width=&quot;100%&quot; height=&quot;100%&quot;/&gt;
  &lt;/item&gt;
  &lt;item type=&quot;rect&quot;&gt;
    &lt;normal file="background_for_greeter.svg"/&gt;
    &lt;pos x=&quot;0&quot; y=&quot;0&quot; width=&quot;100%&quot; height=&quot;100%&quot;/&gt;
  &lt;/item&gt;
  [...]
&lt;/greeter&gt;
</programlisting>

      </para>

      <para
>Bij meerdere schermen kunnen thema's ook gespecificeerd worden voor andere schermen dan waarop de begroeting staat - maar daar verschijnen typisch alleen achtergrond items. Om te specificeren op welk scherm een item zou moeten verschijnen kan het <literal
>screen</literal
>-attribuut worden gebruikt met de waarde gekozen uit <literal
>greeter</literal
>, <literal
>other</literal
> or <literal
>all</literal
>, die terspectievelijk betekenen: het scherm waarop de begroeting staat, alle schermen waarop de begroeting niet staat en alle schermen. </para>

      <variablelist>
        <para
>Aan elk item kan een naam worden gegeven via het <literal
>id</literal
>-attribuut. Bepaalde id's worden door &kdm; herkent om deze items een speciale functie te geven: </para>

        <!--
        <varlistentry>
          <term
><literal
>list</literal
> items</term>
          <listitem>

            <para>
              List items by default display as lists, but the
              <literal
>combo=&quot;true&quot;</literal
> attribute can be used
              to specify combo box style (combo style supported since &kde; ).
              Some predefined lists may be included in a theme by using the
              following id values.  Customized lists may also be defined,
              which are explained below.
            </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Function</segtitle>

              <seglistitem>
                <seg
>session</seg>
                <seg
>A list of available sessions, which allows the user to
                  pick the session to use.  Supported since &kde; .</seg>
              </seglistitem>

              <seglistitem>
                <seg
>language</seg>
                <seg
>A list of available languages, which allows the user to
                  pick the language to use.  Supported since &kde; .</seg>
              </seglistitem>

            </segmentedlist>
          </listitem>
        </varlistentry>
        -->

        <varlistentry>
          <term
><literal
>button</literal
>-items en items met het <literal
>button=&quot;true&quot;</literal
>-attribuut.</term>

          <listitem>
            <para
>Knoppen zijn er typisch om bepaalde acties te starten. Als extra zal &kdm; knoppen verbergen waarvan de acties om de een of andere reden niet beschikbaar zijn. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Actie</segtitle>

              <seglistitem>
                <seg
>kiezer-knop</seg>
                <seg
>Voert de XDMCP-kiezer uit.</seg>
              </seglistitem>

              <!--
              <seglistitem>
                <seg
>custom_cmd_button[0-9]</seg>
                <seg
>Runs the <filename
>n-th</filename
> custom command.</seg>
              </seglistitem>
              -->

              <seglistitem>
                <seg
>verbreek-knop</seg>
                <seg
>Verbreek de verbinding met de sessie op afstand.</seg>
              </seglistitem>

              <!--
              <seglistitem>
                <seg
>language_button</seg>
                <seg
>Open the language selection menu.</seg>
              </seglistitem>
              -->

              <!--
              <seglistitem>
                <seg
>halt_button</seg>
                <seg
>Power off the system.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>reboot_button</seg>
                <seg
>Restart the system.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>suspend_button</seg>
                <seg
>Suspend the system.</seg>
              </seglistitem>
              -->

              <seglistitem>
                <seg
>sessie-knop</seg>
                <seg
>Opent het selectiemenu voor het type sessie.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>systeem-knop</seg>
                <seg
>Opent een alles-vangen-menu met verschillende opties en acties, afhankelijk van de configuratie.</seg>
              </seglistitem>
            </segmentedlist>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
><literal
>label</literal
> items</term>

          <listitem>
            <para
>&kdm; zal deze labels tonen/verbergen en stelt hun tekst in afhankelijk van de status van de aanmelddialoog. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Functie</segtitle>

              <!--
              <seglistitem>
                <seg
>pam-prompt</seg>
                <seg
>Label that displays the <acronym
>PAM</acronym
> prompt.
                  This is the prompt that <acronym
>PAM</acronym>
                  uses to ask for username, password, etc.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>pam-message</seg>
                <seg
>Label that displays the <acronym
>PAM</acronym
> message.
                  These are messages that <acronym
>PAM</acronym
>/&kdm; gives
                  about state of the account, help about the prompts and other
                  information.</seg>
              </seglistitem>
              -->

              <seglistitem>
                <seg
>pam-fout</seg>
                <seg
>Dit toont het <guilabel
>Login mislukt.</guilabel
> bericht.</seg>
              </seglistitem>

            </segmentedlist>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>Items voor het inbedden van widgets</term>

          <listitem>
            <para
>&kdm; zal bepaalde Qt-widgets inbedden in deze items. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Functie</segtitle>

              <seglistitem>
                <seg
>user-entry</seg>
                <seg
>Invoerveld voor gebruikersnaam</seg>
              </seglistitem>

              <seglistitem>
                <seg
>pw-entry</seg>
                <seg
>Invoerveld voor wachtwoord</seg>
              </seglistitem>

              <seglistitem>
                <seg
>domein-item</seg>
                <seg
>Sommige <quote
>conversatie</quote
>-plugins gebruiken dit veld om een domeinnaam op te vragen. Als dit veld aanwezig is, zouden de gerelateerde omsluitende items <link linkend="show-nodes"
>nodes tonen</link
> moeten hebben van het type <literal
>plugin-domain-entry</literal
>.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>talker</seg>
                <seg
>Dit item zou van het type <literal
>rect</literal
> moeten zijn. Het vertegenwoordigt het <quote
>belangrijke</quote
> gebied van de begroeting: het bevat de <literal
>label</literal
> en <literal
>invoer</literal
>-items die gehoren bij het authenticatieproces. Als een gegeven <quote
>conversatie</quote
>-plugin de bestaande items niet kan laten overeenkomen met wat nodig is, dan probeert het een complex widget in te bedden met een eigen indeling in dit item, aldus volledig over de <quote
>talker</quote
> van het thema heen te gaan. Strict gesproken hebben &kdm;-thema's het in het geheel niet nodig om een eigen <quote
>talker</quote
>-ontwerp te hebben, omdat alle &kdm;-authenticatie-plugins in staat zijn om gebruik te maken van het <literal
>talker</literal
>-item. </seg>
              </seglistitem>

              <seglistitem>
                <seg
>gebruikerslijst</seg>
                <seg
>Het item moet van het type <literal
>list</literal
> zijn. als de lijstfunctie van de gebruiker is ingeschakeld, dan zal &kdm; het gebruikerslijst-widget hier inbedden. Anders is dit item verborgen.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>xconsole</seg>
                <seg
>Dit item moet van het type <literal
>rect</literal
> zijn. Als de ingebouwde functie <command
>xconsole</command
> mee is gecompileerd en is ingeschakeld, dan zal &kdm; de console-log-widget hier inbedden. Anders is dit item verborgen.</seg>
              </seglistitem>

            </segmentedlist>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>Andere items</term>

          <listitem>
            <para
>&kdm; toont/verbergt deze items afhankelijk van de configuratie en de huidige status van de begroeting. &kdm; legt geen typevereisten op ze, maar zij lenen zichzelf tot een bepaald type. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Alleen getoond als ...</segtitle>

              <seglistitem>
                <seg
>label met tijdsverloop</seg>
                <seg
>... aanmelden met tijdsverloop is bezig.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>caps-lock-waarschuwing</seg>
                <seg
>... Caps Lock is actief.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>xauth-waarschuwing</seg>
                <seg
>... de &X-Server; vereist geen X-autorisatie om te verbinden.</seg>
              </seglistitem>

              <!--
              <seglistitem>
                <seg
>pam-error-logo</seg>
                <seg
>... a pam-error message is being displayed.
                  This is useful for displaying an <guiicon
>Attention</guiicon>
                  icon, for example.</seg>
              </seglistitem>
              -->

              <seglistitem>
                <seg
>userlist-rect</seg>
                <seg
>... de gebruikerslijst is ingeschakeld. Door het nesten van het item <literal
>userlist</literal
> hierin, is het mogelijk om zoiets als een frame rond de lijst maken en het alleen te laten zien wanneer de gebruikerslijst zelf wordt getoond.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>xconsole-rect</seg>
                <seg
>... het ingebouwde <command
>xconsole</command
> is ingeschakeld. Analoog met <literal
>userlist-rect</literal
>.</seg>
              </seglistitem>

            </segmentedlist>
          </listitem>
        </varlistentry>

      </variablelist>

    </sect2>

    <sect2 id="layout-nodes">
      <title
>Opmaakcontainer-nodes</title>

      <para
>Opmaak-nodes verschijnen in item-nodes en bevatten opnieuw item-nodes. Het type opmaak-node bepaalt de schikking van zijn kind-nodes. Een item-node kan een opmaak-node van elk type bevatten. </para>

      <sect3 id="box-nodes">
        <title
>Box-nodes</title>

        <para
>Box-nodes stellen hun kinderen op in een rij. Ze worden gespecificeerd als volgt: <programlisting>
&lt;box orientation=&quot;<replaceable
>alignment</replaceable
>&quot; min-width=&quot;<replaceable
>num</replaceable
>&quot; min-height=&quot;<replaceable
>num</replaceable
>&quot;
    xpadding=&quot;<replaceable
>num</replaceable
>&quot; ypadding=&quot;<replaceable
>num</replaceable
>&quot; spacing=&quot;<replaceable
>num</replaceable
>&quot;
    homogeneous=&quot;<replaceable
>bool</replaceable
>&quot;&gt;
</programlisting
> Waar <replaceable
>num</replaceable
> het aantal pixels is en <replaceable
>bool</replaceable
> is ofwel <literal
>true</literal
> of <literal
>false</literal
>. De <replaceable
>alignment</replaceable
>-waarde kan ofwel <literal
>horizontal</literal
> of <literal
>vertical</literal
> zijn. Als u een attribuut weglaat, krijgt het de standaard waarde van nul voor aantallen, <literal
>false</literal
> voor bools en <literal
>vertical</literal
> voor de oriëntatie. </para>

        <para
>De 'spacing' is de afstand tussen de naburige kind-items. De padding is de buitenmarge van de box. Als de box homogeen is, dan wordt dezelfde hoeveelheid ruimte toegekend aan elk kind-item. </para>
      </sect3>

      <sect3 id="fixed-nodes">
        <title
>Vaste nodes</title>

        <para
>Vast is een container waarvan de kinderen vastgelegd zijn op preciese coördinaten. De grootte van de container is de kleinste rechthoek die alle kinderen bevat. Vast heeft geen verdere attributen en dus gebruikt u alleen: <programlisting>
&lt;fixed&gt;
</programlisting
> Daarna stopt u andere items met juiste gepositioneerde nodes in het. </para>
      </sect3>

    </sect2>

    <sect2 id="position-nodes">
      <title
>Positie nodes</title>

      <para
>Elk item kan zijn positie en grootte specificeren via de <literal
>pos</literal
>-node. Bijvoorbeeld: <programlisting
>&lt;pos x=&quot;0&quot; y=&quot;4&quot; width=&quot;100%&quot; height=&quot;100%&quot;/&gt;
</programlisting>
      </para>

      <para
>Als de grootte niet is gespecificeerd, dan zal het de <quote
>natuurlijke</quote
> grootte krijgen, de hintgrootte genoemd. Merk op dat niet alle items een bruikbare hintgrootte hebben. </para>

      <para
>Beide positie en grootte kunnen gegeven zijn in procenten en zullen in dit geval berekend worden relatief tot de grootte van de omsloten container. Voor topniveau items is het het percentage van het gehele scherm. Door een circumflex (<literal
>^</literal
>) achter te voegen aan de specificatie van de grootte is het mogelijk om het te wijzigen tot relatief aan de grootte van het omsloten item van het omsloten item enzovoort. </para>

      <para
>Als het item een box bevat, kunnen <literal
>width</literal
> en <literal
>height</literal
> worden gespecificeerd als <literal
>box</literal
> wat betekent dat zij verondersteld worden de breedte en hoogte van de box te zijn, dat zijn de items in de box plus de padding. </para>

      <para
>Een van <literal
>width</literal
> en <literal
>height</literal
> kan worden gespecificeerd als <literal
>scale</literal
> wat betekent dat het geschaald moet worden volgens de andere schaalafmetingen relatief tot zijn hintgrootte. Gebruik dit om automatisch de aspect-verhouding te behouden van geschaalde afbeeldingen. </para>

      <para
>Als het attribuut <literal
>expand</literal
> is gespecificeerd en <literal
>true</literal
> is, dan zal dit item in de omgevende box zo veel als mogelijk worden uitgebreid (dat wil zeggen dat het alle beschikbare ruimte krijgt). </para>

      <para
>Als <literal
>width</literal
> of <literal
>height</literal
> een gewoon getal is, dan representeert een negatieve waarde een offset t.o.v. de omgevende containergrootte. Merk op dat het mogelijk is om een positieve offset te specificeren door twee mintekens in te voeren. </para>

      <para
>In beide gevallen is het mogelijk de uiteindelijke grootte te beperken met de <literal
>min-width</literal
>, <literal
>min-height</literal
>, <literal
>max-width</literal
> en <literal
>max-height</literal
> attributen die kan worden gespecificeerd op dezelfde manier als <literal
>width</literal
> en <literal
>height</literal
>. </para>

      <para
>Als <literal
>x</literal
> of <literal
>y</literal
> een gewoon getal is, dan representeren negatieve waarden een offset vanaf rechter- resp. onderrand, anders dan de standaard die de linker- resp. bovenrand. </para>

      <para
>Het is ook mogelijk om te specificeren naar welk punt in het item de positie verwijst. Dit wordt het anker genoemd en het kan of <literal
>c</literal
> voor centrum zijn of een van <literal
>n</literal
>, <literal
>ne</literal
>, <literal
>e</literal
>, <literal
>se</literal
>, <literal
>s</literal
>, <literal
>sw</literal
>, <literal
>w</literal
> en <literal
>nw</literal
> wat staat voor de verschillende randen/hoeken corresponderend met richtingen op een topografische kaart. De standaard is <literal
>nw</literal
>, wat de linker bovenhoek is. Bijvoorbeeld: <programlisting
>&lt;pos x=&quot;10%&quot; y=&quot;50%&quot; anchor=&quot;w&quot; width=&quot;80%&quot; height=&quot;95&quot;/&gt;
</programlisting>
      </para>

    </sect2>

    <sect2 id="show-nodes">
      <title
>Nodes tonen</title>

      <!-- not really implemented
      <para>
        Some items may only display in certain modes, like when doing a
        remote display.  Multiple values can be specified and must be
        separated with commas.  The following values are possible:
      </para>

      <para>
        <filename
>console</filename
> - In console mode.
      </para>
      <para>
        <filename
>console-fixed</filename
> - In console non-flexi mode.
      </para>
      <para>
        <filename
>console-flexi</filename
> - In console &amp; flexi mode.
      </para>
      <para>
        <filename
>flexi</filename
> - In flexi mode.
      </para>
      <para>
        <filename
>remote</filename
> - In remote mode.
      </para>
      <para>
        <filename
>remote-flexi</filename
> - In remote &amp; flexi mode.
      </para>

      <para>
        For example:
<programlisting
>
&lt;show modes=&quot;flexi,remote&quot;/&gt;
</programlisting>
      </para>
      -->

      <para
>U kunt het attribuut <literal
>type</literal
> specificeren om aan te geven dat zekere items alleen getoond moeten worden als het type is ingesteld. Met een uitroepteken (<literal
>!</literal
>) voor het type wordt de conditie omgedraaid. Geldige waarden zijn de volgende: </para>
        <segmentedlist>
          <?dbhtml list-presentation="table"?>
          <segtitle
>Type</segtitle
><segtitle
>Tonen als ...</segtitle>

          <seglistitem>
            <seg
><literal
>chooser</literal
></seg>
            <seg
>overschakelen naar aanmelden op afstand is toegestaan.</seg>
          </seglistitem>

          <!--
          <seglistitem>
            <seg
><literal
>custom_cmd[0-9]</literal
></seg>
            <seg
><literal
>n-th</literal
> CustomCommand is specified in
              the &kdm; configuration.</seg>
          </seglistitem>
          -->

          <seglistitem>
            <seg
><literal
>halt</literal
> en <literal
>reboot</literal
></seg>
            <seg
>systeem afsluiten is toegestaan.</seg>
          </seglistitem>

          <!--
          <seglistitem>
            <seg
><literal
>suspend</literal
></seg>
            <seg
>suspending the system is permitted.</seg>
          </seglistitem>
          -->

          <seglistitem>
            <seg
><literal
>system</literal
></seg>
            <seg
>geen voorwaarde (altijd ingesteld in &kdm;).</seg>
          </seglistitem>

          <!--
          <seglistitem>
            <seg
><literal
>timed</literal
></seg>
            <seg
>a timed login is being counted down.</seg>
          </seglistitem>
          -->

          <seglistitem>
            <seg
><literal
>plugin-</literal
><replaceable
>itemnaam</replaceable
></seg>
            <seg
>de <quote
>conversation</quote
>-plugin levert een overeenkomstig invoerveld.</seg>
          </seglistitem>

        </segmentedlist>


      <para
>Bijvoorbeeld: <programlisting
>&lt;show type=&quot;chooser&quot;/&gt;
</programlisting>
      </para>

      <para
>Alternatief kunt u een <literal
>min-screen-width</literal
> specificeren of <literal
>min-screen-height</literal
> waarde om aan te geven dat bepaalde items alleen getoond moeten worden als de schermresolutie minstens de gespecificeerde grootte heeft. Bijvoorbeeld: <programlisting
>&lt;show min-screen-height=&quot;768&quot;/&gt;
</programlisting>
      </para>

    </sect2>

    <sect2 id="nor-act-pre-nodes">
      <title
>Normale/actieve/oplichtend nodes</title>

      <para
>Het uiterlijk van de meeste item-typen kan geparameteriseerd worden met de volgende tags: </para>

      <variablelist>
        <varlistentry>
          <term
><literal
>normaal</literal
></term>
          <listitem>
            <para
>Normale status.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term
><literal
>oplichtend</literal
></term>
          <listitem>
            <para
>Wanneer de muis zich boven het item bevindt.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term
><literal
>actief</literal
></term>
          <listitem>
            <para
>Wanneer de muisknop wordt ingedrukt op het item.</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <variablelist>

        <para
>De exacte set van beschikbare attributen hangt af van het type item: </para>

        <varlistentry>
          <term
><literal
>rect</literal
></term>
          <listitem>
            <para>
<programlisting
>&lt;normal color=&quot;#000000&quot; alpha=&quot;0.0&quot;/&gt;
</programlisting>
Elk van de attributen kan weggelaten worden, in welk geval de standaard wordt gebruikt (het voorbeeld representeert de standaarden). <literal
>alpha</literal
> is een drijvende komma-getal tussen nul (transparant) en één (dekkend). <literal
>color</literal
> is een nummerteken gevolgd door een zes-cijferig hex-getal; het formaat is <quote
><literal
>#</literal
><replaceable
>rrggbb</replaceable
></quote
>. Alternatief, <literal
>color</literal
> kan gespecificeerd worden als een acht-cijferig hex-getal, in welk geval de eerste twee cijfers de alfa waarde is. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
><literal
>label</literal
></term>
          <listitem>
            <para>
<programlisting
>&lt;normal color=&quot;#ffffff&quot; alpha=&quot;1.0&quot; font=&quot;Sans 14&quot;/&gt;
</programlisting>
<literal
>alpha</literal
> en <literal
>color</literal
> zijn gespecificeerd zoals in <quote
>rect</quote
> items. </para>
            <para
><literal
>font</literal
> volgt het formaat <quote
><replaceable
>familie-lijst</replaceable
>&nbsp;<replaceable
>stijl-opties</replaceable
>&nbsp;<replaceable
>grootte</replaceable
></quote
>. Elk deel is optioneel. </para>
            <para
><replaceable
>familie-lijst</replaceable
> is een komma-gescheiden lijst met letterype-families zoals <quote
>helvetica</quote
>, <quote
>monospace</quote
>, etc. </para>
            <para
><replaceable
>stijl-opties</replaceable
> is een spatie-gescheiden lijst met sleutelwoorden van de categorieën stijl, gewicht en strekken; van elke categorie maximaal een. De stijl kan <literal
>normal</literal
>, <literal
>italic</literal
> of <literal
>oblique</literal
> zijn. Gewicht kan <literal
>ultra-light</literal
>, <literal
>light</literal
>, <literal
>medium</literal
>, <literal
>semi-bold</literal
>, <literal
>bold</literal
>, <literal
>ultra-bold</literal
> of <literal
>heavy</literal
> zijn. Toegestane strekking bestaat uit <literal
>ultra-condensed</literal
>, <literal
>extra-condensed</literal
>, <literal
>condensed</literal
>, <literal
>semi-condensed</literal
>, <literal
>normal</literal
>, <literal
>semi-expanded</literal
>, <literal
>expanded</literal
>, <literal
>extra-expanded</literal
> en <literal
>ultra-expanded</literal
>. </para>
            <para
><replaceable
>grootte</replaceable
> is of een drijvende komma-getal die de grootte in punten (1/72 inch) representeert of een geheel getal gevolgd door <literal
>px</literal
> die de grootte in pixels representeert. Grootte in punten wordt geprefereerd, omdat zij onafhankelijk zijn van de schermresolutie. </para>
            <para
>Als elk attribuut is weggelaten, dan worden de waarden gegeven in de <link linkend="style-nodes"
>stijl-node</link
> gebruikt. Als dit geen venster-tekstkleur specificatie bevat, dan wordt wit gebruikt. Het standaard lettertype is die geconfigureerd in &kdmrc;. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
><literal
>pixmap</literal
></term>
          <term
><literal
>svg</literal
></term>
          <listitem>
            <para>
<programlisting
>&lt;normal file=&quot;picture.png&quot; tint=&quot;#dddddd&quot; alpha=&quot;1.0&quot;/&gt;
</programlisting>
            </para>

            <para
><literal
>file</literal
> specificeert het bestand dat de afbeelding bevat. Relatieve padnamen zijn relatief ten opzicht van de map van het thema. </para>

            <para
><literal
>wallpaper</literal
> kan worden gebruikt in plaats van <literal
>file</literal
> om &kdm; te laten zoeken voor afbeeldingen in de gebruikelijke locaties voor &kde;-achtergronden. Pakketten voor plasma-achtergronden worden ondersteund. </para>

            <para
><literal
>element</literal
> specificeert het element id van een SVG-bestand. Indien leeg, dan wordt de gehele SVG-afbeelding weergegeven. </para>

            <para
>Voor <literal
>pixmap</literal
>-nodes is het mogelijk om meervoudige afbeeldingen te leveren, zodat de beste kwaliteit afbeelding voor een gegeven resolutie kan worden gebruikt. Bestandsnamen met een tag voor de grootte hebben het formaat <replaceable
>basisnaam</replaceable
><literal
>-</literal
><replaceable
>breedte</replaceable
><literal
>x</literal
><replaceable
>hoogte</replaceable
><literal
>.</literal
><replaceable
>extensie</replaceable
>. Als het bestand zonder tag voor de grootte bestaat en het is geen pakket voor een plasma-achtergrond, dan zal &kdm; alleen een perfecte overeenkomst voor een gegeven grootte accepteren en anders terugvallen op het originele bestand. Anders zal het proberen een afbeelding te vinden waarvan de afmetingen het dichts bij de vereiste grootte komen als er geen perfecte overeenkomst is gevonden. </para>

            <!--
            <para>
              Note that an alternative image file can be specified using the
              <literal
>altfile</literal
><optional
><replaceable
>n</replaceable
></optional>
              attribute.  &kdm; will use the last valid image filename
              specified.  For example:
<programlisting
>
&lt;normal file=&quot;picture.png&quot; altfile1=&quot;distribution-blah-image.png&quot; altfile2=&quot;distribution-foo-image.png&quot;/&gt;
</programlisting>
              If <filename
>distribution-foo-image.png</filename
> is a valid
              image filename it will be used.
              Otherwise distribution-blah-image.png will be used if valid.
              This feature is supported since &kde; .
            </para>
            -->

            <para
><literal
>scalemode</literal
> specificeert hoe de grootte van afbeeldingen die niet overeenkomen met de grootte van het element. <literal
>free</literal
> (de standaard) betekent dat de afbeelding geschaald wordt tot de juiste grootte, mogelijk met vervorming van zijn beeldverhouding. De andere twee modi handhaven de beeldverhouding van de afbeelding: <literal
>fit</literal
> betekent het in- of uitzoomen van de afbeelding tot de maximum grootte die in de afmeting van het element past. De afbeelding zal worden gecentreerd. Het overblijvende gebied zal niet door dit element worden ingevuld, dus zou het geplaatst moeten worden bovenop een volledig gevulde <literal
>rect</literal
>. <literal
>crop</literal
> betekent dat de afbeelding wordt in-/uitgezoomd tot de minimale grootte die volledig binnen de afmetingen van het element past. De afbeelding zal symmetrisch worden afgesneden. </para>

            <para
><literal
>tint</literal
> en <literal
>alpha</literal
> vormen een kleurspecificatie zoals in <literal
>rect</literal
>-items. Elk pixel van de afbeelding wordt volgend de component vermenigvuldigd met deze kleur. </para>
          </listitem>
        </varlistentry>

      </variablelist>

    </sect2>

    <sect2 id="style-nodes">
      <title
>Widget-stijl-nodes</title>

      <para
>Deze tag maakt het mogelijk om het uiterlijk van labels en Qt-widgets ingebed in het thema te wijzigen, bijv., regelbewerking, knoppen of de gebruikerslijst. De stijlinstellingen worden geërft door kind-items, maar kunnen individueel overschreven worden. De standaarden komen van &kdmrc;. </para>

      <para
>Het attribuut <literal
>font</literal
> definieert het lettertype voor alle widgets. Voor widgets met een invoerfunctie kan het overschreven worden door het attribuut <literal
>edit-font</literal
>. Lettertypen worden gespecificeerd op dezelfde manier als in <link linkend="nor-act-pre-nodes"
>normale/actieve/oplichtende nodes</link
>. </para>

      <para
>Gewoonlijk probeert de engine voor het thema elk frame van Qt-widgets te verwijderen, zodat zij naadloos versmelten in het thema. In het geval waar dat niet gewenst is, kan het attribuut <literal
>frame</literal
> ingesteld worden op <literal
>true</literal
>. </para>

      <para
>Het attribuut <literal
>guistyle</literal
> kan gebruikt worden om de stijl van de Qt-GUI voor ingebedde widgets te overschrijven. De standaard is gegeven in <option
>GUIStyle</option
> in &kdmrc; </para>

      <para
>Het is mogelijk om bijna het gehele palet voor de widgets zoals gedocumenteerd in <ulink type="http" url="http://doc.trolltech.com/4.3/qpalette.html"
>Website van Trolltech</ulink
> te specificeren. Attribuutnamen bestaan uit een scope, een kleurrol en een achtervoegsel. Mogelijke scopes zijn - in volgorde van toenemende voorkeur - <literal
>all-</literal
> voor alle kleurgroepen, geen scope voor de actieve en inactieve kleurgroepen en <literal
>active-</literal
>, <literal
>inactive-</literal
> en <literal
>disabled-</literal
> voor de respectievelijke kleurgroepen. Ondersteunde kleurrollen zijn <literal
>window</literal
>, <literal
>window-text</literal
>, <literal
>base</literal
>, <literal
>alternate-base</literal
>, <literal
>text</literal
>, <literal
>bright-text</literal
>, <literal
>highlight</literal
>, <literal
>highlighted-text</literal
>, <literal
>button</literal
> en <literal
>button-text</literal
>. Het achtervoegsel kan <literal
>-color</literal
> of <literal
>-alpha</literal
> zijn met de respectievelijke betekenis zoals in <link linkend="nor-act-pre-nodes"
>normale/actieve/oplichtende nodes</link
>. </para>

      <para
>Als alternatief om het palet inline te specificeren, kan het attribuut <literal
>colorscheme</literal
> worden gebruikt om een compleet &kde;-kleurschema te laden. De standaard is gegeven door <option
>ColorScheme</option
> in &kdmrc;. Individuele <literal
>color</literal
>-specificaties zullen de kleuren van het schema overschrijven. </para>

      <para
>Voorbeeld: <programlisting
>&lt;style edit-font=&quot;Comic 16&quot; text-color=&quot;#dddddd&quot; frame=&quot;true&quot;/&gt;
</programlisting>
      </para>
    </sect2>

    <sect2 id="color-nodes">
      <title
>Kleur-nodes voor gezichtsbladerprogramma</title>

      <para
>Kleur-nodes staan toe om de achtergrondkleur van de items in het gezichtsbladerprogramma te overschrijven. <literal
>labelcolor</literal
> en <literal
>altlabelcolor</literal
> zijn in essentie equivalent met <literal
>all-base-color</literal
> resp. <literal
>all-alternate-base-color</literal
> in <link linkend="style-nodes"
>stijl-nodes</link
>. Als alleen <literal
>labelcolor</literal
> is gespecificeerd, zijn alternerende achtergronden van items uitgeschakeld. </para>

      <para>
<programlisting
>&lt;color labelcolor=&quot;#80ffffff&quot; altlabelcolor=&quot;#80f0f0f0&quot;/&gt;
</programlisting>
      </para>
    </sect2>

    <sect2 id="text-nodes">
      <title
>Text-nodes</title>

      <para
>Tekst-tags worden door labels gebruikt. Zij kunnen worden gebruikt aan de taalregio aangepaste tekst te tonen als volgt (als het attribuut <literal
>xml:lang</literal
> is weggelaten, dan wordt de POSIX-locale aangenomen): <programlisting
>&lt;text xml:lang=&quot;nl&quot;&gt;Optie&lt;/text&gt;
</programlisting>
      </para>

      <!--
      <para>
        You can include pango markup in the text nodes for labels, however
        you must encode it.  So for example to have the label of
        &quot;foo&lt;sup&gt;bar&lt;/sup&gt;&quot;, you must type:
<programlisting
>
&lt;text&gt;&quot;foo&lt;sup&gt;bar&lt;/sup&gt;&quot;&lt;/text&gt;
</programlisting>
      </para>
      -->

      <para
>Text-nodes kunnen de volgende speciale tekenreeksen bevatten die als volgt vertaalt zullen worden: </para>

      <segmentedlist>
        <?dbhtml list-presentation="table"?>
        <segtitle
>Sequentie</segtitle
><segtitle
>Expansie</segtitle>

        <seglistitem>
          <seg
>%%</seg>
          <seg
>Het letterlijk %-teken</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%c</seg>
          <seg
>Huidige datum en tijd</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%d</seg>
          <seg
>Schermnaam (<envar
>DISPLAY</envar
> omgevingsvariabele)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%h</seg>
          <seg
>Hostnaam (<function
>gethostname</function
> uitvoer)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%m</seg>
          <seg
>Machinenaam (<structfield
>machine</structfield
>-onderdeel van <function
>uname</function
> uitvoer)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%n</seg>
          <seg
>Nodenaam (<structfield
>nodename</structfield
>-onderdeel van <function
>uname</function
> uitvoer)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%o</seg>
          <seg
>Domeinnaam (<function
>getdomainname</function
>-uitvoer)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%r</seg>
          <seg
>Uitgavenaam (<structfield
>release</structfield
>-onderdeel van <function
>uname</function
> uitvoer)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%s</seg>
          <seg
>Systeemnaam (<structfield
>sysname</structfield
>-onderdeel van <function
>uname</function
> uitvoer)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%t</seg>
          <seg
>Resterend aantal seconden totdat getimede aanmelding wordt gedaan, plus de bijbehorende i18n-meervoudsvorm van <quote
>seconde</quote
></seg>
        </seglistitem>

        <seglistitem>
          <seg
>%u</seg>
          <seg
>Gebruikersnaam voor aanmelden</seg>
        </seglistitem>

        <!-- Need to switch to richtext painting for this purpose.
        <seglistitem>
          <seg
>\n</seg>
          <seg
>Newline</seg>
        </seglistitem>
        -->

        <seglistitem>
          <seg
>_</seg>
          <seg
>Zorgt er voor dat het volgende teken een versneller is</seg>
        </seglistitem>

      </segmentedlist>

      <para
><literal
>%t</literal
> en <literal
>%u</literal
> zijn bedoeld om alleen interne te worden gebruikt om het <literal
>timed-label</literal
>-bericht te tonen, die elke seconde wordt bijgewerkt. </para>
    </sect2>

    <sect2 id="stock-nodes">
      <title
>Stock-nodes</title>

      <para
>Bepaalde gezamenlijk aan de taalregio aangepaste labels kunnen worden gespecificeerd via de stock-tags. De <literal
>text</literal
>-tag wordt genegeerd als de <literal
>stock</literal
>-tag wordt gebruikt. U zou echt de stock-labels moeten gebruiken in plaats van gewoon alle vertalingen in de thema's te stoppen. Dit levert snellere laadtijden en waarschijnlijk betere vertalingen. De volgende waarden zijn geldig: </para>

      <segmentedlist>
        <?dbhtml list-presentation="table"?>
        <segtitle
>Type</segtitle
><segtitle
>Expansie</segtitle>

        <!--
        <seglistitem>
          <seg
>ok</seg>
          <seg
><quote
>_OK</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>cancel</seg>
          <seg
>_Cancel</seg>
        </seglistitem>
        <seglistitem>
          <seg
>options</seg>
          <seg
>_Options</seg>
        </seglistitem>
        <seglistitem>
          <seg
>custom_cmd[0-9]</seg>
          <seg
>Obtained from the config file.</seg>
        </seglistitem>
        -->
        <seglistitem>
          <seg
>caps-lock-waarschuwing</seg>
          <seg
><quote
>Caps Lock is geactiveerd</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>chooser</seg>
          <seg
><quote
>XDMCP-kieze_r</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>stop</seg>
          <seg
><quote
>_Stoppen</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>verbinding verbreken</seg>
          <seg
><quote
>Verbinding v_erbreken</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>stoppen</seg>
          <seg
><quote
>_Uitschakelen</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>taal</seg>
          <seg
><quote
>Taa_l</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>aanmelden</seg>
          <seg
><quote
>_Aanmelden</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>sessie</seg>
          <seg
><quote
>Sessie_type</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>herstarten</seg>
          <seg
><quote
>Her_starten</quote
></seg>
        </seglistitem>
        <!--
        <seglistitem>
          <seg
>suspend</seg>
          <seg
><quote
>Sus_pend</quote
></seg>
        </seglistitem>
        -->
        <seglistitem>
          <seg
>system</seg>
          <seg
><quote
>_Menu</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>label met tijdsverloop</seg>
          <seg
><quote
>Gebruiker %u meldt zich aan bij %t</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>domain-label</seg>
          <seg
><quote
>_Domein:</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>username-label</seg>
          <seg
><quote
>Gebr_uikersnaam:</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>password-label</seg>
          <seg
><quote
>Wa_chtwoord:</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>welcome-label</seg>
          <seg
><quote
>Welkom bij %h</quote
></seg>
        </seglistitem>

      </segmentedlist>

      <para
>Bijvoorbeeld: <programlisting
>&lt;stock type=&quot;welcome-label&quot;/&gt;
</programlisting>
      </para>
    </sect2>

    <sect2 id="buddy-nodes">
      <title
>Buddy-nodes</title>

      <para
>Items die niet direct een actie veroorzaken kunnen aan een buddy worden toegekend. De buddy krijgt invoerfocus wanneer het item wordt geactiveerd (door te klikken of te drukken op een versneller van een <literal
>label</literal
>). </para>

      <para
>De buddy wordt gerefereerd door een id met het attribuut <literal
>idref</literal
>. Natuurlijk, moet het een id gegeven worden. Voorbeeld: <programlisting
>&lt;item type=&quot;label&quot;&gt;
  &lt;stock type=&quot;username-label&quot;/&gt;
  &lt;buddy idref=&quot;user-entry&quot;/&gt;
  [...]
&lt;/item&gt;
[...]
&lt;item type=&quot;entry&quot; id=&quot;user-entry&quot;&gt;
  [...]
&lt;/item&gt;
</programlisting>
      </para>
    </sect2>

  </sect1>

</chapter>
