Sophie

Sophie

distrib > Mandriva > current > i586 > media > main-updates > by-pkgid > ef94ce641418407205f56847b8006626 > files > 582

kde-l10n-fr-4.4.5-3.1mdv2010.2.noarch.rpm

<chapter id="kdm-themes">
  <title
>Création de thèmes pour l'écran de bienvenue &kdm;</title>

  <para
>Cette section décrit la création de thèmes pour l'écran de bienvenue. Pour des exemples comprenant des captures d'écran, voyez les thèmes standards installés et les thèmes du <ulink type="http" url="http://www.kde-look.org/index.php?xcontentmode=40"
>site web des thèmes</ulink
>. </para>

  <sect1 id="theme-overview">
    <title
>Aperçu de la création de thèmes</title>

    <para
>Vous pouvez construire des thèmes &kdm; en créant un fichier XML qui suit la spécification de <filename
>$<envar
>KDEDIR</envar
>/share/apps/doc/kdm/greeter.dtd</filename
>. Les fichiers de thème sont conservés dans le dossier <filename class="directory"
>$<envar
>KDEDIR</envar
>/share/apps/kdm/themes/<replaceable
>nom_du_thème</replaceable
>
</filename
>. Le dossier du thème doit contenir un fichier nommé <filename
>KdmGreeterTheme.desktop</filename
> qui a un format similaire aux autres fichiers <filename class="extension"
>.desktop</filename
> et ressemble à ceci : <programlisting
>[KdmGreeterTheme]

Greeter=cercles.xml

Name=Cercles

Description=Thème avec des cercles bleus

Author=Bond, James Bond

Copyright=(c) 2002 Bond, James Bond

Screenshot=copie_d_écran.png
</programlisting>
    </para>

    <para
>Les champs <literal
>Name</literal
>, <literal
>Description</literal
>, <literal
>Author</literal
> et <literal
>Copyright</literal
> peuvent être traduits tout comme dans d'autres fichiers <filename class="extension"
>.desktop</filename
>. Tous les fichiers mentionnés doivent être dans dans le dossier du thème. Le champ <literal
>Screenshot</literal
> pointe vers un fichier qui doit être une copie d'écran de taille 200x150 du thème en situation réelle (il est possible de l'omettre, mais sa présence est préférable pour l'utilisateur). Le champ <literal
>Greeter</literal
> pointe vers un fichier XML qui contient la description du thème. </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
>Une fois qu'un thème a été complètement testé, créez une archive au format tarball contenant le dossier tel qu'il serait installé dans le dossier <filename class="directory"
>$<envar
>
KDEDIR</envar
>/share/apps/kdm/themes</filename
>. Ceci est le format standard pour la distribution de thèmes &kdm;. </para>
  </sect1>

  <sect1 id="theme-format">
    <title
>Description détaillée du format XML des thèmes</title>

    <sect2 id="greeter-tag">
      <title
>Le nœud de premier niveau</title>

      <para
>Les thèmes &kdm; sont des fichiers XML avec la balise &lt;greeter&gt; à leur racine. Le nœud de premier niveau est un <link linkend="item-nodes"
>nœud item</link
> de type <literal
>rect</literal
> avec une <link linkend="fixed-nodes"
>mise en page fixe</link
> implicite. </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
>Dans la balise greeter, vous pouvez trouver les nœuds décris dans les sections suivantes de ce document. Certains de ces nœuds sont des conteneurs (nœuds pour la mise en page, nœuds item) pouvant à leur tour contenir d'autres nœuds. </para>
    </sect2>

    <sect2 id="item-nodes">
      <title
>Les nœuds item</title>

      <para
>Un thème &kdm; est créé en spécifiant une hiérarchie de nœuds item et de nœuds de mise en page. Les nœuds item peuvent avoir la valeur suivante pour l'attribut <literal
>type</literal
> : </para>

      <variablelist>

        <varlistentry>
          <term
>button</term>
          <listitem>
            <para
>Un champ de type bouton. Ce champ utilise un bouton Qt. </para>
            <para
