<chapter id="kdm-themes">
  <title
>Criando temas para o tela de boas-vindas do &kdm;</title>

  <para
>Esta seção descreve a criação dos temas para o tela de boas-vindas. Para obter mais exemplos que incluam imagens, veja os temas-padrão instalados e os temas da <ulink type="http" url="http://www.kde-look.org/index.php?xcontentmode=40"
>respectiva página Web</ulink
>. </para>

  <sect1 id="theme-overview">
    <title
>Introdução ao Tema</title>

    <para
>Os temas do &kdm; podem ser criados definindo-se um arquivo XML que siga a especificação em <filename
>$<envar
>KDEDIR</envar
>/share/apps/doc/kdm/greeter.dtd</filename
>. Os arquivos dos temas são salvos na pasta <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/apps/kdm/themes/<replaceable
>nome-tema</replaceable
></filename
>. A pasta dos temas deverá conter um arquivo chamado <filename
>KdmGreeterTheme.desktop</filename
>, que tem um formato semelhante ao dos outros arquivos <filename class="extension"
>.desktop</filename
>, parecendo-se com o seguinte: <programlisting
>[KdmGreeterTheme]
Greeter=circulos.xml
Name=Círculos
Description=Tema com círculos azuis
Author=Bond, James Bond
Copyright=(c) 2002 Bond, James Bond
Screenshot=imagem.png
</programlisting>
    </para>

    <para
>Os campos <literal
>Name</literal
>, <literal
>Description</literal
>, <literal
>Author</literal
> e <literal
>Copyright</literal
> poderão ser traduzidos como acontece nos outros arquivos <filename class="extension"
>.desktop</filename
>. Todos os arquivos que sejam mencionados deverão estar na pasta do próprio tema. O campo <literal
>Screenshot</literal
> aponta para um arquivo que deverá ser uma imagem de 200x150 do tema em ação (isto não é obrigatório, mas ter esta imagem é mais agradável para o usuário). O item <literal
>Greeter</literal
> aponta para um arquivo XML que contém a descrição do tema. </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
>Uma vez que o tema tenha sido inteiramente testado, crie um pacote que contendo a pasta, tal como seria instalada na pasta <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/apps/kdm/themes</filename
>. Este é o formato-padrão para distribuir temas do &kdm;. </para>
  </sect1>

  <sect1 id="theme-format">
    <title
>Descrição Detalhada do Formato XML do Tema</title>

    <sect2 id="greeter-tag">
      <title
>Nó do Topo</title>

      <para
>Os temas do &kdm; são arquivos XML com a marca &lt;greeter&gt; no seu topo. O nó de topo é um <link linkend="item-nodes"
>nó de item</link
> do tipo <literal
>rect</literal
> com uma <link linkend="fixed-nodes"
>disposição fixa</link
> implícita. </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
>Dentro da marca 'greeter' poderão existir os nós descritos nas seções seguintes deste documento. Alguns destes nós são contentores (nós de disposição, nós de itens) que poderão conter ainda outros nós. </para>
    </sect2>

    <sect2 id="item-nodes">
      <title
>Nós de Itens</title>

      <para
>Um tema do &kdm; é criado ao definir uma hierarquia de nós de itens e disposição. Os nós de itens poderão ter o seguinte valor para o atributo <literal
>type</literal
>: </para>

      <variablelist>

        <varlistentry>
          <term
>button</term>
          <listitem>
            <para
>Um campo de botão. Este campo usa um botão do Qt. </para>
            <para
>Também é possível fazer com que outro item atue como se fosse um botão, definindo o seu atributo <literal
>button</literal
> como sendo <literal
>true</literal
>. Contudo, é melhor usar os botões do Qt nos temas do &kdm;, uma vez que eles são acessíveis para pessoas com necessidades especiais. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>entry</term>
          <listitem>
            <para
>Um item de entrada de dados, como um campo de texto ou uma lista. Lembre-se que este é apenas um espaço de colocação para itens do Qt.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>label</term>
          <listitem>
            <para
>Uma legenda de texto. Deverá conter um <link linkend="text-nodes"
>nó <literal
>text</literal
></link
> ou um <link linkend="stock-nodes"
>nó <literal
>stock</literal
></link
> para definir o texto. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>list</term>
          <listitem>
            <para
>Um item de navegação de fotos dos usuários.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>pixmap</term>
          <listitem>
            <para
