<chapter id="kdm-themes">
  <title
>Tworzenie motywów dla menadżera logowania &kdm;</title>

  <para
>Rozdział opisuje tworzenie motywów dla menadżera logowania. Aby zobaczyć przykładowe motywy menedżera logowania wraz ze zrzutami ekranów, należy oglądnąć zainstalowane w systemie motywy i motywy zamieszczone na<ulink type="http" url="http://www.kde-look.org/index.php?xcontentmode=40"
> stronie motywów</ulink
>. </para>

  <sect1 id="theme-overview">
    <title
>Informacje podstawowe o motywach</title>

    <para
>Motywy &kdm; mogą być tworzone poprzez utworzenie pliku XML zgodnego ze specyfikacją zawartą w <filename
>$<envar
>KDEDIR</envar
>/share/apps/doc/kdm/greeter.dtd</filename
>. Pliki motywu przechowywane są w katalogu <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/apps/kdm/themes/<replaceable
>nazwa_motywu</replaceable
></filename
>. Katalog motywu powinien zawierać plik o nazwie <filename
>KdmGreeterTheme.desktop</filename
> który ma podobny format jak inne pliki <filename class="extension"
>.desktop</filename
> i wygląda tak: <programlisting
>[KdmGreeterTheme]
Greeter=circles.xml
Name=Okręgi
Description=Motyw z niebieskimi okręgami
Author=Bond, James Bond
Copyright=(c) 2002 Bond, James Bond
Screenshot=screenshot.png
</programlisting>
    </para>

    <para
>Dane parametrów <literal
>Name</literal
>, <literal
>Description</literal
>, <literal
>Author</literal
> i <literal
>Copyright</literal
> mogą zostać przetłumaczone jak w innych plikach <filename class="extension"
>.desktop</filename
> . Wszystkie wspomniane pliki powinny znaleźć się w katalogu motywu. Parametr <literal
>Screenshot</literal
> wskazuje na plik, który powinien być zrzutem wyglądu działającego motywu o rozmiarze 200x150 (może go nie być, ale jest ładnym dodatkiem dla użytkownika). Parametr <literal
>Greeter</literal
> wskazuje na plik XML który zawiera opis motywu. </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
>W pełni przetestowany motyw należy umieścić w pliku tar zawierającym katalog, który może być zainstalowany do katalogu <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/apps/kdm/themes</filename
>. Jest to standardowa metoda rozprowadzania motywów &kdm;. </para>
  </sect1>

  <sect1 id="theme-format">
    <title
>Szczegółowy opis struktury pliku XML motywu</title>

    <sect2 id="greeter-tag">
      <title
>Znacznik najwyższego rzędu</title>

      <para
>Pliki XML motywów &kdm; zaczynają się znacznikiem  &lt;greeter&gt;. Znacznik najwyższego rzędu jest <link linkend="item-nodes"
>znacznikiem elementu</link
> typu<literal
>rect</literal
> z wymuszonym <link linkend="fixed-nodes"
>stałym układem</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
>Pomiędzy znacznikami 'greeter' mogą znajdować się elementy opisane w dalszej części tego dokumentu.  Niektóre z tych elementów są kontenerami (znacznikamiukładu, znacznikami elementów itp.), które mogą zawierać inne elementy. </para>
    </sect2>

    <sect2 id="item-nodes">
      <title
>Znaczniki elementów</title>

      <para
>Motyw &kdm; jest określany za pomocą hierarchii znaczników elementów i znaczników układu. Atrybut <literal
>type</literal
> w znacznikach elementów może przyjmować następujące wartości: </para>

      <variablelist>

        <varlistentry>
          <term
>button</term>
          <listitem>
            <para
>Pole przycisku. Element jest przyciskiem Qt. </para>
            <para
>Możliwe jest też, aby inne elementy działały jak przycisk poprzez przypisanie atrybutowi <literal
>button</literal
> wartości <literal
>true</literal
>. Jednakże, lepiej jest używać standardowych przycisków Qt w motywach &kdm; gdyż są one dostępne dla niepełnosprawnych użytkowników. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>entry</term>
          <listitem>
            <para
>Element służący wprowadzaniu danych taki jak np. linia edycyjna lub lista wyboru. Uwaga: jest to tylko znacznik miejsca dla innych elementów Qt.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>label</term>
          <listitem>
            <para
