Forums : Xul, Xbl, JS...

Aller à la discussion :  Plus récente Plus ancienne

# Type de chemin pour l'attribut "src" d'une image : Absolu ? Relatif ? via nsILocalFile ?

Envoyé par : Raphael

Date : 05/12/2006 16:39

Bonjour, actuellement voici mon arborescence :

chrome
|-content
| |-libs
| | |cardviewer.js
| |-cards
| | |card-001.jpg
| | |card-002.jpg
| | |...
| |main.js
| |main.xul
data
|-cards

cardviewer.js est chargé depuis main.js, chargé depuis main.xul.

Voici le code qui affiche mon image dans cardviewer.js :

var ImageLocation = "cards/" + cards[i].Reference + ".jpg";
$("card_image").setAttribute('src', ImageLocation);

Le code marche très bien, mais je voudrais ordonner un peu mieux mon arborescence et déplacer mes cartes dans /data/cards/ qui se trouve dans le répertoire d'installation (celui où se trouve mon exécutable).

  • J'ai essayé de "remonter" dans l'arborescence comme ça :
var ImageLocation = "../data/cards/" + cards[i].Reference + ".jpg";

Mais ça ne marche pas...

  • J'ai essayé d'utiliser nsILocalFile pour une URL absolue de cette manière :
var file = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("CurProcD", Components.interfaces.nsILocalFile);
file.append("data");
file.append("cards");
file.append("card-001.jpg");
var ImageLocation = file.path;
$("card_image").setAttribute('src', ImageLocation);

Là encore, sans résultats...

Est-ce que quelqu'un pourrait m'aider ? Merci d'avance.

# Re: Type de chemin pour l'attribut "src" d'une image : Absolu ? Relatif ? via nsILocalFile ?

Envoyé par : Raphael

Date : 07/12/2006 19:25

Bonjour, je me permets d'upper mon petit topic car je me pose toujours pas mal de questions concernant les chemins d'accès à utiliser pour l'attribut "src" de <image>.

De plus, je me demande également où sauvegarder mes données ? Mon logiciel utilisera une base de données et un pack d'images à inclure. Où placer tout ça pour une appli. autonome avec XulRunner ?

  • Répertoire d'installation ?
  • Profile ? Sous Linux, c'est apparement : ./username/appname/. Et sous Windows ? Où est-ce ? Mes Documents ?

Enfin voilà, mais mon principal problème reste le chemin d'accès à mes images dans l'attribut "src" de <image>.

Merci d'avance =)

# Re: Type de chemin pour l'attribut "src" d'une image : Absolu ? Relatif ? via nsILocalFile ?

Envoyé par : papy

Date : 08/12/2006 09:43

En ce qui concerne les données, dans le concept elles doivent généralement se trouver dans le profil, mais ca peut dépendre de l'utilité de ces données.

Pour la base de données, tu dois pouvoir la stocker via mozStorage, c'est prévu pour ca (ce mécanisme stocke les bases SQLite dans le profil de l'utilisateur)

Pour les images, ca dépend de ce que tu entend par

...et un pack d'images à inclure

Pour les profils, sous linux ils sont effectivement stocké dans /home/user/.mozilla/firefox/xxxxxx.default/, sous windows le système est équivalent, si je me rapelle bien ils sont stockés dans C:\Documents and Settings\User\Application Data\Mozilla\Firefox\xxxx.default (enfin quelque chose comme ca :P)

Enfin pour l'attribut src d'une image ca doit être un chemin absolu ou un chemin relatif. Dans le cas du chemin relatif, le répertoire courant est calculé à partir du fichier qui inclu l'image :

fichier chrome://monappli/content/main.xul contenant un attribut image, le chemin relatif commence à chrome://monappli/content/

# Re: Type de chemin pour l'attribut "src" d'une image : Absolu ? Relatif ? via nsILocalFile ?

Envoyé par : Raphael

Date : 08/12/2006 12:58

Ok... En fait, ma base est faite et j'y accède correctement, tout va bien de ce côté-là =)

Pour l'attribut src de image, alors apparemment ce sont des URL Chrome ? même pour XULRunner ?

Ca expliquerait pourquoi ce code ne marche pas :

var file = Components.classes["@mozilla.org/file/directory_service;1"].getService(Components.interfaces.nsIProperties).get("CurProcD", Components.interfaces.nsILocalFile);
file.append("data");
file.append("cards");
file.append("card-001.jpg");
var ImageLocation = file.path;
$("card_image").setAttribute('src', ImageLocation);

Car il me renvoie le chemin absolu "/home/user/..." et non pas le chemin absolu chrome.

Saurais-tu alors me dire comment accéder à mes images dans le répertoire que je veux ? que ce soit en absolu ou en relatif, peu m'importe pourvu que ça marche =)

# Re: Type de chemin pour l'attribut "src" d'une image : Absolu ? Relatif ? via nsILocalFile ?

Envoyé par : papy

Date : 08/12/2006 16:36

Ah oui XulRunner fonctionne avec des URL chrome. Si tu veux, ils ont extrait le moteur Gecko qui se trouve dans Firefox (ou dans Thunderbird et autre) pour faire XulRunner, à terme même Firefox et Thunderbird devraient être lancé depuis XulRunner.

Pour tes URL c'est pas très compliqué :

  • si les images se trouvent dans ton extension, tu sais ou tu les mets donc tu n'a qu'a mettre l'url comme il faut. Exemple :
+ extension
  + chrome
    + content
      - extension.xul
      + data
        - image1.png
        - image1.png

et dans le fichier extension.xul, soit en absolu

<image src="chrome://extension/content/data/image1.png"/>

soit en relatif (à vérifier que ca marche depuis une extension, en tout cas pour du remote xul c'est ok)

<image src="data/image1.png"/>
  • si les images se trouvent ailleurs quelque part sur ton disque, il faut utiliser le protocole file:// en début d'url. L'exemple suivant et pour linux, pour windows je ne sais pas comment il gère les disques (C:, D: etc...) mais c'est possible aussi, il va falloir chercher un petit peu
<image src="file:///home/user/icons/icon1.png"/>

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.