>Uma imagem rasterizada num formato suportado pelo Qt, &eg; PNG, JPEG, Tiff, etc.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>rect</term>
          <listitem>
            <para
>Um retângulo simples.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>svg</term>
          <listitem>
            <para
>Uma imagem vetorial no formato SVG.</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para
>Por exemplo: <programlisting>
&lt;item type=&quot;label&quot;&gt;
</programlisting
> Um item que atua como um botão: <programlisting
>&lt;item type=&quot;rect&quot; id=&quot;botao_desligar&quot; button=&quot;true&quot;&gt;.
</programlisting>
      </para>

      <para
>Por padrão, a tela de autenticação do &kdm; irá desaparecer após a autenticação. Isto poderá resultar numa intermitência entre o tela de autenticação e a sessão. O atributo <literal
>background</literal
> permite aos usuários indicarem os elementos do item que são a imagem de fundo. Quando for usado, isto fará com que o &kdm; remova todos os itens fora do fundo do tela e apresente os outros itens <literal
>background</literal
> restantes na janela de topo. Isto poderá ser usado para criar uma transição suave entre o tela de autenticação e a sessão:<programlisting>
&lt;item type=&quot;rect&quot; background=&quot;true&quot;&gt;
  &lt;normal file="fundo.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
> Para usar um fundo diferente para a transição da autenticação do que é usado na autenticação, o tema deverá definir dois nós de itens (que deverão conter imagens rasterizadas ou SVG, por exemplo). O item que corresponder ao fundo do tela de boas-vindas não deverá ter a propriedade <literal
>background</literal
>, enquanto o item que corresponde ao fundo de transição deverá ter a propriedade <literal
>background</literal
>. Por exemplo : <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="fundo_autenticacao.svg" element="fundo"/&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="fundo_boas_vindas.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
>Nas configurações em vários telas, os temas poderão também definir a aparência das outras telas diferentes da que aparece a mensagem de boas-vindas - contudo, tipicamente só aparecem os itens de fundo nesse caso. Se você quiser indicar em que telas um determinado item deverá aparecer, poderá usar o atributo <literal
>screen</literal
> com o valor igual a <literal
>greeter</literal
>, <literal
>other</literal
> ou <literal
>all</literal
>, o que corresponde a tela da mensagem de boas-vindas, nas outras telas onde esta mensagem não aparece ou em todos, respectivamente. </para>

      <variablelist>
        <para
>Cada item poderá ter um nome próprio com o atributo <literal
>id</literal
>. Alguns ID's são reconhecidos pelo &kdm; para dar a esses itens uma função especial: </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
>Itens <literal
>button</literal
> e itens com o atributo <literal
>button=&quot;true&quot;</literal
>.</term>

          <listitem>
            <para
>Os botões tipicamente disparam algumas ações. Além disso, o &kdm; irá ocultar botões cujas ações não estejam disponíveis por alguma razão. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Ação</segtitle>

              <seglistitem>
                <seg
>chooser_button</seg>
                <seg
>Executa o selecionador do 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
>Desligar da sessão remota.</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
>Abre o menu de seleção do tipo de sessão.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>system_button</seg>
                <seg
>Abre um menu de seleção completa com várias opções e ações, dependendo da configuração.</seg>
              </seglistitem>
            </segmentedlist>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>Itens <literal
>label</literal
></term>

          <listitem>
            <para
>O &kdm; irá mostrar/ocultar estes itens e definir o seu texto com base no estado da janela de autenticação. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Função</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
>Isto mostra a mensagem <guilabel
>Autenticação falhou.</guilabel
>.</seg>
              </seglistitem>

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

        <varlistentry>
          <term
>Itens de incorporação de elementos</term>

          <listitem>
            <para
>O &kdm; irá incorporar os itens particulares do Qt nestes itens. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Função</segtitle>

              <seglistitem>
                <seg
>user-entry</seg>
                <seg
>Campo de entrada do nome do usuário.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>pw-entry</seg>
                <seg
>Campo de entrada da senha.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>domain-entry</seg>
                <seg
>Alguns plug-ins de <quote
>conversação</quote
> usam este campo para questionar o nome de um domínio. Se este campo estiver presente, os itens envolventes relacionados com ele deverão ter <link linkend="show-nodes"
>nós de apresentação</link
> com o tipo <literal
>plugin-domain-entry</literal
>.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>talker</seg>
                <seg
>Este item deverá ser do tipo <literal
>rect</literal
>. Ele representa a área <quote
>quente</quote
> da tela de boas-vindas: contém os itens <literal
>label</literal
> e <literal
>entry</literal
> que dizem respeito ao processo de autenticação. Se um determinado plug-in de <quote
>conversação</quote
> não corresponder aos itens existentes com as suas necessidades, ele tenta incorporar um item complexo com uma disposição própria neste item, substituindo por completo o <quote
>locutor</quote
> do tema. Estritamente falando, os temas do &kdm; não necessitam fornecer desenhos de <quote
>locutores</quote
>, uma vez que todos os plug-ins de autenticação do &kdm; podem tirar partido do item <literal
>talker</literal
>. </seg>
              </seglistitem>

              <seglistitem>
                <seg
>userlist</seg>
                <seg
>Este item deverá ser do tipo <literal
>list</literal
>. Se a funcionalidade da lista de usuários estiver ativa, o &kdm; irá incorporar o item da lista de usuários aqui. Caso contrário, este item fica oculto.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>xconsole</seg>
                <seg
>Este item deverá ser do tipo <literal
>rect</literal
>. Se a funcionalidade do <command
>xconsole</command
> incorporado estiver compilada e ativada, o &kdm; irá incorporar o item de registro do console aqui. Caso contrário, este item fica oculto.</seg>
              </seglistitem>

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

        <varlistentry>
          <term
>Outros itens</term>

          <listitem>
            <para
>O &kdm; irá mostrar/ocultar os itens que dependerem da configuração e do estado atual da tela de boas-vindas. O &kdm; não impõe requisitos de tipos sobre eles, se bem que eles digam respeito normalmente a um tipo em particular. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Id</segtitle
><segtitle
>Mostrar apenas quando...</segtitle>

              <seglistitem>
                <seg
>timed-label</seg>
                <seg
>... existir uma autenticação temporizada em curso.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>caps-lock-warning</seg>
                <seg
>... o Caps Lock estiver ativo.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>xauth-warning</seg>
                <seg
>... o &X-Server; não necessitar de autorização do X para se conectar.</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
>... a lista de usuários estiver ativa. Ao incorporar o item <literal
>userlist</literal
> dentro deste, é possível criar algo semelhante a uma moldura em torno da lista, apresentando-a apenas quando for apresentada a lista  de usuários propriamente dita.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>xconsole-rect</seg>
                <seg
>... o <command
>xconsole</command
> incorporado estiver ativo. É semelhante ao <literal
>userlist-rect</literal
>.</seg>
              </seglistitem>

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

      </variablelist>

    </sect2>

    <sect2 id="layout-nodes">
      <title
>Nós Contentores de Disposição</title>

      <para
>Os nós de disposição aparecem dentro dos nós de itens e contém mais outros nós de itens. O tipo do nó de disposição determina a organização dos nós-filhos. Um nó de item pode conter um nó de disposição de cada tipo. </para>

      <sect3 id="box-nodes">
        <title
>Nós de Caixas</title>

        <para
>Os nós de caixas organizam automaticamente os seus filhos numa fila. São definidos da seguinte forma:<programlisting>
&lt;box orientation=&quot;<replaceable
>alinhamento</replaceable
>&quot; min-width=&quot;<replaceable
>núm</replaceable
>&quot; min-height=&quot;<replaceable
>núm</replaceable
>&quot;
    xpadding=&quot;<replaceable
>núm</replaceable
>&quot; ypadding=&quot;<replaceable
>núm</replaceable
>&quot; spacing=&quot;<replaceable
>núm</replaceable
>&quot;
    homogeneous=&quot;<replaceable
>booleano</replaceable
>&quot;&gt;
</programlisting
> Onde o <replaceable
>núm</replaceable
> corresponde ao número de pixels e o <replaceable
>booleano</replaceable
> como <literal
>true</literal
> ou <literal
>false</literal
>. O valor do <replaceable
>alinhamento</replaceable
> poderá ser <literal
>horizontal</literal
> ou <literal
>vertical</literal
>. Se você deixar algum atributo desativado, será igual a zero nos números, <literal
>false</literal
> para os booleanos e <literal
>vertical</literal
> para a orientação. </para>

        <para
>O espaço é a distância entre os itens-filhos vizinhos. O preenchimento é a margem exterior da caixa. Se a caixa for homogênea, é reservada a mesma quantidade de espaço para cada item-filho. </para>
      </sect3>

      <sect3 id="fixed-nodes">
        <title