>Etykieta tekstowa. Musi zawierać znaczniki <link linkend="text-nodes"
><literal
>text</literal
></link
> lub <link linkend="stock-nodes"
><literal
>stock</literal
></link
> zawierające tekst do wyświetlenia. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>list</term>
          <listitem>
            <para
>Element zawierający przeglądarkę twarzy.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>pixmap</term>
          <listitem>
            <para
>Obrazek w formacie obsługiwanych przez Qt, &eg; PNG, JPEG, Tiff, itp.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>rect</term>
          <listitem>
            <para
>Prostokąt.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>svg</term>
          <listitem>
            <para
>Grafika wektorowa w formacie SVG.</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para
>Na przykład: <programlisting>
&lt;item type=&quot;label&quot;&gt;
</programlisting
> Element funkcjonujący jak przycisk: <programlisting
>&lt;item type=&quot;rect&quot; id=&quot;disconnect_button&quot; button=&quot;true&quot;&gt;.
</programlisting>
      </para>

      <para
>W typowej sytuacji, ekran logowania &kdm; znika po uwierzytelnieniu. Może to spowodować migotanie pomiędzy ekranem logowania i ekranem sesji. Atrybut <literal
>background</literal
> pozwala określić jakie elementy motywu stanowią jego tło. Gdy zostanie użyty, spowoduje że &kdm; usunie wszystkie elementy nie będące tłem z ekranu, pozostawiając elementy z atrybutem <literal
>background</literal
> widoczne. Może to być użyte to uzyskania płynnego przejścia między ekranem logowania i ekranem sesji: <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
> 
Aby użyć innego tła dla efektu przejścia logowania a innego dla pytania o login, motyw powinien definiować dwa znaczniki elementu (które mogą zawierać obrazek typu mapy bitowej lub svg). Element, który ma być tłem ekranu powitalnego nie powinien mieć ustawionego atrybutu <literal
>background</literal
>, natomiast element, który ma być tłem dla efektu przejścia powinien mieć atrybut <literal
>background</literal
>. Przykładowo: <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
>W systemach wyposażonych w wiele monitorów, motywy mogą definiować wygląd ekranu na innych monitorach - jednakże w typowym rozwiązaniu na pozostałych monitorach pojawiają się jedynie elementy tła. Aby określić na którym ekranie (ekranach) ma pojawiać się elementy, należy skorzystać z atrybutu <literal
>screen</literal
>. Jako wartość atrybutu należy podać jedną z następujących wartości<literal
>greeter</literal
>, <literal
>other</literal
> lub <literal
>all</literal
>, oznaczającą odpowiednio umiejscowienie elementu na: ekranie logowania, na pozostałych ekranach lub na wszystkich ekranach. </para>

      <variablelist>
        <para
>Każdemu elementowi można nadać nazwę za pomocą atrybutu:<literal
>id</literal
>. Niektóre nazwy są rozpoznawane przez &kdm; i nadają elementom specjalne funkcje: </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
>Elementy typu <literal
>button</literal
> oraz elementy zawierające atrybut <literal
>button=&quot;true&quot;</literal
>.</term>

          <listitem>
            <para
>Przyciski zwykle służą do wywołania określonego działania. Dodatkowo &kdm; nie pokazuje przycisków, dla których działanie jest z jakichś powodów niedostępne. </para>

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

              <seglistitem>
                <seg
>chooser_button</seg>
                <seg
>Uruchamia okno wyboru protokołu XDMCP.</seg>
              </seglistitem>

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

              <seglistitem>
                <seg
>disconnect_button</seg>
                <seg
>Odłącza zdalną sesję.</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
>session_button</seg>
                <seg
>Otwiera menu wyboru rodzaju sesji.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>system_button</seg>
                <seg
>Otwiera systemowe menu zawierające różne opcje i działania, w zależności od konfiguracji.</seg>
              </seglistitem>
            </segmentedlist>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>Elementy typu <literal
>label</literal
></term>

          <listitem>
            <para
>Program &kdm; pokazuje lub ukrywa etykiety oraz określa ich treść w zależności od stanu okna dialogowego logowania. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Funkcja</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-error</seg>
                <seg
>Wyświetla wiadomość <guilabel
>Logowanie się nie powiodło.</guilabel
>.</seg>
              </seglistitem>

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

        <varlistentry>
          <term