>Il est aussi possible de faire en sorte que tout autre item se comporte comme un bouton en positionnant son attribut <literal
>button</literal
> à <literal
>true</literal
>. Cependant, il est préférable d'utiliser des boutons Qt dans les thèmes &kdm; car ceux-ci sont accessibles aux personnes ayant des problèmes d'accessibilité. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>entry</term>
          <listitem>
            <para
>Une zone de saisie sur une ligne ou une liste déroulante. Veuillez noter que ceci est simplement un substituant aux éléments graphiques de Qt.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>label</term>
          <listitem>
            <para
>Une zone de texte. Elle doit contenir soit un <link linkend="text-nodes"
>nœud <literal
>text</literal
></link
> soit un <link linkend="stock-nodes"
>nœud <literal
>stock</literal
></link
> afin de spécifier le texte. </para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>list</term>
          <listitem>
            <para
>Une zone de sélection d'avatar.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>pixmap</term>
          <listitem>
            <para
>Une image raster dans un format pris en charge par Qt, &pex; PNG, JPEG, Tiff, &etc;</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>rect</term>
          <listitem>
            <para
>Un rectangle plein.</para>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>svg</term>
          <listitem>
            <para
>Une image vectorielle au format SVG.</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <para
>Par exemple : <programlisting>

&lt;item type=&quot;label&quot;&gt;

</programlisting
> Un item fonctionnant comme un bouton : <programlisting
>&lt;item type=&quot;rect&quot; id=&quot;bouton_déconnexion&quot; button=&quot;true&quot;&gt;.
</programlisting>
      </para>

      <para
>Par défaut, l'écran &kdm; disparaîtra après l'authentification. Ceci peut conduire à un scintillement de l'image entre les écrans de connexion et de session. L'attribut <literal
>background</literal
> permet aux utilisateurs de spécifier quels éléments du thème constituent l'image de fond. Lorsque cet attribut est utilisé, &kdm; supprime tous les éléments qui ne font pas partie de l'arrière-plan et effectue le rendu des éléments <literal
>background</literal
> qui restent sur la fenêtre racine. Ceci peut être utilisé pour créer une transition douce entre les écrans de connexion et de session : 
<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
> Afin d'utiliser un arrière-plan différent de celui de l'écran de connexion pour la transition, le thème doit spécifier deux nœuds item (qui peuvent contenir des pixmaps ou des images SVG, par exemple). Le nœud item qui correspond à l'arrière-plan de l'écran de bienvenue ne doit pas avoir d'attribut <literal
>background</literal
>, au contraire de celui qui correspond à l'arrière-plan de transition. Par exemple : <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
>Dans les configurations multi-écrans, les thèmes peuvent aussi spécifier l'apparence des autres écrans que celui sur lequel est l'écran de bienvenue - mais typiquement seuls les éléments d'arrière-plan apparaîtront ici. Afin de spécifier sur quel(s) écran(s) un élément doit apparaître, l'attribut <literal
>screen</literal
> peut être utilisé avec une valeur parmi <literal
>greeter</literal
>, <literal
>other</literal
> ou <literal
>all</literal
>, ce qui signifie respectivement l'écran sur lequel l'écran de bienvenue est, tous les écrans sur lesquels l'écran de bienvenue n'est pas, et tous les écrans. </para>

      <variablelist>
        <para
>Un nom peut être donné à chaque nœud item via l'attribut <literal
>id</literal
>. Certains identifiants sont reconnus par &kdm; et donnent une fonction spéciale aux nœuds item afférents : </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
>Les éléments <literal
>button</literal
> et ceux avec l'attribut <literal
>button=&quot;true&quot;</literal
>.</term>

          <listitem>
            <para
>Typiquement, les boutons déclenchent certaines actions. De plus, &kdm; cachera les boutons dont les actions sont indisponibles pour une quelconque raison. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Identifiant (id)</segtitle
><segtitle
>Action</segtitle>

              <seglistitem>
                <seg
>chooser_button</seg>
                <seg
>Lance le sélecteur 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
>Déconnexion d'une session à distance.</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
>Ouvre le menu de sélection du type de session.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>system_button</seg>
                <seg
>Ouvre une menu fourre-tout avec diverses options et actions qui dépendent de la configuration.</seg>
              </seglistitem>
            </segmentedlist>
          </listitem>
        </varlistentry>

        <varlistentry>
          <term
>Éléments <literal
>label</literal
></term>

          <listitem>
            <para
>&kdm; affichera/cachera ces zones de texte et définira leur texte en fonction de l'état de la boîte de dialogue. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Identifiant (id)</segtitle
><segtitle
>Fonction</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
>Ceci affiche le message <guilabel
>Échec de la connexion</guilabel
>.</seg>
              </seglistitem>

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

        <varlistentry>
          <term
>Éléments intégrant des éléments graphiques</term>

          <listitem>
            <para
>&kdm; intégrera des éléments graphiques Qt particuliers dans ces éléments. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Identifiant (id)</segtitle
><segtitle
>Fonction</segtitle>

              <seglistitem>
                <seg
>user-entry</seg>
                <seg
>Champ pour la saisie du nom d'utilisateur.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>pw-entry</seg>
                <seg
>Champ pour la saisie du mot de passe.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>domain-entry</seg>
                <seg
>Certains modules externes de <quote
>communication</quote
> utilisent ce champ pour effectuer une requête sur un nom de domaine. Si ce champ est présent, les éléments qui l'englobent doivent avoir des <link linkend="show-nodes"
>nœuds d'affichage</link
> avec le type <literal
>plugin-domain-entry</literal
>.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>talker</seg>
                <seg
>Cet élément devrait être du type <literal
>rect</literal
>. Il représente la zone <quote
>chaude</quote
> de l'écran de bienvenue : il contient les éléments <literal
>label</literal
> et <literal
>entry</literal
> qui concernent le processus d'authentification. Si un module externe de <quote
>communication</quote
> ne peut pas effectuer de correspondance entre ses besoins et les éléments existants, il tente d'embarquer, dans cet élément, un élément graphique complexe avec sa propre mise en page, ce qui a pour effet de ne pas du tout tenir compte du <quote
>talker</quote
> du thème. Strictement parlant, les thèmes &kdm; n'ont pas du tout besoin de fournir de propres conceptions de <quote
>talker</quote
>, car tous les modules externes d'authentification de &kdm; sont capables d'utiliser l'élément <literal
>talker</literal
>. </seg>
              </seglistitem>

              <seglistitem>
                <seg
>userlist</seg>
                <seg
>Cet élément doit être du type <literal
>list</literal
>. Si la fonctionnalité d'affichage de la liste d'utilisateurs est activée, &kdm; embarque ici le widget d'affichage de la liste d'utilisateurs. Sinon, cet élément est caché.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>xconsole</seg>
                <seg
>Cet élément devrait être du type <literal
>rect</literal
>. Si la fonctionnalité intégrée <command
>xconsole</command
> est compilée et activée, &kdm; embarquera ici le widget de journalisation de console. Sinon, cet élément est caché.</seg>
              </seglistitem>

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

        <varlistentry>
          <term
>Autres éléments</term>

          <listitem>
            <para
>&kdm; affichera ou cachera ces éléments en fonction de la configuration et de l'état actuel de l'écran de bienvenue. &kdm; ne leur impose pas d'exigences, mais ils se prêtent généralement à un type particulier. </para>

            <segmentedlist>
              <?dbhtml list-presentation="table"?>
              <segtitle
>Identifiant (id)</segtitle
><segtitle
>N'est affiché que lorsque...</segtitle>

              <seglistitem>
                <seg
>timed-label</seg>
                <seg
>... une connexion temporisée est en cours.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>caps-lock-warning</seg>
                <seg
>... le verrouillage majuscule est activé.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>xauth-warning</seg>
                <seg
>... le &X-Server; ne requiert pas d'autorisation X pour se connecter.</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
>... la liste d'utilisateurs est active. En imbriquant l'élément <literal
>userlist</literal
> dans celui-ci, il est possible de créer quelque chose qui ressemble à un cadre autour de la liste et qu'il ne soit affiché que lorsque la liste d'utilisateurs elle-même est affichée.</seg>
              </seglistitem>

              <seglistitem>
                <seg
