Création de boutons de barre d'outils
Un article de MDC.
Cet article explique comment ajouter un bouton à la barre d'outils d'une application (comme Firefox, Thunderbird, Nvu, etc.) en utilisant la technique des overlays. Cet article s'adresse aux développeurs d'extensions connaissant les bases de XUL et CSS.
Le lecteur est supposé être familiarisé avec les bases de la création d'extensions pour Firefox et avoir fait fonctionner sa première extension. Un tutoriel vous guidant à travers le processus depuis le début est également disponible.
Sommaire |
[modifier] Création d'un overlay
Avant tout, vous devez créer un overlay pour le document qui contient la barre d'outils que vous souhaitez améliorer. Le but de ce tutoriel n'est pas d'expliquer les overlays — vous pouvez trouver de précieuses informations à ce sujet dans le Tutoriel XUL.
Pour créer un overlay sur un document, vous devez connaître son URI. Vous trouverez en bas de cette page la liste des documents où les overlays sont créés le plus fréquemment.
[modifier] Ajout d'un bouton à la barre d'outils
Les applications toolkit ont une barre d'outils personnalisable. La méthode la plus pratique dans une extension est donc d'ajouter les boutons de la barre d'outils dans la palette plutôt que de les ajouter directement dans la barre d'outils. Cette dernière option est possible mais peu recommandée et plus difficile à mettre en œuvre.
L'ajout d'un bouton à la palette de la barre d'outils est très simple. Il suffit d'ajouter ce code à l'overlay :
<toolbarpalette id="BrowserToolbarPalette">
<toolbarbutton id="myextension-button" class="toolbarbutton-1"
label="&toolbarbutton.label;" tooltiptext="&toolbarbutton.tooltip;"
oncommand="MyExtension.onToolbarButtonCommand(event);"/>
</toolbarpalette>
Notes :
- L'id de palette (BrowserToolbarPalette dans l'exemple) dépend de la fenêtre dans laquelle vous désirez ajouter un bouton. Voir ci-dessous la liste des ID de palette les plus communément utilisées.
-
class="toolbarbutton-1"permet au bouton de la barre d'outils d'apparaitre correctement en mode icône et texte. - Il faut également indiquer la commande qui doit être exécutée dans l'attribut
oncommand. Si vous avez besoin de prendre en charge le clic du milieu (roulette), vous devez ajouter la prise en chargeonclicket vérifierevent.button.
onclick: function(event) {
switch(event.button) {
case 0:
// Clic gauche
break;
case 1:
// Clic milieu
break;
case 2:
// Clic droit
break;
}
}
Pour ajouter plus de boutons, il suffit de mettre d'autres éléments <toolbarbutton> dans l'élément <toolbarpalette>.
Placez les éléments autres que des boutons de barre d'outils dans un élément <toolbaritem>.
[modifier] Application d'un style sur le bouton
Le plus souvent, les boutons ont des icônes. Pour attacher une image à un bouton, on utilise une des fonctionnalités standard de Mozilla pour le personnaliser. Si vous n'êtes pas familier avec celle-ci, lisez la section skinning de l'excellent Toolbar Tutorial de Jonah Bishop (en anglais). Bien que l'article décrive la création d'une barre d'outils complètement personnalisée plutôt que d'un simple bouton, il contient une très bonne explication des techniques que nous allons employer.
[modifier] Taille des icônes
Les boutons pour la barre d'outils peuvent avoir deux tailles différentes — grande et petite. Ceci implique que vous allez devoir fournir de icônes différentes pour chaque bouton de votre barre d'outils. Vous trouverez ci-dessous les dimensions des icônes dans diverses applications (n'hésitez pas à en ajouter d'autres) :
Application (nom du thème)</th>
<td class="header">Taille de la grande icône</th> <td class="header">Taille de la petite icône</th> |
| URL | Applications et fenêtres modifiées | Id de la palette |
|---|---|---|
| chrome://browser/content/browser.xul | Firefox - Fenêtre principale | BrowserToolbarPalette |
| chrome://messenger/content/messenger.xul | Thunderbird - Fenêtre principale | MailToolbarPalette |
| chrome://messenger/content/ messengercompose/messengercompose.xul | Thunderbird - Fenêtre de rédaction | MsgComposeToolbarPalette |
| chrome://messenger/content/addressbook/addressbook.xul | Thunderbird - Carnet d'adresses | AddressBookToolbarPalette |
| chrome://editor/content/editor.xul | Nvu - Fenêtre principale | NvuToolbarPalette |
| chrome://calendar/content/calendar.xul | Sunbird - Fenêtre principale | calendarToolbarPalette |
[modifier] Plus d'informations
- La référence XulPlanet.com :
<toolbarbutton>,<toolbaritem>. - How to adjust toolbarbutton's label position
- Une discussion sur le forum de MozillaZine (en) à propos de l'ajout d'une entrée dans la barre d'outils (et pas seulement dans la palette de personnalisation) juste après l'installation de l'extension. Notez qu'il n'est pas recommandé de le faire.
- Il existe une autre page sur MDC avec des information sur l'ajout de boutons à diverses fenêtres dans SeaMonkey. On peut également y trouver des informations utiles sur les overlays pour ChatZilla.