>Elementy do osadzania elementów interfejsu</term>

          <listitem>
            <para
>Program &kdm; osadza niektóre elementy interfejsu Qt w tych elementach. </para>

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

              <seglistitem>
                <seg
>user-entry</seg>
                <seg
>Pole do wprowadzania nazwy użytkownika.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>pw-entry</seg>
                <seg
>Pole do wprowadzania hasła.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>domain-entry</seg>
                <seg
>Niektóre wtyczki <quote
>dialogu uwierzytelniania</quote
> wykorzystują to pola do wprowadzenia nazwy domeny. Jeżeli ten znacznik jest określony, to zależne od niego elementy powinny zawierać atrybuty:<link linkend="show-nodes"
>show nodes</link
> z określonym typem <literal
>plugin-domain-entry</literal
>.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>talker</seg>
                <seg
>Ten element powinien być typu <literal
>rect</literal
>. Określa on aktywną ( <quote
>hot</quote
>) powierzchnię ekranu logowania: zawiera etykietę <literal
>label</literal
> oraz elementy wprowadzania danych <literal
>entry</literal
> dotyczące procesu uwierzytelniania. Jeżeli wybrana wtyczka dialogu (<quote
>conversation</quote
>) nie dopasować podanych elementów do swoich potrzeb, to stara się osadzić złożony element interfejsu z własnych układem w tych elementach, co anuluje działanie zdefiniowanego w motywie elementu <quote
>talker</quote
>. Oznacza to, że motywy &kdm; nie muszą definiować własnego projektu elementu <quote
>talker</quote
>, jako że wszystkie wtyczki uwierzytelniania &kdm; mogą wykorzystać ten element. </seg>
              </seglistitem>

              <seglistitem>
                <seg
>userlist</seg>
                <seg
>Ten element musi być typu <literal
>list</literal
>. Jeżeli w ustawieniach włączone jest wyświetlanie listy użytkowników, program &kdm; osadzi w nim element interfejsu - listę użytkowników. W przeciwnym wypadku ten element jest niewidoczny.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>xconsole</seg>
                <seg
>Ten element powinien być typu <literal
>rect</literal
>. Jeżeli funkcjonalność wbudowanej konsoli<command
>xconsole</command
> jest skompilowana i włączona, &kdm; osadzi tutaj element interfejsu - konsolę. W przeciwnym wypadku ten element jest niewidoczny.</seg>
              </seglistitem>

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

        <varlistentry>
          <term
>Inne elementy</term>

          <listitem>
            <para
>Program &kdm; będzie pokazywał/ukrywał te elementy w zależności od konfiguracji systemu i bieżącego stanu ekranu logowania. &kdm; nie wymusza wymagań odnośnie rodzaju na tych elementach, ale zwykle są one dopasowane to określonego typu. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Widoczny tylko jeżeli ...</segtitle>

              <seglistitem>
                <seg
>timed-label</seg>
                <seg
>... opóźnione logowanie jest w trakcie.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>caps-lock-warning</seg>
                <seg
>... aktywny jest klawisz Caps Lock.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>xauth-warning</seg>
                <seg
>... serwer &X-Server; nie wymaga autoryzacji do połączenia.</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
>... lista użytkowników jest włączona. Poprzez zagnieżdżenie w tym elemencie elementu <literal
>userlist</literal
>, możliwe jest utworzenie czegoś w rodzaju ramki otaczającej listę użytkowników i pokazującej się tylko wtedy gdy lista użytkowników jest widoczna. </seg>
              </seglistitem>

              <seglistitem>
                <seg
>xconsole-rect</seg>
                <seg
>... wbudowana konsola <command
>xconsole</command
> jest włączona. Stosowanie analogiczne jak <literal
>userlist-rect</literal
>.</seg>
              </seglistitem>

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

      </variablelist>

    </sect2>

    <sect2 id="layout-nodes">
      <title
>Kontenery układu</title>

      <para
>Znaczniki układu pojawiają się wewnątrz znaczników elementów i zawierają ponownie znaczniki elementów. Rodzaj znacznika układu określa umiejscowienie znaczników podrzędnych. Znacznik elementu może zawierać po jednym znaczniku układu z każdego rodzaju. </para>

      <sect3 id="box-nodes">
        <title
>Znaczniki prostokątów</title>

        <para