>xconsole-rect</seg>
                <seg
>... la fonctionnalité <command
>xconsole</command
> est activée. Est similaire à <literal
>userlist-rect</literal
>.</seg>
              </seglistitem>

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

      </variablelist>

    </sect2>

    <sect2 id="layout-nodes">
      <title
>Nœuds conteneurs pour la mise en page</title>

      <para
>Les nœuds de mise en page apparaissent dans les nœuds item et contiennent d'autres nœuds item. Le type de nœud de mise en page détermine la disposition de ses nœuds fils. Un nœud item peut contenir un nœud de mise en page de chaque type. </para>

      <sect3 id="box-nodes">
        <title
>Nœuds « box »</title>

        <para
>Les nœuds « box » organisent automatiquement leurs enfants en ligne. Ils sont spécifiés ainsi : <programlisting>
&lt;box orientation=&quot;<replaceable
>alignement</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
> Où <replaceable
>num</replaceable
> est un nombre de pixels et <replaceable
>bool</replaceable
> vaut soit <literal
>true</literal
> soit <literal
>false</literal
>. La valeur <replaceable
>alignement</replaceable
> peut être soit <literal
>horizontal</literal
> soit <literal
>vertical</literal
>. Si vous ne mettez pas de valeur à un attribut, sa valeur part défaut sera zéro pour les nombres, <literal
>false</literal
> pour les booléens et <literal
>vertical</literal
> pour l'orientation. </para>

        <para
>Le « spacing » est la distance séparant les nœuds « item » enfants voisins. Le « padding » est la marge extérieure du nœud « box ». Si le nœud « box » est homogène, l'espace alloué à chaque nœud « item » enfant est le même. </para>
      </sect3>

      <sect3 id="fixed-nodes">
        <title
>Nœuds « fixed »</title>

        <para
>Le nœud « fixed » est un conteneur dont les fils sont disposés à des coordonnées précises. La taille de ce conteneur est le plus petit rectangle qui contient tous les enfants. Le nœud « fixed » n'a pas d'attributs supplémentaires et vous utilisez simplement : <programlisting>

&lt;fixed&gt;

</programlisting
> Puis vous placez à l'intérieur de ce nœud d'autres nœuds « item » avec des nœuds « pos » adéquats. </para>
      </sect3>

    </sect2>

    <sect2 id="position-nodes">
      <title
>Nœuds de position</title>

      <para
>Chaque élément peut spécifier ses position et taille via le nœud <literal
>pos</literal
>. Par exemple : <programlisting
>&lt;pos x=&quot;0&quot; y=&quot;4&quot; width=&quot;100%&quot; 
height=&quot;100%&quot;/&gt;
</programlisting>
      </para>

      <para
>Si la taille n'est pas spécifiée, elle sera la taille <quote
>naturelle</quote
> du nœud « item », appelée la taille indiquée. Remarquez que tous les « items » n'ont pas de taille indiquée. </para>

      <para
>À la fois la position et la taille peuvent être fournis en pourcentage et seront dans ce cas calculés relativement à la taille du conteneur les englobant. Pour les nœuds « item » de niveau supérieur, il s'agit du pourcentage de l'écran entier. En ajoutant des accents circonflexes (<literal
>^</literal
>) à la spécification de la taille, il est possible de la modifier pour qu'elle soit relative à la taille de l'élément englobant l'élément qui l'englobe, et ainsi de suite... </para>

      <para
>Si le nœud « item » contient un nœud « box », <literal
>width</literal
> et <literal
>height</literal
>  peuvent être spécifiés à <literal
>box</literal
> afin de signifier qu'ils sont supposés être de la largeur et de la hauteur du nœud « box », c'est-à-dire les nœuds « item » dans le nœud « box » plus le « padding ». </para>

      <para
>La valeur d'un des attributs <literal
>width</literal
> et <literal
>height</literal
> peut être spécifiée à <literal
>scale</literal
> afin de signifier qu'il devrait être mis à l'échelle en fonction de l'échelle de l'autre dimension et relativement à sa taille indiquée. Utilisez ceci afin de conserver automatiquement le ratio des dimensions d'images. </para>

      <para
>Si l'attribut <literal
>expand</literal
> est spécifié et qu'il vaut<literal
>true</literal
>, ce nœud « item » sera développé autant que possible dans le conteneur qui l'englobe (c'est-à-dire que toute place disponible lui sera allouée). </para>

      <para
>Si <literal
>width</literal
> ou <literal
>height</literal
> sont des nombres, une valeur négative représente un décalage par rapport à la taille du conteneur qui l'englobe. Remarquez qu'il est possible de spécifier un décalage positif en utilisant deux signes négatifs. </para>

      <para
>Dans tous les cas, il est possible de contraindre la taille finale avec les attributs <literal
>min-width</literal
>, <literal
>min-height</literal
>, <literal
>max-width</literal
> et <literal
>max-height</literal
> qui peuvent être spécifiés de la même manière que <literal
>width</literal
> et <literal
>height</literal
>. </para>

      <para
>Si <literal
>x</literal
> ou <literal
>y</literal
> sont des nombres, une valeur négative représente un décalage par rapport au bord inférieur droit, à l'inverse de la valeur par défaut qui est le bord supérieur gauche. </para>

      <para
>Il est aussi possible de spécifier le point à l'intérieur du nœud « item » auquel se réfère la position. Celui-ci est appelé l'ancre et peut au choix être <literal
>c</literal
> pour le centre, ou bien <literal
>n</literal
>, <literal
>ne</literal
>, <literal
>e</literal
>, <literal
>se</literal
>, <literal
>s</literal
>, <literal
>sw</literal
>, <literal
>w</literal
> ou <literal
>nw</literal
> qui représentent les positions cardinales des différents bords/coins. La valeur par défaut est <literal
>nw</literal
>, qui correspond au coin supérieur gauche. Par exemple : <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
>Afficher des nœuds</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
>Vous pouvez spécifier l'attribut <literal
>type</literal
> afin d'indiquer que certains nœuds « item » ne devraient être affichés que si le type est défini. En préfixant le type d'un point d'exclamation (<literal
>!</literal
>), la condition est inversée. Les valeurs valables incluent : </para>
        <segmentedlist>
          <?dbhtml list-presentation="table"?>
          <segtitle
>Type</segtitle
><segtitle
>Afficher si...</segtitle>

          <seglistitem>
            <seg
><literal
>chooser</literal
></seg>
            <seg
>il est permis de basculer en mode de connexion à distance.</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
> et <literal
>reboot</literal
></seg>
            <seg
>il est permis d'effectuer un arrêt du système.</seg>
          </seglistitem>

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

          <seglistitem>
            <seg
><literal
>system</literal
></seg>
            <seg