>Nós Fixos</title>

        <para
>O nó 'fixed' é um contentor que tem os seus filhos dispostos em coordenadas exatas. O tamanho do contentor é o menor retângulo que conseguir conter todos os filhos. O nó 'fixed' não tem atributos extra e por isso basta escrever: <programlisting>
&lt;fixed&gt;
</programlisting
> e colocar outros itens com nós de posição adequados dentro dele. </para>
      </sect3>

    </sect2>

    <sect2 id="position-nodes">
      <title
>Nós de Posição</title>

      <para
>Cada item poderá definir a sua posição e tamanho com o nó <literal
>pos</literal
>. Por exemplo: <programlisting
>&lt;pos x=&quot;0&quot; y=&quot;4&quot; width=&quot;100%&quot; height=&quot;100%&quot;/&gt;
</programlisting>
      </para>

      <para
>Se o tamanho não for definido, será o tamanho <quote
>natural</quote
> do item, chamado de "sugestão de tamanho". Lembre-se que nem todos os itens têm uma sugestão de tamanho útil. </para>

      <para
>Tanto a posição como o tamanho podem ser definidos como uma porcentagem e serão calculados em relação ao tamanho do contentor envolvente neste caso. Para os itens de topo, é a porcentagem da tela inteira. Ao adicionar acentos circunflexos (<literal
>^</literal
>) à definição do tamanho, é possível modificá-lo como sendo o tamanho do item envolvente do item envolvente, e assim por diante. </para>

      <para
>Se o item tiver uma caixa, o <literal
>width</literal
> e o <literal
>height</literal
> poderão ser definidos como <literal
>box</literal
>, o que significa que terá a largura e a altura da caixa, o que corresponde aos itens na caixa mais o preenchimento. </para>

      <para
>Poderá definir um dos atributos <literal
>width</literal
> ou <literal
>height</literal
> como sendo <literal
>scale</literal
>, o que significa que deverá ser dimensionado em relação à escala relativa da outra dimensão, baseando-se na sua sugestão de tamanho. Use isto para manter automaticamente as proporções das imagens dimensionadas. </para>

      <para
>Se o atributo <literal
>expand</literal
> for definido e for igual a <literal
>true</literal
>, este item será expandido na caixa envolvente o máximo possível (inclusive poderá ter mais espaço, se estiver disponível). </para>

      <para
>Se o <literal
>width</literal
> ou o <literal
>height</literal
> forem um número simples, um valor negativo representa um deslocamento a partir do tamanho do contentor envolvente. Lembre-se que é possível definir um deslocamento positivo, escrevendo dois sinais negativos. </para>

      <para
>Em qualquer um dos casos, é possível restringir o tamanho final com os atributos <literal
>min-width</literal
>, <literal
>min-height</literal
>, <literal
>max-width</literal
> e <literal
>max-height</literal
>, que poderão ser definidos da mesma forma que o <literal
>width</literal
> e o <literal
>height</literal
>. </para>

      <para
>Se o <literal
>x</literal
> ou o <literal
>y</literal
> forem um número simples, um valor negativo representa um deslocamento face ao extremo direito ou inferior, respectivamente, ao contrário da situação padrão no extremo esquerdo ou superior, respectivamente. </para>

      <para
>Também é possível especificar o ponto dentro do item a que a posição diz respeito. Ele chama-se 'anchor' e poderá ser igual a <literal
>c</literal
> para centralizado ou a um dos seguintes valores <literal
>n</literal
>, <literal
>ne</literal
>, <literal
>e</literal
>, <literal
>se</literal
>, <literal
>s</literal
>, <literal
>sw</literal
>, <literal
>w</literal
> e <literal
>nw</literal
>, que correspondem aos diferentes cantos/lados das direções em um mapa topográfico. O padrão é <literal
>nw</literal
> que corresponde ao canto superior esquerdo. Por exemplo: <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
>Nós de Apresentação</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
>Você pode especificar o atributo <literal
>type</literal
> para inidcar que determinados itens devem somente ser exibidos se o 'type' estiver configurado. Prefixar o 'type' com um ponto de exclamação (<literal
>!</literal
>) inverte esta condição. Valores válidos incluem os seguintes: </para>
        <segmentedlist>
          <?dbhtml list-presentation="table"?>
          <segtitle
>Tipo</segtitle
><segtitle
>Exibir se...</segtitle>

          <seglistitem>
            <seg
><literal
>chooser</literal
></seg>
            <seg
>alternar para o login remoto é permitido.</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
> e <literal
>reboot</literal
></seg>
            <seg
>o desligamento do computador é permitido.</seg>
          </seglistitem>

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

          <seglistitem>
            <seg
><literal
>system</literal
></seg>
            <seg
>nenhuma condição (sempre configurado no &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
>nome-entrada</replaceable
></seg>
            <seg
>o plug-in de <quote
>conversação</quote
> fornece um campo de entrada correspondente.</seg>
          </seglistitem>

        </segmentedlist>


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

      <para
>Em alternativa, você poderá definir um valor <literal
>min-screen-width</literal
> ou <literal
>min-screen-height</literal
> para indicar que certos itens só deverão aparecer se a resolução da tela tiver pelo menos o valor definido. Por exemplo: <programlisting
>&lt;show min-screen-height=&quot;768&quot;/&gt;
</programlisting>
      </para>

    </sect2>

    <sect2 id="nor-act-pre-nodes">
      <title
>Nós Normais/Ativos/Pré-Iluminados</title>

      <para
>A aparência da maior parte dos tipos de itens poderá ser parametrizada com as seguintes marcas: </para>

      <variablelist>
        <varlistentry>
          <term
><literal
>normal</literal
></term>
          <listitem>
            <para
>Estado normal.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term
><literal
>prelight</literal
></term>
          <listitem>
            <para
>Quando o cursor do mouse passa por cima do item.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term
><literal
>active</literal
></term>
          <listitem>
            <para
>Quando se clica um botão do mouse sobre o item.</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <variablelist>

        <para
>O conjunto exato de atributos disponíveis depende do tipo de item: </para>

        <varlistentry>
          <term
><literal
>rect</literal
></term>
          <listitem>
            <para>
<programlisting
>&lt;normal color=&quot;#000000&quot; alpha=&quot;0.0&quot;/&gt;
</programlisting>
Qualquer um dos atributos poderá ser omitido; nesse caso, é usado o padrão (o exemplo representa o padrão). O <literal
>alpha</literal
> é um número de vírgula-flutuante entre zero (transparente) e um (opaco). A <literal
>color</literal
> é um cardinal seguido de um número hexadecimal de seis algarismos; o formato é <quote
><literal
>#</literal
><replaceable
>rrggbb</replaceable
></quote
>. Em alternativa, a <literal
>color</literal
> pode ser definida como um número de oito algarismos, onde os dois primeiros são os valores da transparência. </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>
Os atributos <literal
>alpha</literal
> e <literal
>color</literal
> são definidos como nos itens <quote
>rect</quote
>. </para>
            <para
>O <literal
>font</literal
> segue o formato <quote
><replaceable
>lista de famílias</replaceable
>&nbsp;<replaceable
>opções de estilo</replaceable
>&nbsp;<replaceable
>tamanho</replaceable
></quote
>. Cada um destes componentes é opcional. </para>
            <para
>A <replaceable
>lista de famílias</replaceable
> é uma lista separada por vírgulas de famílias de fontes como por exemplo <quote
>helvetica</quote
>, <quote
>monospace</quote
>, etc. </para>
            <para
>As <replaceable
>opções de estilo</replaceable
> são uma lista delimitada por espaços de palavras-chave do estilo, peso e esticamento das categorias; em cada categoria existe no máximo uma instância. O estilo poderá ser <literal
>normal</literal
>, <literal
>italic</literal
> ou <literal
>oblique</literal
>. O peso poderá ser <literal
>ultra-light</literal
>, <literal
>light</literal
>, <literal
>medium</literal
>, <literal
>semi-bold</literal
>, <literal
>bold</literal
>, <literal
>ultra-bold</literal
> ou <literal
>heavy</literal
>. Os esticamentos são compostos por <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
> e <literal
>ultra-expanded</literal
>. </para>
            <para
>O <replaceable
>tamanho</replaceable
> tanto pode ser um número de vírgula flutuante que representa o tamanho em pontos (1/72 polegada) ou um inteiro seguido de <literal
>px</literal
> para representar o tamanho em pixels. Os tamanhos em pontos são preferíveis, uma vez que são independentes da resolução da tela. </para>
            <para
>Se algum dos atributos for omitido, são usados os valores do <link linkend="style-nodes"
>nó de estilo</link
>. Se não estiver definida nenhuma cor para o texto, é usado o branco. A fonte padrão é a que está configurada no &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
>O <literal
>file</literal
> define o arquivo que contém a imagem. Os locais dos arquivos relativos baseiam-se na pasta do tema. </para>

            <para
>O <literal
>element</literal
> define o ID do elemento de um arquivo SVG. Se estiver em branco, será representada toda a imagem SVG. </para>

            <para
>No caso dos nós <literal
>pixmap</literal
>, o &kdm; tenta primeiro abrir um arquivo que corresponda ao <replaceable
>nome-de-base</replaceable
><literal
>-</literal
><replaceable
>largura</replaceable
><literal
>x</literal
><replaceable
>altura</replaceable
><literal
>.</literal
><replaceable
>extensão</replaceable
>, com base no nome do arquivo indicado, para que possa ser usada uma imagem com a melhor qualidade para uma determinada resolução. </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
>O <literal
>tint</literal
> e o <literal
>alpha</literal
> geram uma definição de cor como nos itens <literal
>rect</literal
>. Cada pixel da imagem é multiplicado por esta cor a nível de cada componente. </para>
          </listitem>
        </varlistentry>

      </variablelist>

    </sect2>

    <sect2 id="style-nodes">
      <title
>Nós de Estilo dos Itens</title>

      <para
>Esta marca possibilita alterar a aparência das legendas e dos itens do Qt incorporados no tema, p.ex. os campos de texto, os botões ou a lista de usuários. A configuração do estilo é herdada pelos itens-filhos, mas poderá ser substituída individualmente. Os valores padrão são retirados do &kdmrc;. </para>

      <para
>O atributo <literal
>font</literal
> define a fonte de todos os itens. Para os itens com uma função de entrada de dados, ele poderá ser substituído pelo atributo <literal
>edit-font</literal
>. As fontes são definidas da mesma forma que nos nós <link linkend="nor-act-pre-nodes"
>normais/ativos/pré-iluminados</link
>. </para>

      <para
>Normalmente, o motor de temas tenta realmente remover todos os contornos dos itens do Qt, para que se incorporem de forma transparente no tema. Nos casos em que isso não seja o desejado, o atributo <literal
>frame</literal
> poderá ser definido como <literal
>true</literal
>. </para>

      <para
>É possível definir praticamente toda a paleta dos itens que estão documentados na <ulink type="http" url="http://doc.trolltech.com/4.3/qpalette.html"
>página da Trolltech</ulink
>. Os nomes dos atributos são compostos a partir de um âmbito, um papel da cor e um sufixo. Os âmbitos possíveis são - por ordem de precedência crescente - <literal
>all-</literal
> para todos os grupos de cores, sem âmbito para os grupos de cores ativa e inativa e o <literal
>active-</literal
>, <literal
>inactive-</literal
> e <literal
>disabled-</literal
> para o grupo de cores respectivo. Os papéis das cores suportados são <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
> e <literal
>button-text</literal
>. O sufixo poderá ser <literal
>-color</literal
> ou <literal
>-alpha</literal
>, tendo o significado respectivo que tem nos <link linkend="nor-act-pre-nodes"
>nós normais/ativos/pré-iluminados</link
>. </para>

      <para
>Exemplo: <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
>Nós de Cores do Navegador de Faces</title>

      <para
>Os nós de cores permitem substituir a cor de fundo dos itens no navegador de faces. O <literal
>labelcolor</literal
> e o <literal
>altlabelcolor</literal
> são essencialmente equivalentes, respectivamente, ao <literal
>all-base-color</literal
> e <literal
>all-alternate-base-color</literal
> nos <link linkend="style-nodes"
>nós de estilo</link
>. Se só for definida a <literal
>labelcolor</literal
>, os fundos alternados dos itens ficam desativados. </para>

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

    <sect2 id="text-nodes">
      <title
>Nós de Texto</title>

      <para
>As marcas de texto são usadas pelas legendas. Elas poderão ser usadas para mostrar texto traduzido da seguinte forma (se o atributo <literal
>xml:lang</literal
> estiver omitido, é usado o local 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
>Os nós de texto poderão conter as seguintes sequências especiais de texto, que serão traduzidas da seguinte forma: </para>

      <segmentedlist>
        <?dbhtml list-presentation="table"?>
        <segtitle
>Sequência</segtitle
><segtitle
>Expansão</segtitle>

        <seglistitem>
          <seg
>%%</seg>
          <seg
>Um caracter % literal</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%c</seg>
          <seg
>Data e hora do relógio de parede</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%d</seg>
          <seg
>Nome da tela (variável de ambiente <envar
>DISPLAY</envar
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%h</seg>
          <seg
>Nome da máquina (resultado do <function
>gethostname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%m</seg>
          <seg
>Nome da máquina (resultado do <function
>uname</function
> da estrutura <structfield
>machine</structfield
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%n</seg>
          <seg
>Nome do nó (componente <structfield
>nodename</structfield
> do resultado do <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%o</seg>
          <seg
>Nome do domínio (resultado do <function
>getdomainname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%r</seg>
          <seg
>Nome da versão (componente <structfield
>release</structfield
> do resultado do <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%s</seg>
          <seg
>Nome do sistema (componente <structfield
>sysname</structfield
> do resultado do <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%t</seg>
          <seg
>Número restante de segundos até ser efetuada a autenticação temporizado, além da forma plural de 'i18n' apropriada dos <quote
>segundos</quote
></seg>
        </seglistitem>

        <seglistitem>
          <seg
>%u</seg>
          <seg
>Usuário da autenticação temporizada</seg>
        </seglistitem>

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

        <seglistitem>
          <seg
>_</seg>
          <seg
>Faz com que o caracter a seguir seja um acelerador</seg>
        </seglistitem>

      </segmentedlist>

      <para
>O <literal
>%t</literal
> e o <literal
>%u</literal
> devem ser usados apenas internamente para mostrar a mensagem <literal
>timed-label</literal
>, que é atualizada automaticamente todos os segundos. </para>
    </sect2>

    <sect2 id="stock-nodes">
      <title
>Nós de 'Stock'</title>

      <para
>Algumas legendas comuns traduzidas poderão ser definidas com as marcas de 'stock'. A marca <literal
>text</literal
> é ignorada se for usada a marca <literal
>stock</literal
>. Você deverá realmente usar as legendas em 'stock' em vez de colocar todas as traduções nos temas. Isto gera tempos de carregamento mais reduzidos e a melhores traduções. Os seguintes valores são válidos: </para>

      <segmentedlist>
        <?dbhtml list-presentation="table"?>
        <segtitle
>Tipo</segtitle
><segtitle
>Expansão</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
>O Caps Lock está ativo</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>chooser</seg>
          <seg
><quote
>Seleção de _XDMCP</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>quit</seg>
          <seg
><quote
>_Sair</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>disconnect</seg>
          <seg
><quote
>D_esligar</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>halt</seg>
          <seg
><quote
>Desligar _computador</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>língua</seg>
          <seg
><quote
>Lín_gua</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>autenticação</seg>
          <seg
><quote
>_Login</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>sessão</seg>
          <seg
><quote
>_Tipo de Sessão</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>reboot</seg>
          <seg
><quote
>Rei_niciar</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
>O usuário %u autenticar-se-á em %t</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>domain-label</seg>
          <seg
><quote
>_Domínio:</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>username-label</seg>
          <seg
><quote
>_Usuário:</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>password-label</seg>
          <seg
><quote
>Sen_ha:</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>welcome-label</seg>
          <seg
><quote
>Bem-vindo ao %h</quote
></seg>
        </seglistitem>

      </segmentedlist>

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

    <sect2 id="buddy-nodes">
      <title
>Nós de Companhia</title>

      <para
>Os itens que não provocam diretamente uma ação poderão ter um companheiro atribuído. Este item de companhia fica em primeiro plano quando o outro item fica ativo (ao clicar nele com o mouse ou com um acelerador de uma <literal
>label</literal
>). </para>

      <para
>O companheiro é referenciado pelo seu ID com o atributo <literal
>idref</literal
>. Obviamente deverá ter um ID atribuído. Por exemplo: <programlisting
>plug-in  m type=&quot;label&quot;&gt;
  &lt;stock type=&quot;username-label&quot;/&gt;
  &lt;buddy idref=&quot;campo-usuário&quot;/&gt;
  [...]
&lt;/item&gt;
[...]
&lt;item type=&quot;entry&quot; id=&quot;campo-usuário&quot;&gt;
  [...]
&lt;/item&gt;
</programlisting>
      </para>
    </sect2>

  </sect1>

</chapter>
