ShareazaRemoteSkinning/fr: Difference between revisions
No edit summary |
No edit summary |
||
(9 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
{{Languages|ShareazaRemoteSkinning}} | {{Languages|ShareazaRemoteSkinning}} | ||
{{Updated|08 mai 2014| 2.7.x.0}} | |||
= Création d'un thème pour la télécommande = | |||
== Préambule == | |||
Commençons par une analogie... | |||
Imaginons que la télécommande de Shareaza est en fait une tête de "''Monsieur Patate''". | |||
Placez une image de fond pour le visage puis avec des ancres (comme indiqué dans la section [[Skinning.windowSkins/fr#<anchors>|<anchors>]]) placez tous les médias ainsi que la partie bande passante comme vous <em>placeriez les yeux, le nez et la bouche de Monsieur Patate</em>... | |||
< | A partir de la télécommande, on peut contrôler la lecture des médias (musique; vidéo) et les fonctions de bande passante. La télécommande est entièrement personnalisable et peut inclure autant de fonction de shareaza que l'on souhaite. | ||
< | |||
Ce tutoriel vous accompagnera pas-à-pas dans la construction d'un thème pour la télécommande. Mais pour cela, il est préférable d'avoir certaine connaissances de base dans construction de thème. Avant de commencer, prenez le temps de lire les rubriques [[Skinning_tutorial/fr#Le "Manifest"|'''manifest''']], l'élément [[Skinning.windowSkins/fr|<windowSkins>]]. | |||
Vous pourrez à tout moment revenir sur les différents [[Skinning_tutorial/fr#Les éléments d'un thème|<ins>éléments</ins>]] constituant un thème en vous rendant sur la [[Skinning_tutorial/fr|page principale]] de la thématisation de Shareaza. | |||
Ici, un rappel | Cela dit, si vous vous sentez près à faire le "grand" plongeon, ce tutoriel indique les éléments dont vous avez besoin. C'est parti ! | ||
* '''name''' = Le nom | |||
* '''author''' = | ==Manifest== | ||
* '''description''' = Une longue description | Avant d'ajouter [[Skinning.windowSkins/fr#<anchors>|des points d'attache]] et des [[Skinning.windowSkins/fr#<parts>|pièces]], votre fichier XML devrait ressembler à celui-ci : | ||
* '''link''' = | |||
* '''email''' = | <?xml version="1.0" encoding="UTF-8"?> | ||
* '''version''' = | <skin xmlns="http://shareaza.sourceforge.net/schemas/Skin.xsd" version="1.0"> | ||
* '''type''' = | <manifest name="Ma télécommande" | ||
* '''language''' = Inclure seulement si le type (ci-dessus) est "language". Il indique le code de langage que la traduction fournit (exemple " | author="Mon pseudonyme" | ||
description="télécommande personnalisée" | |||
link="http://shareaza.sourceforge.net/" | |||
email="Monadresse@email.com" | |||
version="1.0" | |||
type="skin" | |||
language="fr" | |||
/> | |||
<windowSkin> | |||
<windowSkin> | |||
</windowSkin> | |||
</windowSkins> | |||
</skin> | |||
Ici, il est recommandé de copier cela dans un fichier texte et de modifier le manifeste. | |||
Un rappel de ce qu'est un '''[[Skinning_tutorial/fr#Le "Manifest"|'''manifest''']]''' : | |||
* '''name''' = Le nom du thème. | |||
* '''author''' = Nom ou pseudonyme de l'auteur du thème. | |||
* '''description''' = Une (longue) description du thème. | |||
* '''link''' = Votre site internet (Optionnel). | |||
* '''email''' = Votre adresse email, afin de vous contacter pour plus d'informations (Optionnel). | |||
* '''version''' = La version de révision du thème. | |||
* '''type''' = Indiquer "skin" sur ce tag, à moins de réaliser un thème linguistique (traduction) ou il faut indiquer "language". | |||
* '''language''' = Inclure ce tag seulement si le type (ci-dessus) est "language". Il indique le code de langage que la traduction fournit (exemple "fr" pour français), ou pour spécifier le langage utilisé par la télécommande. | |||
==Intégration== | |||
Ensuite, vient le fond d'image, voici les étapes : | Ensuite, vient le fond d'image, voici les étapes : | ||
# Entrer le chemin où se trouve l'image *.bmp (bitmaps). | |||
# Entrer le chemin de la fenêtre concernée par l'image = "CremoteWnd" (la télécommande). | |||
# Etablir l'image de fond ("Background"), sous la forme [[Skinning.windowSkins/fr#<anchors>|x, y, taille, hauteur]]'''. | |||
< | <?xml version="1.0" encoding="UTF-8"?> | ||
<skin xmlns="http://shareaza.sourceforge.net/schemas/Skin.xsd" version="1.0"> | |||
<manifest name="Ma télécommande" | |||
author="Mon pseudonyme" | |||
description="télécommande personnalisée" | |||
link="http://shareaza.sourceforge.net/" | |||
email="Monadresse@email.com" | |||
version="1.0" | |||
type="skin" | |||
language="fr" | |||
/> | |||
<windowSkin> | |||
<windowSkin> | |||
<image type="image" path="MyRemote.bmp"/> | |||
<target window="CRemoteWnd"/> | |||
<parts> | |||
<part name="Background" rect="0,0,341,125"/> | |||
</parts> | |||
</windowSkin> | |||
</windowSkins> | |||
</skin> | |||
=== | ===Anchors (Ancres ou point d'attache)=== | ||
Maintenant que la télécommande à un fond, vous voulez peut-être ancrer quelques boutons | Maintenant que la télécommande à un fond, vous voulez peut-être ancrer quelques boutons ? Sur la droite ? | ||
Les ancres indiquent où doivent être affichés les différents parties du thèmes, tels que les boutons. | |||
C'est l'élément [[Skinning.windowSkins/fr#<anchors>|anchor]] qui assure cette fonction en indiquant la position relative au fond (<ins>x, y, taille, hauteur</ins>) des objets à incorporer dans le thème. | |||
Ci-dessous une liste des objets à [[Skinning.windowSkins/fr#<anchors>|ancrer]] : | |||
{| border="0" cellspacing="0" cellpadding="5" style="background-color:#FFFFC0" | |||
|- | |||
|'''<ins>Ancres</ins>''' | |||
|'''<ins>Description</ins>''' | |||
|- | |||
|StatusText | |||
|L'endroit où est affiché le titre du fichier média, le temps écoulé, bande-passante, etc. | |||
|- | |||
|History | |||
|L'endroit où sont montrés les niveaux de bande-passante | |||
|- | |||
|FlowTx | |||
|Le taux d'envois | |||
|- | |||
|FlowRx | |||
|Le taux de téléchargement | |||
|- | |||
|MediaSeekTrack | |||
|Glissière "seek" pour le média | |||
|- | |||
|MediaVolTrack | |||
|Glissière de volume | |||
|- | |||
|ScalerTrack | |||
|Glissière de limitation de la bande-passante | |||
|- | |||
|MediaStatePlaying | |||
|Pictogramme "Lecture" du média. | |||
|- | |||
|MediaStatePaused | |||
|Pictogramme "pause" du média. | |||
|- | |||
|MediaStateStopped | |||
|Pictogramme "stop" du média. | |||
|- | |||
|_ID_TRAY_OPEN | |||
|Ouvre Shareaza quand il est minimisé dans la barre de tâches | |||
|- | |||
|_ID_MONITOR_CLOSE | |||
|Ferme la télécommande. | |||
|- | |||
|_ID_NETWORK_SEARCH | |||
|Ouvre un onglet de recherche. | |||
|- | |||
|_ID_TOOLS_DOWNLOAD | |||
|Ouvre la fenêtre de téléchargement. | |||
|- | |||
|_ID_TAB_LIBRARY | |||
|Ouvre la bibliothèque | |||
|- | |||
|_ID_MEDIA_PLAY | |||
|Bouton lecture. | |||
|- | |||
|_ID_MEDIA_PAUSE | |||
|Bouton pause | |||
|- | |||
|_ID_MEDIA_STOP | |||
|Bouton stop | |||
|- | |||
|_ID_MEDIA_PREVIOUS | |||
|Bouton précédent | |||
|- | |||
|_ID_MEDIA_NEXT | |||
|Bouton suivant | |||
|- | |||
|_ID_MEDIA_MUTE | |||
|Bouton muet | |||
|} | |||
=== | N'importe quelle fonction de shareaza peut être ancrée sur la télécommande. | ||
Pour trouver plus de fonction il suffit d'ouvrir le fichier "[[http://sourceforge.net/p/shareaza/code/HEAD/tree/trunk/Languages/default-en.xml default-en.xml]]". Il se trouve dans le dossier (par défaut) C:/Program files/Shareaza/Skins/Languages. | |||
A quoi ressemble la section "Anchors" ? Jetez-y un coup d'oeil : | |||
<anchors> | |||
<anchor name="StatusText" rect="69,46,262,20"/> | |||
<anchor name="History" rect="70,27,208,13"/> | |||
<anchor name="FlowTx" rect="292,27,12,13"/> | |||
<anchor name="FlowRx" rect="319,27,12,13"/> | |||
<anchor name="MediaSeekTrack" rect="71,67,232,12"/> | |||
<anchor name="MediaVolTrack" rect="162,91,64,17"/> | |||
<anchor name="ScalerTrack" rect="71,40,206,9"/> | |||
<anchor name="_ID_TRAY_OPEN" rect="8,18,48,48"/> | |||
<anchor name="_ID_MONITOR_CLOSE" rect="318,7,13,13"/> | |||
<anchor name="_ID_NETWORK_SEARCH" rect="258,83,22,22"/> | |||
<anchor name="_ID_TOOLS_DOWNLOAD" rect="280,83,22,22"/> | |||
<anchor name="_ID_TAB_LIBRARY" rect="302,83,22,22"/> | |||
<anchor name="_ID_MEDIA_PLAY" rect="20,85,30,30"/> | |||
<anchor name="_ID_MEDIA_PAUSE" rect="20,85,30,30"/> | |||
<anchor name="_ID_MEDIA_STOP" rect="55,90,20,20"/> | |||
<anchor name="_ID_MEDIA_PREVIOUS" rect="82,90,20,20"/> | |||
<anchor name="_ID_MEDIA_NEXT" rect="107,90,20,20"/> | |||
<anchor name="_ID_MEDIA_MUTE" rect="134,90,20,20"/> | |||
</anchors> | |||
===Parts (Parties ou pièces)=== | |||
Ensuite, Vous souhaitez que les boutons puissent être : haut, bas, glissants, et qu'ils soient désactivable. | Ensuite, Vous souhaitez que les boutons puissent être : haut, bas, glissants, et qu'ils soient désactivable. | ||
Voici comment ajouter des états aux boutons : | Voici comment ajouter des états aux boutons : | ||
{| border="0" cellspacing="0" cellpadding="5" style="background-color:#FFFFC0" | |||
|- | |||
|'''<ins>Parts</ins>''' | |||
|'''<ins>Description</ins>''' | |||
|- | |||
|_ID_MEDIA_STOP.'''<ins>Up</ins>''' | |||
|Le bouton "Stop" en mode "haut" (non-cliqué) | |||
|- | |||
|_ID_MEDIA_STOP.'''<ins>Hover</ins>''' | |||
|Le bouton "Stop" en mode "survole" (quand le curseur est au-dessus). | |||
|- | |||
|_ID_MEDIA_STOP.'''<ins>Down</ins>''' | |||
|Le bouton "Stop" en mode "appuyé". | |||
|- | |||
|_ID_MEDIA_STOP.'''<ins>Disabled</ins>''' | |||
|Le bouton "Stop" en mode "désactivé". | |||
|} | |||
Toutes les parties peuvent avoir ces états, lorsque la souris survole le bouton l'effet "hover" est affiché. Quand le bouton est cliqué c'est l'effet "down" qui s'affiche, etc... | |||
Bien sûr, ces pièces sont habillées seulement si une ancre l'accompagne. les parties et ancrages suivant sont requis : | |||
<anchors> | |||
<anchor name="_ID_MEDIA_STOP" rect="55,90,20,20"/> | |||
</anchors> | |||
<parts> | |||
<part name="_ID_MEDIA_STOP.Hover" rect="60,180,20,20"/> | |||
<part name="_ID_MEDIA_STOP.Down" rect="60,200,20,20"/> | |||
<part name="_ID_MEDIA_STOP.Disabled" rect="60,220,20,20"/> | |||
</parts> | |||
====Quelques astuces : ==== | |||
* Mettre les ancres "lecture" et "pause" sur le même secteur, en n'ajoutant pas l'état désactivé, donne un bouton qui va afficher la fonction "pause" quand la lecture est en cours et un bouton "lecture" quand le lecteur est en pause ou arrêtée. | |||
* Si l'état "désactivé" est exclus pour "lecture", le bouton "Lecture" va agir comme un bouton "Ouvrir fichier..." quand le lecteur média est fermé ou sans fichiers dans la liste de lecture. | |||
* Pour les parties "History" ou "Flow", utilisez "1" pour avoir une image affichée dans un état "bas" (down) et "2" pour avoir une image affichée dans un état "haut" (up). (Par exemple, bord maximal de la barre de bande passante.) | |||
Voilà à quoi votre section [[Skinning.windowSkins/fr#<parts>|parts]] (états des boutons "up", "down", "disabled", "hover") peut ressembler. : | |||
<parts> | |||
<part name="Background" rect="0,0,341,125"/> | |||
<part name="HistoryTx1" rect="6,150,208,13"/> | |||
<part name="HistoryRx1" rect="6,131,208,13"/> | |||
<part name="FlowTx1" rect="228,131,12,13"/> | |||
<part name="FlowRx1" rect="255,131,12,13"/> | |||
<part name="MediaSeekTab" rect="159,210,23,11"/> | |||
<part name="MediaSeekBar" rect="209,210,92,10"/> | |||
<part name="MediaVolTab" rect="140,210,9,17"/> | |||
<part name="MediaVolBar" rect="159,221,58,17"/> | |||
<part name="ScalerTab" rect="224,224,9,9"/> | |||
<part name="_ID_TRAY_OPEN.Hover" rect="221,147,48,48"/> | |||
<part name="_ID_TRAY_OPEN.Down" rect="269,147,48,48"/> | |||
<part name="_ID_MONITOR_CLOSE.Hover" rect="324,148,13,13"/> | |||
<part name="_ID_MONITOR_CLOSE.Down" rect="318,7,13,13"/> | |||
<part name="_ID_NETWORK_SEARCH.Hover" rect="275,114,22,22"/> | |||
<part name="_ID_NETWORK_SEARCH.Checked" rect="275,114,22,22"/> | |||
<part name="_ID_NETWORK_SEARCH.Down" rect="258,83,22,22"/> | |||
<part name="_ID_TOOLS_DOWNLOAD.Hover" rect="297,114,22,22"/> | |||
<part name="_ID_TOOLS_DOWNLOAD.Checked" rect="297,114,22,22"/> | |||
<part name="_ID_TOOLS_DOWNLOAD.Down" rect="280,83,22,22"/> | |||
<part name="_ID_TAB_LIBRARY.Hover" rect="319,114,22,22"/> | |||
<part name="_ID_TAB_LIBRARY.Checked" rect="319,114,22,22"/> | |||
<part name="_ID_TAB_LIBRARY.Down" rect="302,83,22,22"/> | |||
<part name="_ID_MEDIA_PLAY.Up" rect="140,180,30,30"/> | |||
<part name="_ID_MEDIA_PLAY.Hover" rect="0,180,30,30"/> | |||
<part name="_ID_MEDIA_PLAY.Down" rect="0,210,30,30"/> | |||
<part name="_ID_MEDIA_PAUSE.Up" rect="170,180,30,30"/> | |||
<part name="_ID_MEDIA_PAUSE.Hover" rect="30,180,30,30"/> | |||
<part name="_ID_MEDIA_PAUSE.Down" rect="30,210,30,30"/> | |||
<part name="_ID_MEDIA_STOP.Hover" rect="60,180,20,20"/> | |||
<part name="_ID_MEDIA_STOP.Down" rect="60,200,20,20"/> | |||
<part name="_ID_MEDIA_STOP.Disabled" rect="60,220,20,20"/> | |||
<part name="_ID_MEDIA_PREVIOUS.Hover" rect="80,180,20,20"/> | |||
<part name="_ID_MEDIA_PREVIOUS.Down" rect="80,200,20,20"/> | |||
<part name="_ID_MEDIA_PREVIOUS.Disabled" rect="80,220,20,20"/> | |||
<part name="_ID_MEDIA_MUTE.Hover" rect="100,180,20,20"/> | |||
<part name="_ID_MEDIA_MUTE.Down" rect="100,200,20,20"/> | |||
<part name="_ID_MEDIA_NEXT.Hover" rect="120,180,20,20"/> | |||
<part name="_ID_MEDIA_NEXT.Down" rect="120,200,20,20"/> | |||
<part name="_ID_MEDIA_NEXT.Disabled" rect="120,220,20,20"/> | |||
</parts> | |||
=== Fonts === | |||
Ensuite, il faut définir le [[Skinning.fonts/fr|texte de légende]]. Il définit la police de caractères et le style qui apparaît sur l'ancrage "'''StatusText'''". Il sera utilisé pour les titres, la durée d'une musique, la bande passante, etc... | |||
* '''face''' - Nom de la police de caractère, par exemple "'''Tahoma'''". | |||
* '''size''' - Hauteur de la police, par exemple "'''8'''" | |||
* '''weight''' - Épaisseur de la police de caractère, un nombre entre 1 et 1000, ou "'''normal'''" ou "'''bold'''" (gras). | |||
* '''Colour''' - La couleur StatusText sous forme HTML. | |||
<caption fontFace="Tahoma" fontSize="8" fontWeight="normal" colour="FFB000"/> | |||
=== Regions === | |||
Pour terminer, la télécommande peut avoir la forme que vous voulez, il suffit d'utiliser l'élément [[Skinning.windowSkins/fr#<region>|région]]. L'élément région se compose d'un ou plusieurs éléments '''<shape>''' (forme). Chacun de ces éléments représentant une forme primitive, qui peuvent être combinés ensemble en effectuant des opérations sur les ensembles pour construire une forme finale complexe. | |||
< | Voici un exemple : | ||
<region> | |||
<shape type="rectangle" rect="9,25,-11,-1"/> | |||
<shape type="roundRect" rect="0,0,-1,26" size="16,25" combine="or"/> | |||
</region> | |||
Chaque forme consécutive est combiné afin former la forme finale. | |||
====Chaque forme contient :==== | |||
=== | {| border="0" cellspacing="0" cellpadding="5" | ||
|- style="background-color:#FFFFC0" | |||
|'''forme''' | |||
|'''Description''' | |||
|- | |||
|type | |||
|Le type de forme (expliqué ci-dessous) | |||
|- | |||
|rect | |||
|Le rectangle qui forme la bordure de cette forme, dans la forme x1, y1, x2, y2. Les nombres négatifs sont en relation avec le bord droit ou le bas de la fenêtre, donc "0,0,-1,-1" va couvrir la fenêtre entière. | |||
|- | |||
|combine | |||
|Comment combiner cette forme avec la précédente. La première forme ne doit avoir d'attribut "combine". | |||
|} | |||
=== | ====Les méthodes de composition sont :==== | ||
{| border="0" cellspacing="0" cellpadding="5" | |||
|- style="background-color:#FFFFC0" | |||
|'''Méthode''' | |||
|'''Description''' | |||
|- | |||
|or | |||
|Ajouter cette forme aux précédents ("OR") | |||
|- | |||
|and | |||
|Prendre la zone de chevauchement de cette forme et les précédents ("AND") | |||
|- | |||
|xor | |||
|Prendre la zone couverte par cette forme ou l'autre, mais pas les zones de chevauchement("XOR") | |||
|- | |||
|diff | |||
|Soustraire cette forme des précédentes | |||
|} | |||
====Les types de formes possibles sont: :==== | |||
{| border="0" cellspacing="0" cellpadding="5" | |||
|- style="background-color:#FFFFC0" | |||
|'''Type''' | |||
|'''Description''' | |||
|- | |||
|rectangle | |||
|Un rectangle | |||
|- | |||
|ellipse | |||
|Une ellipse | |||
|- | |||
|roundRect | |||
|Un rectangle aux coins arrondis. Les formes de ce type doivent avoir un attribut de plus : '''size''' avec deux paramètres qui représentent la longueur et la hauteur des courbes, par exemple size="16,20" | |||
|} | |||
Il ne reste plus qu'à tester le fichier : | |||
=== | <?xml version="1.0" encoding="UTF-8"?> | ||
<skin xmlns="http://shareaza.sourceforge.net/schemas/Skin.xsd" version="1.0"> | |||
<manifest name="Ma télécommande" | |||
author="Mon pseudonyme" | |||
description="télécommande personnalisée" | |||
link="http://shareaza.sourceforge.net/" | |||
email="Monadresse@email.com" | |||
version="1.0" | |||
type="skin" | |||
language="fr" | |||
/> | |||
<windowSkins> | |||
<windowSkin> | |||
<image type="image" path="WMPRemote.bmp"/> | |||
<target window="CRemoteWnd"/> | |||
<anchors> | |||
<anchor name="StatusText" rect="69,46,262,20"/> | |||
<anchor name="History" rect="70,27,208,13"/> | |||
<anchor name="FlowTx" rect="292,27,12,13"/> | |||
<anchor name="FlowRx" rect="319,27,12,13"/> | |||
<anchor name="MediaSeekTrack" rect="71,67,232,12"/> | |||
<anchor name="MediaVolTrack" rect="162,91,64,17"/> | |||
<anchor name="ScalerTrack" rect="71,40,206,9"/> | |||
<anchor name="_ID_TRAY_OPEN" rect="8,18,48,48"/> | |||
<anchor name="_ID_MONITOR_CLOSE" rect="318,7,13,13"/> | |||
<anchor name="_ID_NETWORK_SEARCH" rect="258,83,22,22"/> | |||
<anchor name="_ID_TOOLS_DOWNLOAD" rect="280,83,22,22"/> | |||
<anchor name="_ID_TAB_LIBRARY" rect="302,83,22,22"/> | |||
<anchor name="_ID_MEDIA_PLAY" rect="20,85,30,30"/> | |||
<anchor name="_ID_MEDIA_PAUSE" rect="20,85,30,30"/> | |||
<anchor name="_ID_MEDIA_STOP" rect="55,90,20,20"/> | |||
<anchor name="_ID_MEDIA_PREVIOUS" rect="82,90,20,20"/> | |||
<anchor name="_ID_MEDIA_NEXT" rect="107,90,20,20"/> | |||
<anchor name="_ID_MEDIA_MUTE" rect="134,90,20,20"/> | |||
</anchors> | |||
<parts> | |||
<part name="Background" rect="0,0,341,125"/> | |||
<part name="HistoryTx1" rect="6,150,208,13"/> | |||
<part name="HistoryRx1" rect="6,131,208,13"/> | |||
<part name="FlowTx1" rect="228,131,12,13"/> | |||
<part name="FlowRx1" rect="255,131,12,13"/> | |||
<part name="MediaSeekTab" rect="159,210,23,11"/> | |||
<part name="MediaSeekBar" rect="209,210,92,10"/> | |||
<part name="MediaVolTab" rect="140,210,9,17"/> | |||
<part name="MediaVolBar" rect="159,221,58,17"/> | |||
<part name="ScalerTab" rect="224,224,9,9"/> | |||
<part name="_ID_TRAY_OPEN.Hover" rect="221,147,48,48"/> | |||
<part name="_ID_TRAY_OPEN.Down" rect="269,147,48,48"/> | |||
<part name="_ID_MONITOR_CLOSE.Hover" rect="324,148,13,13"/> | |||
<part name="_ID_MONITOR_CLOSE.Down" rect="318,7,13,13"/> | |||
<part name="_ID_NETWORK_SEARCH.Hover" rect="275,114,22,22"/> | |||
<part name="_ID_NETWORK_SEARCH.Checked" rect="275,114,22,22"/> | |||
<part name="_ID_NETWORK_SEARCH.Down" rect="258,83,22,22"/> | |||
<part name="_ID_TOOLS_DOWNLOAD.Hover" rect="297,114,22,22"/> | |||
<part name="_ID_TOOLS_DOWNLOAD.Checked" rect="297,114,22,22"/> | |||
<part name="_ID_TOOLS_DOWNLOAD.Down" rect="280,83,22,22"/> | |||
<part name="_ID_TAB_LIBRARY.Hover" rect="319,114,22,22"/> | |||
<part name="_ID_TAB_LIBRARY.Checked" rect="319,114,22,22"/> | |||
<part name="_ID_TAB_LIBRARY.Down" rect="302,83,22,22"/> | |||
<part name="_ID_MEDIA_PLAY.Up" rect="140,180,30,30"/> | |||
<part name="_ID_MEDIA_PLAY.Hover" rect="0,180,30,30"/> | |||
<part name="_ID_MEDIA_PLAY.Down" rect="0,210,30,30"/> | |||
<part name="_ID_MEDIA_PAUSE.Up" rect="170,180,30,30"/> | |||
<part name="_ID_MEDIA_PAUSE.Hover" rect="30,180,30,30"/> | |||
<part name="_ID_MEDIA_PAUSE.Down" rect="30,210,30,30"/> | |||
<part name="_ID_MEDIA_STOP.Hover" rect="60,180,20,20"/> | |||
<part name="_ID_MEDIA_STOP.Down" rect="60,200,20,20"/> | |||
<part name="_ID_MEDIA_STOP.Disabled" rect="60,220,20,20"/> | |||
<part name="_ID_MEDIA_PREVIOUS.Hover" rect="80,180,20,20"/> | |||
<part name="_ID_MEDIA_PREVIOUS.Down" rect="80,200,20,20"/> | |||
<part name="_ID_MEDIA_PREVIOUS.Disabled" rect="80,220,20,20"/> | |||
<part name="_ID_MEDIA_MUTE.Hover" rect="100,180,20,20"/> | |||
<part name="_ID_MEDIA_MUTE.Down" rect="100,200,20,20"/> | |||
<part name="_ID_MEDIA_NEXT.Hover" rect="120,180,20,20"/> | |||
<part name="_ID_MEDIA_NEXT.Down" rect="120,200,20,20"/> | |||
<part name="_ID_MEDIA_NEXT.Disabled" rect="120,220,20,20"/> | |||
</parts> | |||
<caption fontFace="Small Fonts" fontSize="8" fontWeight="normal" colour="FFB000"/> | |||
<region> | |||
<shape type="rectangle" rect="1,15,341,83"/> | |||
<shape type="roundrectangle" rect="319,0,332,1" combine="or" /> | |||
</region> | |||
</windowSkin> | |||
</windowSkins> | |||
</skin> | |||
< | '''<ins>Bonne chance</ins>''' ! Si vous avez des questions, ou des suggestions voir des corrections à apporter, n'hésitez pas à participer aux discussions sur le forum : [http://shareaza.sourceforge.net/phpbb/ http://shareaza.sourceforge.net/phpbb/] | ||
{{Nav2Fr|Skinning_tutorial/fr}} |
Latest revision as of 21:49, 8 May 2014
Languages: |
English • Deutsch • Español • Français • עברית • Italiano • Nederlands • Polski • Português • Русский • 中文(繁體) | e |
Updated: |
This page has been updated on 08 mai 2014 for the release of Shareaza v 2.7.x.0. | e |
Création d'un thème pour la télécommande
Préambule
Commençons par une analogie... Imaginons que la télécommande de Shareaza est en fait une tête de "Monsieur Patate".
Placez une image de fond pour le visage puis avec des ancres (comme indiqué dans la section <anchors>) placez tous les médias ainsi que la partie bande passante comme vous placeriez les yeux, le nez et la bouche de Monsieur Patate... A partir de la télécommande, on peut contrôler la lecture des médias (musique; vidéo) et les fonctions de bande passante. La télécommande est entièrement personnalisable et peut inclure autant de fonction de shareaza que l'on souhaite.
Ce tutoriel vous accompagnera pas-à-pas dans la construction d'un thème pour la télécommande. Mais pour cela, il est préférable d'avoir certaine connaissances de base dans construction de thème. Avant de commencer, prenez le temps de lire les rubriques manifest, l'élément <windowSkins>. Vous pourrez à tout moment revenir sur les différents éléments constituant un thème en vous rendant sur la page principale de la thématisation de Shareaza.
Cela dit, si vous vous sentez près à faire le "grand" plongeon, ce tutoriel indique les éléments dont vous avez besoin. C'est parti !
Manifest
Avant d'ajouter des points d'attache et des pièces, votre fichier XML devrait ressembler à celui-ci :
<?xml version="1.0" encoding="UTF-8"?> <skin xmlns="http://shareaza.sourceforge.net/schemas/Skin.xsd" version="1.0"> <manifest name="Ma télécommande" author="Mon pseudonyme" description="télécommande personnalisée" link="http://shareaza.sourceforge.net/" email="Monadresse@email.com" version="1.0" type="skin" language="fr" /> <windowSkin> <windowSkin> </windowSkin> </windowSkins> </skin>
Ici, il est recommandé de copier cela dans un fichier texte et de modifier le manifeste.
Un rappel de ce qu'est un manifest :
- name = Le nom du thème.
- author = Nom ou pseudonyme de l'auteur du thème.
- description = Une (longue) description du thème.
- link = Votre site internet (Optionnel).
- email = Votre adresse email, afin de vous contacter pour plus d'informations (Optionnel).
- version = La version de révision du thème.
- type = Indiquer "skin" sur ce tag, à moins de réaliser un thème linguistique (traduction) ou il faut indiquer "language".
- language = Inclure ce tag seulement si le type (ci-dessus) est "language". Il indique le code de langage que la traduction fournit (exemple "fr" pour français), ou pour spécifier le langage utilisé par la télécommande.
Intégration
Ensuite, vient le fond d'image, voici les étapes :
- Entrer le chemin où se trouve l'image *.bmp (bitmaps).
- Entrer le chemin de la fenêtre concernée par l'image = "CremoteWnd" (la télécommande).
- Etablir l'image de fond ("Background"), sous la forme x, y, taille, hauteur.
<?xml version="1.0" encoding="UTF-8"?> <skin xmlns="http://shareaza.sourceforge.net/schemas/Skin.xsd" version="1.0"> <manifest name="Ma télécommande" author="Mon pseudonyme" description="télécommande personnalisée" link="http://shareaza.sourceforge.net/" email="Monadresse@email.com" version="1.0" type="skin" language="fr" /> <windowSkin> <windowSkin> <image type="image" path="MyRemote.bmp"/> <target window="CRemoteWnd"/> <parts> <part name="Background" rect="0,0,341,125"/> </parts> </windowSkin> </windowSkins> </skin>
Anchors (Ancres ou point d'attache)
Maintenant que la télécommande à un fond, vous voulez peut-être ancrer quelques boutons ? Sur la droite ? Les ancres indiquent où doivent être affichés les différents parties du thèmes, tels que les boutons. C'est l'élément anchor qui assure cette fonction en indiquant la position relative au fond (x, y, taille, hauteur) des objets à incorporer dans le thème.
Ci-dessous une liste des objets à ancrer :
Ancres | Description |
StatusText | L'endroit où est affiché le titre du fichier média, le temps écoulé, bande-passante, etc. |
History | L'endroit où sont montrés les niveaux de bande-passante |
FlowTx | Le taux d'envois |
FlowRx | Le taux de téléchargement |
MediaSeekTrack | Glissière "seek" pour le média |
MediaVolTrack | Glissière de volume |
ScalerTrack | Glissière de limitation de la bande-passante |
MediaStatePlaying | Pictogramme "Lecture" du média. |
MediaStatePaused | Pictogramme "pause" du média. |
MediaStateStopped | Pictogramme "stop" du média. |
_ID_TRAY_OPEN | Ouvre Shareaza quand il est minimisé dans la barre de tâches |
_ID_MONITOR_CLOSE | Ferme la télécommande. |
_ID_NETWORK_SEARCH | Ouvre un onglet de recherche. |
_ID_TOOLS_DOWNLOAD | Ouvre la fenêtre de téléchargement. |
_ID_TAB_LIBRARY | Ouvre la bibliothèque |
_ID_MEDIA_PLAY | Bouton lecture. |
_ID_MEDIA_PAUSE | Bouton pause |
_ID_MEDIA_STOP | Bouton stop |
_ID_MEDIA_PREVIOUS | Bouton précédent |
_ID_MEDIA_NEXT | Bouton suivant |
_ID_MEDIA_MUTE | Bouton muet |
N'importe quelle fonction de shareaza peut être ancrée sur la télécommande.
Pour trouver plus de fonction il suffit d'ouvrir le fichier "[default-en.xml]". Il se trouve dans le dossier (par défaut) C:/Program files/Shareaza/Skins/Languages.
A quoi ressemble la section "Anchors" ? Jetez-y un coup d'oeil :
<anchors> <anchor name="StatusText" rect="69,46,262,20"/> <anchor name="History" rect="70,27,208,13"/> <anchor name="FlowTx" rect="292,27,12,13"/> <anchor name="FlowRx" rect="319,27,12,13"/> <anchor name="MediaSeekTrack" rect="71,67,232,12"/> <anchor name="MediaVolTrack" rect="162,91,64,17"/> <anchor name="ScalerTrack" rect="71,40,206,9"/> <anchor name="_ID_TRAY_OPEN" rect="8,18,48,48"/> <anchor name="_ID_MONITOR_CLOSE" rect="318,7,13,13"/> <anchor name="_ID_NETWORK_SEARCH" rect="258,83,22,22"/> <anchor name="_ID_TOOLS_DOWNLOAD" rect="280,83,22,22"/> <anchor name="_ID_TAB_LIBRARY" rect="302,83,22,22"/> <anchor name="_ID_MEDIA_PLAY" rect="20,85,30,30"/> <anchor name="_ID_MEDIA_PAUSE" rect="20,85,30,30"/> <anchor name="_ID_MEDIA_STOP" rect="55,90,20,20"/> <anchor name="_ID_MEDIA_PREVIOUS" rect="82,90,20,20"/> <anchor name="_ID_MEDIA_NEXT" rect="107,90,20,20"/> <anchor name="_ID_MEDIA_MUTE" rect="134,90,20,20"/> </anchors>
Parts (Parties ou pièces)
Ensuite, Vous souhaitez que les boutons puissent être : haut, bas, glissants, et qu'ils soient désactivable. Voici comment ajouter des états aux boutons :
Parts | Description |
_ID_MEDIA_STOP.Up | Le bouton "Stop" en mode "haut" (non-cliqué) |
_ID_MEDIA_STOP.Hover | Le bouton "Stop" en mode "survole" (quand le curseur est au-dessus). |
_ID_MEDIA_STOP.Down | Le bouton "Stop" en mode "appuyé". |
_ID_MEDIA_STOP.Disabled | Le bouton "Stop" en mode "désactivé". |
Toutes les parties peuvent avoir ces états, lorsque la souris survole le bouton l'effet "hover" est affiché. Quand le bouton est cliqué c'est l'effet "down" qui s'affiche, etc...
Bien sûr, ces pièces sont habillées seulement si une ancre l'accompagne. les parties et ancrages suivant sont requis :
<anchors> <anchor name="_ID_MEDIA_STOP" rect="55,90,20,20"/> </anchors> <parts> <part name="_ID_MEDIA_STOP.Hover" rect="60,180,20,20"/> <part name="_ID_MEDIA_STOP.Down" rect="60,200,20,20"/> <part name="_ID_MEDIA_STOP.Disabled" rect="60,220,20,20"/> </parts>
Quelques astuces :
- Mettre les ancres "lecture" et "pause" sur le même secteur, en n'ajoutant pas l'état désactivé, donne un bouton qui va afficher la fonction "pause" quand la lecture est en cours et un bouton "lecture" quand le lecteur est en pause ou arrêtée.
- Si l'état "désactivé" est exclus pour "lecture", le bouton "Lecture" va agir comme un bouton "Ouvrir fichier..." quand le lecteur média est fermé ou sans fichiers dans la liste de lecture.
- Pour les parties "History" ou "Flow", utilisez "1" pour avoir une image affichée dans un état "bas" (down) et "2" pour avoir une image affichée dans un état "haut" (up). (Par exemple, bord maximal de la barre de bande passante.)
Voilà à quoi votre section parts (états des boutons "up", "down", "disabled", "hover") peut ressembler. :
<parts> <part name="Background" rect="0,0,341,125"/> <part name="HistoryTx1" rect="6,150,208,13"/> <part name="HistoryRx1" rect="6,131,208,13"/> <part name="FlowTx1" rect="228,131,12,13"/> <part name="FlowRx1" rect="255,131,12,13"/> <part name="MediaSeekTab" rect="159,210,23,11"/> <part name="MediaSeekBar" rect="209,210,92,10"/> <part name="MediaVolTab" rect="140,210,9,17"/> <part name="MediaVolBar" rect="159,221,58,17"/> <part name="ScalerTab" rect="224,224,9,9"/> <part name="_ID_TRAY_OPEN.Hover" rect="221,147,48,48"/> <part name="_ID_TRAY_OPEN.Down" rect="269,147,48,48"/> <part name="_ID_MONITOR_CLOSE.Hover" rect="324,148,13,13"/> <part name="_ID_MONITOR_CLOSE.Down" rect="318,7,13,13"/> <part name="_ID_NETWORK_SEARCH.Hover" rect="275,114,22,22"/> <part name="_ID_NETWORK_SEARCH.Checked" rect="275,114,22,22"/> <part name="_ID_NETWORK_SEARCH.Down" rect="258,83,22,22"/> <part name="_ID_TOOLS_DOWNLOAD.Hover" rect="297,114,22,22"/> <part name="_ID_TOOLS_DOWNLOAD.Checked" rect="297,114,22,22"/> <part name="_ID_TOOLS_DOWNLOAD.Down" rect="280,83,22,22"/> <part name="_ID_TAB_LIBRARY.Hover" rect="319,114,22,22"/> <part name="_ID_TAB_LIBRARY.Checked" rect="319,114,22,22"/> <part name="_ID_TAB_LIBRARY.Down" rect="302,83,22,22"/> <part name="_ID_MEDIA_PLAY.Up" rect="140,180,30,30"/> <part name="_ID_MEDIA_PLAY.Hover" rect="0,180,30,30"/> <part name="_ID_MEDIA_PLAY.Down" rect="0,210,30,30"/> <part name="_ID_MEDIA_PAUSE.Up" rect="170,180,30,30"/> <part name="_ID_MEDIA_PAUSE.Hover" rect="30,180,30,30"/> <part name="_ID_MEDIA_PAUSE.Down" rect="30,210,30,30"/> <part name="_ID_MEDIA_STOP.Hover" rect="60,180,20,20"/> <part name="_ID_MEDIA_STOP.Down" rect="60,200,20,20"/> <part name="_ID_MEDIA_STOP.Disabled" rect="60,220,20,20"/> <part name="_ID_MEDIA_PREVIOUS.Hover" rect="80,180,20,20"/> <part name="_ID_MEDIA_PREVIOUS.Down" rect="80,200,20,20"/> <part name="_ID_MEDIA_PREVIOUS.Disabled" rect="80,220,20,20"/> <part name="_ID_MEDIA_MUTE.Hover" rect="100,180,20,20"/> <part name="_ID_MEDIA_MUTE.Down" rect="100,200,20,20"/> <part name="_ID_MEDIA_NEXT.Hover" rect="120,180,20,20"/> <part name="_ID_MEDIA_NEXT.Down" rect="120,200,20,20"/> <part name="_ID_MEDIA_NEXT.Disabled" rect="120,220,20,20"/> </parts>
Fonts
Ensuite, il faut définir le texte de légende. Il définit la police de caractères et le style qui apparaît sur l'ancrage "StatusText". Il sera utilisé pour les titres, la durée d'une musique, la bande passante, etc...
- face - Nom de la police de caractère, par exemple "Tahoma".
- size - Hauteur de la police, par exemple "8"
- weight - Épaisseur de la police de caractère, un nombre entre 1 et 1000, ou "normal" ou "bold" (gras).
- Colour - La couleur StatusText sous forme HTML.
Regions
Pour terminer, la télécommande peut avoir la forme que vous voulez, il suffit d'utiliser l'élément région. L'élément région se compose d'un ou plusieurs éléments <shape> (forme). Chacun de ces éléments représentant une forme primitive, qui peuvent être combinés ensemble en effectuant des opérations sur les ensembles pour construire une forme finale complexe.
Voici un exemple :
<region> <shape type="rectangle" rect="9,25,-11,-1"/> <shape type="roundRect" rect="0,0,-1,26" size="16,25" combine="or"/> </region>
Chaque forme consécutive est combiné afin former la forme finale.
Chaque forme contient :
forme | Description |
type | Le type de forme (expliqué ci-dessous) |
rect | Le rectangle qui forme la bordure de cette forme, dans la forme x1, y1, x2, y2. Les nombres négatifs sont en relation avec le bord droit ou le bas de la fenêtre, donc "0,0,-1,-1" va couvrir la fenêtre entière. |
combine | Comment combiner cette forme avec la précédente. La première forme ne doit avoir d'attribut "combine". |
Les méthodes de composition sont :
Méthode | Description |
or | Ajouter cette forme aux précédents ("OR") |
and | Prendre la zone de chevauchement de cette forme et les précédents ("AND") |
xor | Prendre la zone couverte par cette forme ou l'autre, mais pas les zones de chevauchement("XOR") |
diff | Soustraire cette forme des précédentes |
Les types de formes possibles sont: :
Type | Description |
rectangle | Un rectangle |
ellipse | Une ellipse |
roundRect | Un rectangle aux coins arrondis. Les formes de ce type doivent avoir un attribut de plus : size avec deux paramètres qui représentent la longueur et la hauteur des courbes, par exemple size="16,20" |
Il ne reste plus qu'à tester le fichier :
<?xml version="1.0" encoding="UTF-8"?> <skin xmlns="http://shareaza.sourceforge.net/schemas/Skin.xsd" version="1.0"> <manifest name="Ma télécommande" author="Mon pseudonyme" description="télécommande personnalisée" link="http://shareaza.sourceforge.net/" email="Monadresse@email.com" version="1.0" type="skin" language="fr" /> <windowSkins> <windowSkin> <image type="image" path="WMPRemote.bmp"/> <target window="CRemoteWnd"/> <anchors> <anchor name="StatusText" rect="69,46,262,20"/> <anchor name="History" rect="70,27,208,13"/> <anchor name="FlowTx" rect="292,27,12,13"/> <anchor name="FlowRx" rect="319,27,12,13"/> <anchor name="MediaSeekTrack" rect="71,67,232,12"/> <anchor name="MediaVolTrack" rect="162,91,64,17"/> <anchor name="ScalerTrack" rect="71,40,206,9"/> <anchor name="_ID_TRAY_OPEN" rect="8,18,48,48"/> <anchor name="_ID_MONITOR_CLOSE" rect="318,7,13,13"/> <anchor name="_ID_NETWORK_SEARCH" rect="258,83,22,22"/> <anchor name="_ID_TOOLS_DOWNLOAD" rect="280,83,22,22"/> <anchor name="_ID_TAB_LIBRARY" rect="302,83,22,22"/> <anchor name="_ID_MEDIA_PLAY" rect="20,85,30,30"/> <anchor name="_ID_MEDIA_PAUSE" rect="20,85,30,30"/> <anchor name="_ID_MEDIA_STOP" rect="55,90,20,20"/> <anchor name="_ID_MEDIA_PREVIOUS" rect="82,90,20,20"/> <anchor name="_ID_MEDIA_NEXT" rect="107,90,20,20"/> <anchor name="_ID_MEDIA_MUTE" rect="134,90,20,20"/> </anchors> <parts> <part name="Background" rect="0,0,341,125"/> <part name="HistoryTx1" rect="6,150,208,13"/> <part name="HistoryRx1" rect="6,131,208,13"/> <part name="FlowTx1" rect="228,131,12,13"/> <part name="FlowRx1" rect="255,131,12,13"/> <part name="MediaSeekTab" rect="159,210,23,11"/> <part name="MediaSeekBar" rect="209,210,92,10"/> <part name="MediaVolTab" rect="140,210,9,17"/> <part name="MediaVolBar" rect="159,221,58,17"/> <part name="ScalerTab" rect="224,224,9,9"/> <part name="_ID_TRAY_OPEN.Hover" rect="221,147,48,48"/> <part name="_ID_TRAY_OPEN.Down" rect="269,147,48,48"/> <part name="_ID_MONITOR_CLOSE.Hover" rect="324,148,13,13"/> <part name="_ID_MONITOR_CLOSE.Down" rect="318,7,13,13"/> <part name="_ID_NETWORK_SEARCH.Hover" rect="275,114,22,22"/> <part name="_ID_NETWORK_SEARCH.Checked" rect="275,114,22,22"/> <part name="_ID_NETWORK_SEARCH.Down" rect="258,83,22,22"/> <part name="_ID_TOOLS_DOWNLOAD.Hover" rect="297,114,22,22"/> <part name="_ID_TOOLS_DOWNLOAD.Checked" rect="297,114,22,22"/> <part name="_ID_TOOLS_DOWNLOAD.Down" rect="280,83,22,22"/> <part name="_ID_TAB_LIBRARY.Hover" rect="319,114,22,22"/> <part name="_ID_TAB_LIBRARY.Checked" rect="319,114,22,22"/> <part name="_ID_TAB_LIBRARY.Down" rect="302,83,22,22"/> <part name="_ID_MEDIA_PLAY.Up" rect="140,180,30,30"/> <part name="_ID_MEDIA_PLAY.Hover" rect="0,180,30,30"/> <part name="_ID_MEDIA_PLAY.Down" rect="0,210,30,30"/> <part name="_ID_MEDIA_PAUSE.Up" rect="170,180,30,30"/> <part name="_ID_MEDIA_PAUSE.Hover" rect="30,180,30,30"/> <part name="_ID_MEDIA_PAUSE.Down" rect="30,210,30,30"/> <part name="_ID_MEDIA_STOP.Hover" rect="60,180,20,20"/> <part name="_ID_MEDIA_STOP.Down" rect="60,200,20,20"/> <part name="_ID_MEDIA_STOP.Disabled" rect="60,220,20,20"/> <part name="_ID_MEDIA_PREVIOUS.Hover" rect="80,180,20,20"/> <part name="_ID_MEDIA_PREVIOUS.Down" rect="80,200,20,20"/> <part name="_ID_MEDIA_PREVIOUS.Disabled" rect="80,220,20,20"/> <part name="_ID_MEDIA_MUTE.Hover" rect="100,180,20,20"/> <part name="_ID_MEDIA_MUTE.Down" rect="100,200,20,20"/> <part name="_ID_MEDIA_NEXT.Hover" rect="120,180,20,20"/> <part name="_ID_MEDIA_NEXT.Down" rect="120,200,20,20"/> <part name="_ID_MEDIA_NEXT.Disabled" rect="120,220,20,20"/> </parts>
<region> <shape type="rectangle" rect="1,15,341,83"/> <shape type="roundrectangle" rect="319,0,332,1" combine="or" /> </region> </windowSkin> </windowSkins> </skin> Bonne chance ! Si vous avez des questions, ou des suggestions voir des corrections à apporter, n'hésitez pas à participer aux discussions sur le forum : http://shareaza.sourceforge.net/phpbb/
Navigation: Page d'accueil > Skinning_tutorial/fr > ShareazaRemoteSkinning/fr