>aucune condition (toujours défini dans &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
>nom</replaceable
></seg>
            <seg
>le module externe <quote
>conversation</quote
> fournit un champ de saisie éponyme.</seg>
          </seglistitem>

        </segmentedlist>


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

      <para
>De manière alternative, vous pouvez spécifier une valeur <literal
>min-screen-width</literal
> ou <literal
>min-screen-height</literal
> afin d'indiquer que certains nœuds « item » ne doivent être affichés que si la résolution d'écran est au moins de la taille spécifiée. Par exemple : <programlisting
>&lt;show min-screen-height=&quot;768&quot;/&gt;
</programlisting>
      </para>

    </sect2>

    <sect2 id="nor-act-pre-nodes">
      <title
>Nœuds normal/active/prelight</title>

      <para
>L'apparence de la plupart des types d'éléments peut être paramétrée via les balises suivantes : </para>

      <variablelist>
        <varlistentry>
          <term
><literal
>normal</literal
></term>
          <listitem>
            <para
>État normal.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term
><literal
>prelight</literal
></term>
          <listitem>
            <para
>Lorsque la souris survole l'élément.</para>
          </listitem>
        </varlistentry>
        <varlistentry>
          <term
><literal
>active</literal
></term>
          <listitem>
            <para
>Lorsqu'un bouton de souris est pressé sur l'élément.</para>
          </listitem>
        </varlistentry>
      </variablelist>

      <variablelist>

        <para
>L'ensemble exact d'attributs disponibles dépend du type d'éléments : </para>

        <varlistentry>
          <term
><literal
>rect</literal
></term>
          <listitem>
            <para>
<programlisting
>&lt;normal color=&quot;#000000&quot; alpha=&quot;0.0&quot;/&gt;
</programlisting>
Chacun des attributs peut être omis, auquel cas la valeur par défaut est utilisée (l'exemple représente les valeurs par défaut). <literal
>alpha</literal
> est un nombre à virgule flottante entre zéro (transparent) et un (opaque). <literal
>color</literal
> est un dièse suivi d'un nombre hexadécimal à six chiffres ; le format est <quote
><literal
>#</literal
><replaceable
>rrvvbb</replaceable
></quote
>. De manière alternative, <literal
>color</literal
> peut être spécifié comme un nombre hexadécimal à huit chiffres, auquel cas les deux premiers chiffres sont la valeur 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
> et <literal
>color</literal
> sont spécifiés tout comme pour les nœuds <quote
>rect</quote
>. </para>
            <para
><literal
>font</literal
> suit le format <quote
><replaceable
>liste-de-famille</replaceable
>&nbsp;<replaceable
>options-de-style</replaceable
>&nbsp;<replaceable
>taille</replaceable
></quote
>. Chaque partie est optionnelle. </para>
            <para
><replaceable
>liste-de-famille</replaceable
> est une liste de familles de polices séparées par des virgules comme <quote
>helvetica</quote
>, <quote
>monospace</quote
>, etc. </para>
            <para
><replaceable
>options-de-style</replaceable
> est une liste de mots clés séparés par des virgules et faisant partie des catégories style, poids et élasticité ; au plus un de chaque catégorie. Le style peut être <literal
>normal</literal
>, <literal
>italic</literal
> ou <literal
>oblique</literal
>. Le poids peut être <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
>. Les élasticités permises sont parmi <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
> et <literal
>ultra-expanded</literal
>. </para>
            <para
><replaceable
>taille</replaceable
> est soit un nombre à virgule flottante représentant la taille en points (1/72 pouce), soit un entier suivi de <literal
>px</literal
> représentant la taille en pixels. Indiquer des tailles en points est préférable, car elles sont indépendantes de la résolution d'affichage. </para>
            <para
>Si l'un de ces attributs n'est pas spécifié, les valeurs du <link linkend="style-nodes"
>nœud de style</link
> sont utilisées. Si ceci n'amène à aucune spécification de couleur de texte de fenêtre, le blanc est utilisé. La police par défaut est celle configurée dans &kdmrc;. </para>
          </listitem>
        </varlistentry>

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

            <para
><literal
>file</literal
> spécifie le fichier contenant l'image. Les emplacements relatifs le sont par rapport au dossier du thème. </para>

            <para
><literal
>element</literal
> spécifie l'identifiant d'élément d'un fichier SVG. S'il est vide, le rendu de l'ensemble de l'image SVG sera effectué. </para>

            <para
>Pour les nœuds <literal
>pixmap</literal
>, &kdm; tente d'abord d'ouvrir un fichier dont le nom correspond à <replaceable
>nom-de-base</replaceable
><literal
>-</literal
><replaceable
>largeur</replaceable
><literal
>x</literal
><replaceable
>hauteur</replaceable
><literal
>.</literal
><replaceable
>extension</replaceable
> en se fondant sur le nom de fichier spécifié, de telle sorte que l'image de meilleure qualité pour une résolution donnée puisse être utilisée. </para>

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

            <para
><literal
>scalemode</literal
> spécifie comment ajuster la taille des images qui ne correspondent pas à la taille de l'élément. <literal
>free</literal
> (valeur par défaut) signifie de simplement mettre à l'échelle l'image à la bonne taille, ce qui peut distordre son ratio d'aspect. Les deux autres modes conservent le ratio d'aspect de l'image : <literal
>fit</literal
> signifie de redimensionner l'image à la taille maximale tenant dans la géométrie de l'élément. L'image sera centrée. La zone restante ne sera pas colorée par cet élément, elle devrait donc être placée au-dessus d'un <literal
>rect</literal
> rempli en solide (« solid-filled »). <literal
>crop</literal
> signifie de redimensionner l'image à la taille minimale tenant complètement dans la géométrie de l'élément. L'image sera rognée de manière symétrique. </para>

            <para
><literal
>tint</literal
> et <literal
>alpha</literal
> forment une spécification de couleur comme pour les nœuds <literal
>rect</literal
>. Chaque pixel de l'image est multiplié par cette couleur, eu égard au composant. </para>
          </listitem>
        </varlistentry>

      </variablelist>

    </sect2>

    <sect2 id="style-nodes">
      <title
>Nœuds de style d'un élément graphique</title>

      <para
>Cette balise permet de changer l'apparence d'étiquettes et d'éléments graphiques Qt widgets incrustés dans le thème, par exemple des zones de saisie sur une ligne, des boutons ou la liste d'utilisateurs. Les paramètres de style sont hérités par les nœuds enfants, mais ceci peut être outrepassé individuellement. Les valeurs par défaut sont celles configurées dans &kdmrc;. </para>

      <para
>L'attribut <literal
>font</literal
> définit la police de caractères pour tous les éléments graphiques. Pour les éléments graphiques ayant une fonction de saisie, il peut être outrepassé par l'attribut <literal
>edit-font</literal
>. Les police de caractères sont spécifiées de la même manière que dans les <link linkend="nor-act-pre-nodes"
>nœuds normal/active/prelight</link
>. </para>

      <para
>De manière usuelle, le moteur de thèmes s'efforce de supprimer tous les cadres des éléments graphiques Qt, de telle sorte qu'ils fusionnent de façon transparente dans le même thème. Dans les cas où ceci ne serait pas désiré, l'attribut <literal
>frame</literal
> peut être défini à <literal
>true</literal
>. </para>

      <para
>Il est possible de spécifier presque l'entière palette de couleurs pour les éléments graphiques, tel que documenté sur le <ulink type="http" url="http://doc.trolltech.com/4.3/qpalette.html"
>site de Trolltech</ulink
>. Les noms d'attributs sont composés à partir d'une étendue, d'un rôle de couleurs et d'un suffixe. Les étendues possibles sont - dans l'ordre de priorité croissante - <literal
>all-</literal
> pour tous les groupes de couleurs, pas d'étendue pour les groupes de couleurs actifs et inactifs et <literal
>active-</literal
>, <literal
>inactive-</literal
> et <literal
>disabled-</literal
> pour le groupe de couleurs respectif. Les rôles de couleurs sont <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
> et <literal
>button-text</literal
>. Le suffixe peut être <literal
>-color</literal
> ou <literal
>-alpha</literal
> avec comme signification respective la même que pour les <link linkend="nor-act-pre-nodes"
>nœuds normal/active/prelight</link
>. </para>

      <para
>Exemple : <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œuds de couleur de zone de sélection d'avatar</title>

      <para
>Les nœuds de couleur permettent d'outrepasser la couleur d'arrière-plan des éléments de la zone de sélection d'avatar. <literal
>labelcolor</literal
> et <literal
>altlabelcolor</literal
> sont essentiellement et respectivement équivalents à <literal
>all-base-color</literal
> et <literal
>all-alternate-base-color</literal
> dans les <link linkend="style-nodes"
>nœuds de style</link
>. Si seulement <literal
>labelcolor</literal
> est spécifié, l'alternance d'arrières-plans d'éléments est désactivée. </para>

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

    <sect2 id="text-nodes">
      <title
>Nœuds de texte</title>

      <para
>Les balises de texte sont utilisées par les étiquettes. Elles peuvent être utilisées pour afficher du texte localisé ainsi (si l'attribut <literal
>xml:lang</literal
> est omis, la locale POSIX est supposée) : <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
>Les nœuds de texte peuvent contenir les séquences de caractères spéciaux suivantes, qui seront interprétées comme suit : </para>

      <segmentedlist>
        <?dbhtml list-presentation="table"?>
        <segtitle
>Séquence</segtitle
><segtitle
>Expansion</segtitle>

        <seglistitem>
          <seg
>%%</seg>
          <seg
>Un caractère « % »</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%c</seg>
          <seg
>Une horloge avec temps et date</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%d</seg>
          <seg
>Nom de l'affichage (variable d'environnement <envar
>DISPLAY</envar
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%h</seg>
          <seg
>Nom d'hôte (résultat de <function
>gethostname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%m</seg>
          <seg
>Nom de machine (partie <structfield
>machine</structfield
> du résultat de <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%n</seg>
          <seg
>Nom de nœud (partie <structfield
>nodename</structfield
> du résultat de <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%o</seg>
          <seg
>Nom de domaine (résultat de <function
>getdomainname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%r</seg>
          <seg
>Nom de version (partie <structfield
>release</structfield
> du résultat de <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%s</seg>
          <seg
>Nom de système (partie <structfield
>sysname</structfield
> du résultat de <function
>uname</function
>)</seg>
        </seglistitem>

        <seglistitem>
          <seg
>%t</seg>
          <seg
>Nombre de secondes restantes avant que la connexion temporisée soit effectuée, auquel est ajouté la forme plurielle i18n adéquate de <quote
>seconde</quote
></seg>
        </seglistitem>

        <seglistitem>
          <seg
>%u</seg>
          <seg
>Nom d'utilisateur pour la connexion temporisée</seg>
        </seglistitem>

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

        <seglistitem>
          <seg
>_</seg>
          <seg
>A pour effet de définir le caractère suivant comme accélérateur clavier</seg>
        </seglistitem>

      </segmentedlist>

      <para
><literal
>%t</literal
> et <literal
>%u</literal
> sont destinés à être utilisés seulement en interne afin d'afficher le message <literal
>timed-label</literal
>, qui est automatiquement mis à jour chaque seconde. </para>
    </sect2>

    <sect2 id="stock-nodes">
      <title
>Nœud « stock »</title>

      <para
>Certaines étiquettes localisées communes peuvent être spécifiées via les étiquettes « stock ». L'étiquette <literal
>text</literal
> est ignorée si l'étiquette <literal
>stock</literal
> est utilisée. Vous devriez réellement utiliser les étiquettes « stock » plutôt que de simplement placer toutes les traductions dans les thèmes. Ceci amène à de meilleurs temps de chargement et très certainement à de meilleures traductions. Les valeurs suivantes sont valables : </para>

      <segmentedlist>
        <?dbhtml list-presentation="table"?>
        <segtitle
>Type</segtitle
><segtitle
>Expansion</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
>Le verrouillage majuscule est activé</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>chooser</seg>
          <seg
><quote
>Sélecteu_r XDMCP</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>quit</seg>
          <seg
><quote
>_Quitter</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>disconnect</seg>
          <seg
><quote
>Déconn_ecter</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>halt</seg>
          <seg
><quote
>Étei_ndre</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>language</seg>
          <seg
><quote
>Lan_gue</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>login</seg>
          <seg
><quote
>_Connexion</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>session</seg>
          <seg
><quote
>_Type de session</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>reboot</seg>
          <seg
><quote
>Re_démarrer</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
>L'utilisateur %u se connectera dans %t</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>domain-label</seg>
          <seg
><quote
>_Domaine :</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>username-label</seg>
          <seg
><quote
>_Nom d'utilisateur :</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>password-label</seg>
          <seg
><quote
>_Mot de passe :</quote
></seg>
        </seglistitem>
        <seglistitem>
          <seg
>welcome-label</seg>
          <seg
><quote
>Bienvenue sur %h</quote
></seg>
        </seglistitem>

      </segmentedlist>

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

    <sect2 id="buddy-nodes">
      <title
>Nœud compagnon</title>

      <para
>Les éléments ne causant pas directement une action peuvent être assignés à un nœud compagnon. Le focus est mis au niveau du nœud compagnon lorsque l'élément est activé (cliqué ou un accélérateur de <literal
>label</literal
> est pressé). </para>

      <para
>Le nœud compagnon est référencé par un identifiant avec l'attribut <literal
>idref</literal
>. Manifestement, il doit recevoir un identifiant. Par exemple : <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>