>Prostokąty automatycznie rozmieszczają podrzędne elementy w rzędzie. Są one definiowane następująco: <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
> Gdzie <replaceable
>num</replaceable
> określa liczbę pikseli  <replaceable
>bool</replaceable
> oznacza albo <literal
>true</literal
> albo <literal
>false</literal
>. Wartością <replaceable
>alignment</replaceable
> może być albo <literal
>horizontal</literal
> albo<literal
>vertical</literal
>. Jeżeli jakiś atrybut nie będzie wprowadzony, to zostaną przyjęte wartości domyślne: zero dla liczb, <literal
>false</literal
> dla wartości logicznych i <literal
>vertical</literal
> dla orientacji. </para>

        <para
>Atrybut 'spacing' określa obszar pomiędzy sąsiadującymi elementami podrzędnymi, 'padding' definiuje zewnętrzny margines prostokąta. Jeżeli prostokąt jest homogeniczny ('homogenous') to dla każdego elementu podrzędnego udostępniana jest jednakowa powierzchnia ekranu. </para>
      </sect3>

      <sect3 id="fixed-nodes">
        <title
>Znaczniki układu ustalonego</title>

        <para
>Znaczniki 'fixed' są kontenerami, w których wszystkie elementy podrzędne są umieszczone w określonych współrzędnych. Rozmiar kontenera to najmniejszy prostokąt mieszczący wszystkie elementy podrzędne. W znaczniku 'fixed' niepotrzebne są żadne dodatkowe atrybuty, więc wystarczy wpisać jedynie:<programlisting>
&lt;fixed&gt;
</programlisting
>, a następnie umieścić pozostałe elementy z określoną pozycją wewnątrz niego. </para>
      </sect3>

    </sect2>

    <sect2 id="position-nodes">
      <title
>Znaczniki pozycji</title>

      <para
>Dla każdego elementu można określać położenie i rozmiar za pomocą znacznika <literal
>pos</literal
>. Na przykład: <programlisting
>&lt;pos x=&quot;0&quot; y=&quot;4&quot; width=&quot;100%&quot; height=&quot;100%&quot;/&gt;
</programlisting>
      </para>

      <para
>Jeżeli rozmiar nie jest określony, to przyjęty zostanie <quote
>domyślny</quote
> rozmiar elementu, tzw. 'hint' rozmiaru. Uwaga ! nie wszystkie elementy posiadają użyteczną wartość 'hint'. </para>

      <para
>Zarówno pozycja jak i rozmiar elementu może być podany procentowo, co powoduje iż będzie obliczany relatywnie do rozmiaru kontenera, w którym się znajduje. Dla elementów najwyższego rzędu będzie to procent całego ekranu. Dodając znak <literal
>^</literal
> do określenia rozmiaru, możliwe jest określenie rozmiaru względem kontenera zawierającego kontener w którym jest dany element itd.  </para>

      <para
>Jeżeli element zawiera prostokąt, parametry <literal
>width</literal
> i <literal
>height</literal
> mogą być określone jako <literal
>box</literal
> co oznacza, że oznaczają szerokość i wysokość prostokąta, tzn. szerokość i wysokość elementów w prostokącie razem z marginesem. </para>

      <para
>Jeden z parametrów <literal
>width</literal
> lub <literal
>height</literal
> może posiadać atrybut  <literal
>scale</literal
> co oznacza, że ma być skalowany relatywnie do drugiego atrybutu biorąc pod uwagę domyślny 'hint' rozmiaru. Może to być wykorzystane do automatycznego zachowywania proporcji skalowanych obrazów. </para>

      <para
>Jeżeli wprowadzony jest atrybut <literal
>expand</literal
> z wartością <literal
>true</literal
>, element będzie rozszerzony w otaczającym go prostokącie do maksymalnych możliwych rozmiarów (czyli oczyma więcej miejsca, jeżeli jest to możliwe). </para>

      <para
>Jeżeli parametry <literal
>width</literal
> lub <literal
>height</literal
> są wpisane liczbowo, wartość ujemna określa offset względem rozmiaru kontenera. Uwaga, możliwe jest określenie dodatniego offsetu poprzez zapisanie dwóch znaków minus. </para>

      <para
