Page 1 sur 1

ouvrir une fenêtre de sélection de fichier (filepicker)

Publié : 05 mai 2004, 17:55
par pcdingo
Bonjour,

Je suis en train de me mettre à la programmation XUL en me programmant une petite application, grâce à différents tuturiaux que j'ai pu voir sur le net dont xulplanet j'ai pu pas mal avancer, cependant j'ai un problème lorsque je souhaite ouvrir une boite de dialogue de sélection de fichier.
Pour ce faire j'ai trouvé et utilisé le code suivant :

Code : Tout sélectionner

function selectFile()
{
var nsIFilePicker = Components.interfaces.nsIFilePicker;
var fp = Components.classes["@mozilla.org/filepicker;1"].createInstance(nsIFilePicker);
fp.init(window, "Select a File", nsIFilePicker.modeOpen);
fp.appendFilters(nsIFilePicker.filterXML | nsIFilePicker.filterAll);
var res=fp.show();
if (res==nsIFilePicker.returnOK){
  var thefile=fp.file;
}
}
Je ne comprends pas pourquoi mais j'obtiens avec ce code toujours l'erreur suivant :
Erreur : uncaught exception: Permission refusée d'obtenir la propriété UnnamedClass.classes
Par cette erreur j'ai l'impression qu'il ne comprend pas la première ligne, peut être y a t'il une bibliothèque à indiquer :?: ajouter quelque chose dans le fichier Xul :?:

Publié : 05 mai 2004, 18:33
par nmoreau
Il faut enregistrer ton application dans le chome et l'appeler avec une url du type chrome://

Tu peux aussi essayer d'ajouter cette ligne :

Code : Tout sélectionner

netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
Ca te demandera une confirmation pour utiliser cette application avec certains privilèges

Publié : 05 mai 2004, 19:38
par pcdingo
Merci nmoreau ça marche en ajoutant la ligne que tu m'as indiqué :)
Par contre pour ce qui est d'enregistrer l'application dans le chrome je c pas trop comment on fait? ça serait cool si on pouvait me donner une petite piste.
Pour l'instant j'ai mon fichier Xul et quelques js dans le répertoire /monappli/content/monappli

Publié : 05 mai 2004, 19:44
par chBok
Tu peux faire une inscription "manuelle" dans le répertoire chrome (global ou local), mais ce n'est pas très simple. :?

Ou alors, tu tentes de te faire un petit XPI en créant un install.js adapté. Ce n'est pas si compliqué et ca remplit les fichiers manifest de chrome plus simplement.

J'ai fait quelques traductions sur le sujet à partir du site de xulplanet.

Publié : 05 mai 2004, 19:48
par pcdingo
Ok chBok je vois ce qu'il faut faire, par contre j'en déduis donc que pour faire une appli Xul même si elle n'est qu'au stade du développement il faut l'enregistrer soit manuellement soit en faisant un fichier xpi,
dans le cas contraire on as pas accés au XPCOM c'est bien ça :?:

Merci pour toutes ces réponses rapide , peut être que plus tard je ferai une extension pour la communauté :wink:

Publié : 05 mai 2004, 19:53
par chBok
Pour être franc, j'ai essayé manuellement, mais c'est usant quand tu formes mal les balises <rdf>.
J'ai donc récupré une extension qui fonctionne, j'ai pompé le fichier install.js, hacké le tout, et j'ai fait ma propre installation.

En revanche, je te conseille de faire une extension sur un profil tout neuf, et de faire l'installation sur ce profil et non en global... juste au cas où :D

Publié : 05 mai 2004, 20:39
par pcdingo
ok merci chBok, sont malins les gros lézards on dirait ;)

Publié : 06 mai 2004, 00:01
par chBok
pcdingo a écrit :ok merci chBok, sont malins les gros lézards on dirait ;)
Pas tant que ca, car après je n'arrive guère à développer un embryon d'extension sans erreurs. Il faut dire aussi que je mets toujours la barre un peu haute, et peu de temps à y consacrer.

Par ex :arrow: comment mettre un évènement sur un objet browser (en gros, un onglet) pour qu'il exécute un script dès que le code html est chargé, et pas forcément ses dépendances comme les images... :roll:

Publié : 06 mai 2004, 01:35
par pcdingo
mouais tu débutes aussi donc on dirait? :wink:
Pour ton pb j'ai n'ai pas encore vu ce genre d'objet, je pense à onload pour ton pb mais bon ça doit pas être ça...
J'espère que tu vas trouver ta réponse ;)

Publié : 06 mai 2004, 10:07
par chBok
Je pensais à un addEventListener("onload", ...) mais je n'ai pas encore testé. Si quelqu'un connait la réponse, je prends :wink: