Envoyé par : chrislabricole
Date : 01/09/2008 19:35
Bonsoir,
Je voudrai savoir comment un fichier de préférence marche, comment le mettre en œuvre dans mon application ?
Merci à vous !
Envoyé par : Raphael
Date : 02/09/2008 07:29
Tu as énormément de Doc très bien faite sur :
C'est très simple, tu verras.
Envoyé par : chrislabricole
Date : 02/09/2008 12:16
J'ai trouvé ça : http://www.xulfr.org/xulplanet/xulqa/q_p(..)
Ça, ça explique comment définir par défaut et modifier les préférences, mais comment les faire agir ?
Genre dans mon mod, j'ai une petites icone qui est dans la barre d'état, et comment le faire afficher selon la config ?
Merci !
Envoyé par : Paul Rouget
Date : 02/09/2008 15:39
Et bien tu l'affiches si ta préférence est à true, et tu ne l'affiches pas si elle est à false.
... mais j'ai peut-être mal compris ta question.
Envoyé par : chrislabricole
Date : 02/09/2008 17:02
Ouais c'est ça, mais comment le faire afficher (ou non) selon ce true ou ce false ?
Merci :)
Envoyé par : Paul Rouget
Date : 02/09/2008 18:02
Tu passes ton élément XUL en "display: none".
Envoyé par : chrislabricole
Date : 02/09/2008 18:55
Ah ok, c'est déjà plus clair, comment mettre en œuvre cette technique ?
Il faut faire une fonction au chargement du Mod qui rajoute display:none si est égal à false, et qui rajoute rien si c'est true ? comment faire ça exactement ?
Sinon, je trouve pas de tutoriel illustrant ça...
Merci :)
Envoyé par : Paul Rouget
Date : 02/09/2008 22:23
C'est du DOM ce qu'il y a de plus classic:
tonElement[mode="invisible"] { display: none; }
Tu checkes si ta pref est à true ou pas.
if (pref == true) { tonElement.removeAttribute("mode"); } else { tonElement.setAttribute("mode", "invisible"); }
On plus directement, tu attaques le style de ton élément en JS:
tonElement.style.display = "none";
Envoyé par : chrislabricole
Date : 02/09/2008 23:59
Ah ok !
Alors j'ai tenté la solution mais ça ne marche pas, je me suis gouré quelque par :$
Voici les codes : monMod.xul (fichier principal qui appel le petit icon dans la barre de statut):
... <?xml-stylesheet href="chrome://monMod/skin/monMod.css" type="text/css"?> ... <script type="application/x-javascript" src="chrome://monMod/content/monMod.js"></script> ... <statusbar id="status-bar" mode=""> <statusbarpanel id="monMod-status" label="&monMod;" context="contextmenu"> <image id="monMod-status-image" src="chrome://monMod/skin/icon16.gif" tooltip="monMod-tooltip" ondblclick="window.openDialog('chrome://monMod/content/options.xul',null,'chrome,centerscreen').focus();" /> </statusbarpanel> </statusbar>
Fichier monMod.js :
function onAppliLoad(){ var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIProperties); if( prefs.getPrefType("extensions.urlminimizer.statusbaricon") == true ){ document.getElementById('status-bar').removeAttribute("mode"); document.getElementById('status-bar').style.display = "none"; } else { document.getElementById('status-bar').setAttribute("mode", "invisible"); document.getElementById('status-bar').style.display = "block"; } } window.onload = function() { onAppliLoad(); }
et monMod.css :
#status-bar[mode="invisible"] { display: none; }
Pour le système de configuration, c'est une autre histoire, je ferais avec about:config pour commencer :P (je sais que je dois redemarrer le navigateur pour voir le résultat puisque j'ai pas la modification du CSS en "live")
Voilà, merci de toute votre aide ! :)
Envoyé par : cokinou
Date : 03/09/2008 08:16
Je pense que tu dois jamais le voir afficher ton élément status-bar, non ?
Quand tu fais
document.getElementById('status-bar').setAttribute("mode", "invisible");
c'est équivalent à
document.getElementById('status-bar').style.display = "none";
Donc dans ta fonction tu caches l'élement via display = "none" quand ta préférence est à true et tu le cache via setAttribute("mode", "invisible") quand ta préférence est à false Il faut que tu le cache que dans un cas, via :
document.getElementById('status-bar').setAttribute("mode", "invisible"); document.getElementById('status-bar').style.display = "none";
ou plus simplement (ca suffit) :
document.getElementById('status-bar').setAttribute("mode", "invisible");
En gros ca te donnerai un truc du genre :
function onAppliLoad(){ var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIProperties); if( prefs.getPrefType("extensions.urlminimizer.statusbaricon") == true ){ document.getElementById('status-bar').removeAttribute("mode"); } else { document.getElementById('status-bar').setAttribute("mode", "invisible"); } }
Envoyé par : chrislabricole
Date : 03/09/2008 12:53
Ok, mais je viens d'y pensé, il faut également enregistrer la préférence aussi non ? sinon à chaque redémarrage de Firefox, l'icone revient... et mettre cet enregistrement dans le IF...
Sinon, j'ai un doute sur la ligne
var prefs = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIProperties);
:$
Merci beaucoup !!
Envoyé par : chrislabricole
Date : 05/09/2008 19:34
Pas de solutions ? :s
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.