>W każdym przypadku możliwe jest ograniczenie ostatecznych rozmiarów elementu za pomocą atrybutów: <literal
>min-width</literal
>, <literal
>min-height</literal
>, <literal
>max-width</literal
> i <literal
>max-height</literal
>, które mogą być zapisane w analogiczny sposób jak atrybuty <literal
>width</literal
> oraz <literal
>height</literal
>. </para>

      <para
>Jeżeli atrybuty <literal
>x</literal
> lub <literal
>y</literal
> są liczbami, wartość ujemna określa offset - przesunięcie - względem prawej - dolnej krawędzi, a nie lewej - górnej krawędzi. </para>

      <para
>Możliwe jest także określenie punktu wewnątrz elementu, którego dotyczą atrybuty pozycji. Jest on nazywany kotwicą (anchor) i może być albo w środku elementu, lub może być określony za pomocą wartości: <literal
>n</literal
>, <literal
>ne</literal
>, <literal
>e</literal
>, <literal
>se</literal
>, <literal
>s</literal
>, <literal
>sw</literal
>, <literal
>w</literal
> oraz <literal
>nw</literal
>, które oznaczają różne krawędzie/rogi odpowiadające współrzędnym topograficznym. Wartością domyślną jest <literal
>nw</literal
>, oznaczającą górny-lewy narożnik. Na przykład: <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
>Znaczniki wyświetlania</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
>Można zdefiniować atrybut <literal
>type</literal
> dla wskazania pewnych elementów, które powinny być wyświetlane tylko jeżeli dany rodzaj funkcji jest włączony w konfiguracji.Poprzedzenie rodzaju znakiem wykrzyknika (<literal
>!</literal
>) odwraca znaczenie warunku. Dostępne wartości są następujące: </para>
        <segmentedlist>
          <?dbhtml list-presentation="table"?>
          <segtitle
>Typ</segtitle
><segtitle
>Wyświetlaj jeśli ...</segtitle>

          <seglistitem>
            <seg
><literal
>chooser</literal
></seg>
            <seg
>dozwolone jest przełączenie na zdalny login.</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
> oraz <literal
>reboot</literal
></seg>
            <seg
>dozwolone jest zamknięcie systemu.</seg>
          </seglistitem>

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

          <seglistitem>
            <seg
><literal
>system</literal
></seg>
            <seg
>brak warunków (zawsze włączone w &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
>entry-name</replaceable
></seg>
            <seg
>wtyczka <quote
>conversation</quote
> udostępnia odpowiednie pole wprowadzania.</seg>
          </seglistitem>

        </segmentedlist>


      <para
>Na przykład: <programlisting
>&lt;show type=&quot;chooser&quot;/&gt;
</programlisting>
      </para>

      <para
>Dodatkowo można określić wartości <literal
>min-screen-width</literal
> lub <literal
>min-screen-height</literal
> aby spowodować, iż pewne elementy powinny być wyświetlane tylko wtedy gdy rozdzielczość ekranu będzie większa lub równa pożądanej wielkości. Na przykład: <programlisting
>&lt;show min-screen-height=&quot;768&quot;/&gt;
</programlisting>
      </para>

    </sect2>

    <sect2 id="nor-act-pre-nodes">
      <title
>Znaczniki stanów elementu (normalny/aktywny/podświetlony)</title>

      <para
>Wygląd większości elementów może być ustawiany za pomocą następujących znaczników: </para>

      <variablelist>
        <varlistentry>
          <term
><literal
>normal</literal
></term>
          <listitem>
            <para
>Stan normalny.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term
><literal
>prelight</literal
></term>
          <listitem>
            <para
>Jeżeli myszka znajduje się nad elementem.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term
><literal
>active</literal
></term>
          <listitem>
            <para
>Jeżeli nad elementem zostanie naciśnięty przycisk myszki.</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <variablelist>

        <para
>Dokładny zbiór dostępnych atrybutów jest uzależniony od rodzaju elementu: </para>

        <varlistentry>
          <term
><literal
>rect</literal
></term>
          <listitem>
            <para>
<programlisting
>&lt;normal color=&quot;#000000&quot; alpha=&quot;0.0&quot;/&gt;
</programlisting>
Każdy z opisywanych atrybutów może zostać pominięty, w takim wypadku użyte zostaną wartości domyślne (w przykładzie zastosowano wartości domyślne). Parametr <literal
>alpha</literal
> jest liczbą zmiennoprzecinkową o wartościach od zera (pełna przeźroczystość) do jeden (brak przeźroczystości). Wartość parametru<literal
>color</literal
> zaczyna się od znaku hash, który poprzedza 6 liczbową liczbę szesnastkową, której format jest następujący <quote
><literal
>#</literal
><replaceable
>rrggbb</replaceable
></quote
>. Możliwe jest także określenie wartości  <literal
>color</literal
> za pomocą 8 znaków szesnastkowo, w takim przypadku pierwsze dwa znaki dotyczą wartości przeźroczystości (alpha). </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
> oraz <literal
>color</literal
> są określane analogicznie jak dla elementów <quote
>rect</quote
>. </para>
            <para
>Format parametru <literal
>font</literal
> jest analogiczny jak <quote
><replaceable
>family-list</replaceable
>&nbsp;<replaceable
>style-options</replaceable
>&nbsp;<replaceable
>size</replaceable
></quote
>. Każdy atrybut jest opcjonalny. </para>
            <para
><replaceable
>family-list</replaceable
> jest rozdzieloną przecinkami listą rodzin czcionek, jak np.: <quote
>helvetica</quote
>, <quote
>monospace</quote
>, itp. </para>
            <para
>Parametr <replaceable
>style-options</replaceable
> jest rozdzielaną spacjami listą słów kluczowych z następujących kategorii: styl, waga i szerokość, z każdej kategorii po jednym słowie. Styl czcionki może być następujący: <literal
>normal</literal
>, <literal
>italic</literal
> lub <literal
>oblique</literal
>. Waga może być: <literal
>ultra-light</literal
>, <literal
>light</literal
>, <literal
>medium</literal
>, <literal
>semi-bold</literal
>, <literal
>bold</literal
>, <literal
>ultra-bold</literal
> lub<literal
>heavy</literal
>. Dostępne szerokości to: <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
> i <literal
>ultra-expanded</literal
>. </para>
            <para
>Parametr <replaceable
>size</replaceable
> jest zmiennoprzecinkową liczbą określającą rozmiar czcionki w punktach (1/72 cala) lub liczbą całkowitą z przyrostkiem <literal
>px</literal
> określającą rozmiar w pikselach. Podawanie rozmiaru w punktach jest preferowane, gdyż jest niezależne od rozdzielczości ekranu. </para>
            <para
>Jeżeli jakieś atrybuty są pominięte, użyte zostaną atrybuty znacznika <link linkend="style-nodes"
>style</link
>. Jeżeli nie będzie określonego koloru tekstu, to przyjęty zostanie kolor biały. Domyślne czcionki ustawiane są w programie &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
> określa nazwę pliku zawierającego obrazek. Względne ścieżki są określane względem katalogu motywu. </para>

            <para
><literal
>element</literal
> określa nazwę elementu z pliku SVG do wyświetlenia. Jeżeli pusty, to cały obraz SVG zostanie wyświetlony. </para>

            <para
>Dla znaczników map bitowych <literal
>pixmap</literal
>, program &kdm; próbuje najpierw otworzyć plik o nazwie: <replaceable
>nazwa_bazowa</replaceable
><literal
>-</literal
><replaceable
>szerokość</replaceable
><literal
>x</literal
><replaceable
>wysokość</replaceable
><literal
>.</literal
><replaceable
>rozszerzenie</replaceable
>, tak aby użyć pliku o rozdzielczości najlepiej pasującej do aktualnej rozdzielczości ekranu. </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
>Atrybut <literal
>scalemode</literal
> określa jak dopasowywać rozmiar obrazków, które nie pasują do rozmiaru elementu. Wartość <literal
>free</literal
> (domyślna) oznacza że obraz zostanie po prostu przeskalowany do właściwego rozmiaru, może to spowodować zaburzenie proporcji. Pozostałe dwa tryby zachowują proporcje obrazu:<literal
>fit</literal
> powoduje iż obraz zostanie powiększony do maksymalnego dozwolonego dla geometrii elementu rozmiaru. Obraz będzie wyśrodkowany. Pozostała wolna powierzchnia nie będzie wypełniona, dlatego też element powinien być umieszczony nad wypełnionym elementem <literal
>rect</literal
>. tryb <literal
>crop</literal
> oznacza powiększenie obrazu do minimalnego rozmiaru wypełniającego w całości obszar elementu. Wystające części obrazka zostaną obcięte symetrycznie. </para>

            <para
>Atrybuty <literal
>tint</literal
> oraz <literal
>alpha</literal
> określają specyfikację kolorów analogicznie jak dla elementu <literal
>rect</literal
>. Każdy piksel obrazka jest mnożony przez ten kolor w skali całego elementu. </para>
          </listitem>
        </varlistentry>

      </variablelist>

    </sect2>

    <sect2 id="style-nodes">
      <title
>Znaczniki stylów dla elementów interfejsu</title>

      <para
>Ten znacznik pozwala na zmianę wyglądu etykiet i elementów interfejsu Qt osadzonych w motywie, np. pól wprowadzania, przycisków lub list użytkowników. Ustawienia stylu są dziedziczone przez elementy podrzędne, ale mogą być nadpisane indywidualnie dla każdego elementu. Wartości domyślne pobierane są z &kdmrc;. </para>

      <para
>Atrybut <literal
>font</literal
> definiuje kolor dla wszystkich elementów interfejsu. Dla elementów mających funkcje wprowadzania danych, może być nadpisywany przez atrybut <literal
>edit-font</literal
>. Czcionki są określane analogicznie jak dla znaczników trybu <link linkend="nor-act-pre-nodes"
>normalnego/aktywnego/podświetlonego</link
>. </para>

      <para
>Standardowo, silnik motywów stara się bardzo usunąć wszelkie ramki z elementów interfejsu Qt, tak aby ładnie się komponowały w motywie. W przypadkach gdy takie zachowanie nie jest pożądane, należy ustawić wartość atrybutu <literal
>frame</literal
> na <literal
>true</literal
>. </para>

      <para
>Możliwe jest zdefiniowanie niemal całej palety elementów interfejsu zgodnie z dokumentacją na stronach firmy <ulink type="http" url="http://doc.trolltech.com/4.3/qpalette.html"
>Trolltech</ulink
>. Nazwy atrybutów składają się z zakresu, roli koloru i przyrostka. Możliwe nazwy zakresów zgodnie z poziomem ważności są następujące: <literal
>all-</literal
> dla wszystkich grup kolorów, brak zakresu dla aktywnych i nieaktywnych grup kolorów, oraz odpowiednio <literal
>active-</literal
>, <literal
>inactive-</literal
> i <literal
>disabled-</literal
> dla poszczególnych grup kolorów. Dostępne role kolorów są następujące: <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
> i <literal
>button-text</literal
>. Przyrostkiem może być <literal
>-color</literal
> albo <literal
>-alpha</literal
> o znaczeniu analogicznym jak dla znaczników <link linkend="nor-act-pre-nodes"
>trybu normalnego/aktywnego/podświetlonego</link
>. </para>

      <para
>Przykład: <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
>Znaczniki kolorów dla przeglądarki twarzy</title>

      <para
>Znaczniki kolorów pozwalają na nadpisanie koloru tła dla elementów przeglądarki twarzy. Atrybuty <literal
>labelcolor</literal
> i <literal
>altlabelcolor</literal
> są zasadniczo odpowiednikami atrybutów <literal
>all-base-color</literal
> i<literal
>all-alternate-base-color</literal
> w <link linkend="style-nodes"
>znacznikach stylu</link
>. Jeżeli jednak występuje atrybut  <literal
>labelcolor</literal
> to alternatywne kolory tła elementu są wyłączone. </para>

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

    <sect2 id="text-nodes">
      <title
>Znaczniki tekstu</title>

      <para
>Znaczniki tekstu są wykorzystywane przez etykiety. Mogą być wykorzystane do wyświetlenia tekstu dostosowanego do lokalizacji w sposób następujący  (jeżeli pominięto atrybut <literal
>xml:lang</literal
> do przyjmowana jest lokalizacja POSIX): <programlisting
>&lt;text xml:lang=&quot;fr&quot;&gt;Option&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
>Znaczniki tekstowe mogą zawierać sekwencje specjalnie znaków, które mają następujące znaczenie: </para>

      <segmentedlist>
        <?dbhtml list-presentation="table"?>
        <segtitle
>Sekwencja</segtitle
><segtitle
>Znaczenie</segtitle>

        <seglistitem>
          <seg
>%%</seg>
          <seg
>Znak %</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%c</seg>
          <seg
>Czas i data</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%d</seg>
          <seg
>Wyświetla nazwę (zmienną środowiskową <envar
>DISPLAY</envar
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%h</seg>
          <seg
>Nazwa komputera (wynik działania <function
>gethostname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%m</seg>
          <seg
>Nazwa maszyny (część <structfield
>machine</structfield
> wyniku polecenia <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%n</seg>
          <seg
>Nazwa węzła (część <structfield
>nodename</structfield
> wyniku polecenia <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%o</seg>
          <seg
>Nazwa domeny (wynik polecenia <function
>getdomainname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%r</seg>
          <seg
>Nazwa dystrybucji (część <structfield
>release</structfield
> wyniku polecenia <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%s</seg>
          <seg
>Nazwa systemu (część <structfield
>sysname</structfield
> wyniku polecenia <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%t</seg>
          <seg
>Pozostała liczba sekund do wykonania opóźnionego logowania, wraz z odpowiednią formą liczby mnogiej słowa <quote
>sekunda</quote
></seg>
        </seglistitem>

        <seglistitem>
          <seg
>%u</seg>
          <seg
>Nazwa użytkownika dla opóźnionego logowania</seg>
        </seglistitem>

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

        <seglistitem>
          <seg
>_</seg>
          <seg
>Ustala skrót klawiszowy dla następującego po _ znaku</seg>
        </seglistitem>

      </segmentedlist>

      <para
>Sekwencje <literal
>%t</literal
> oraz <literal
>%u</literal
> są używane tylko wewnętrznie do wyświetlania etykiety opóźnionego logowania <literal
>timed-label</literal
>, która jest aktualizowana co sekundę. </para>
    </sect2>

    <sect2 id="stock-nodes">
      <title
>Znaczniki magazynu</title>

      <para
>Niektóre powszechnie występujące zlokalizowane etykiety mogą być określone za pomocą znaczników magazyny. Atrybut <literal
>text</literal
> jest ignorowany dla znacznika <literal
>stock</literal
>. Zamiast umieszczania wszystkich tłumaczeń wewnątrz motywu, lepiej jest stosować znaczniki magazynu. Dzięki temu można uzyskać szybsze ładowanie i prawdopodobnie lepsze tłumaczenia. Dostępne są następujące wartości: </para>

      <segmentedlist>
        <?dbhtml list-presentation="table"?>
        <segtitle
>Typ</segtitle
><segtitle
>Znaczenie</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-warning</seg>
          <seg
><quote
>Caps Lock włączony</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>chooser</seg>
          <seg
><quote
>Wybie_rz protokół XDMCP</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>quit</seg>
          <seg
><quote
>Za_kończ</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>disconnect</seg>
          <seg
><quote
>_Rozłącz</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>halt</seg>
          <seg
><quote
>_Wyłącz komputer</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>language</seg>
          <seg
><quote
>_Język</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>login</seg>
          <seg
><quote
>_Zaloguj</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>session</seg>
          <seg
><quote
>_Typ sesji</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>reboot</seg>
          <seg
><quote
>_Uruchom komputer ponownie</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
>timed-label</seg>
          <seg
><quote
>Użytkownik %u zaloguje się w ciągu %t</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>domain-label</seg>
          <seg
><quote
>_Domena:</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>username-label</seg>
          <seg
><quote
>_Użytkownik:</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>password-label</seg>
          <seg
><quote
>_Hasło:</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>welcome-label</seg>
          <seg
><quote
>Witamy w %h</quote
></seg>
        </seglistitem>

      </segmentedlist>

      <para
>Na przykład: <programlisting
>&lt;stock type=&quot;welcome-label&quot;/&gt;
</programlisting>
      </para>
    </sect2>

    <sect2 id="buddy-nodes">
      <title
>Elementy stowarzyszone</title>

      <para
>Elementy, które bezpośrednio nie wywołują żadnego działania mogą mieć status stowarzyszonego. Element stowarzyszony będzie aktywowany gdy właściwy element jest aktywowany (kliknięty lub wybrany za pomocą klawisza akceleratora etykiety <literal
>label</literal
>). </para>

      <para
>Element stowarzyszony jest wskazywane za pomocą wartości 'id' w atrybucie <literal
>idref</literal
>. Oznacza to oczywiście, że musi posiadać nadaną nazwę id. Na przykład: <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>
