p
u
b
l
i
c
i
t
é
publicité
  1. #1
    Candidat au titre de Membre du Club
    Inscrit en
    octobre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 29
    Points : 11
    Points
    11

    Par défaut [pyCairo] Donner des identifiants aux éléments exportés en SVG

    Bonjour,

    Je développe un programme qui permet de générer un graphique à l'écran et de l'exporter au format SVG. Pour cela, j'utilise pyCairo.
    Je souhaiterais utiliser ce code SVG dans un site web (je l'intègre dans du code HTML5 - jusque là tout va bien), mais pour plus de convivialité, j'aimerai enrichir ce SVG avec des popups qui apparaitraient au passage de la souris.
    Pour cela, j'ai besoin d'accéder aux différents <path> du SVG (pour rajouter des "onmouseover" par exemple).
    Malheureusement, tels qu'il est exporté par pyCairo, le SVG a des <path> sans "id". Impossible de les distinguer les un des autres !

    S'il vous plait : dites moi qu'il y a une solution facile !!

  2. #2
    Expert Confirmé

    Homme Profil pro
    Inscrit en
    octobre 2008
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2008
    Messages : 2 354
    Points : 3 590
    Points
    3 590

    Par défaut

    Salut,

    Et ouvrir et réenregistrer dans un logiciel de dessin vectoriel ?

    J'utilise Inkscape où les paths ont effectivement une 'id'.

  3. #3
    Candidat au titre de Membre du Club
    Inscrit en
    octobre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 29
    Points : 11
    Points
    11

    Par défaut

    ouvrir et réenregistrer dans un logiciel de dessin vectoriel ?
    Non, ce doit être fait automatiquement par mon logiciel, lors de la création du graphique...

    Mais merci quand même pour la réponse.

  4. #4
    Expert Confirmé

    Homme Profil pro
    Inscrit en
    octobre 2008
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : octobre 2008
    Messages : 2 354
    Points : 3 590
    Points
    3 590

    Par défaut

    Ce n'est pour autant pas impossible, dans le cas d'Inkscape justement.

    On peut l'utiliser en ligne de commande et donc via subprocess().

    Voir le man d'inkscape.

  5. #5
    Candidat au titre de Membre du Club
    Inscrit en
    octobre 2007
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : octobre 2007
    Messages : 29
    Points : 11
    Points
    11

    Par défaut

    Il aura fallu du temps pour que ça murisse, mais je vais enfin pouvoir classer cette discussion dans la catégorie [résolu].

    Voici comment j'ai procédé, ça peut paraitre tordu, mais ça fonctionne comme je le souhaitais.

    1) Au moment de dessiner les objets à rendre "interactifs" (surbrillance, lien, popup), je relève un point caractéristique du rectangle qui constitue l'objet, ou bien je crée un rectangle "transparent".

    Les coordonnées de point caractéristique apparaissent "en clair" dans le fichier .svg. Il suffit alors :
    2) de parser le document :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    from xml.dom.minidom import parse
            doc = parse(fichier.svg)
    3) de rechercher parmi tous les éléments svg de type ceux qui commencent par les coordonnées des points caractéristiques des objets à rendre "interactifs".

    4) et en manipulant ces éléments SVG on peut faire plein de choses :
    rajouter des filtres, des attributs du type "onmouseover", des liens hypertexte .......

    5) et bien sûr, il faut sauvegarder tout çà avec un petit Résultat : si on fait ça au moment de sauvegarder le fichier .svg, c'est complètement transparent pour l'utilisateur.



    Je pense que le "langage" SVG mériterait une rubrique à part entière chez Developpez.com.

    A la prochaine.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Passer des valeurs aux éléments d'un contrôle
    Par alex_noox dans le forum Silverlight
    Réponses: 10
    Dernier message: 16/07/2008, 19h27
  2. Compatibilité des appels aux éléments de formulaire
    Par speedev dans le forum JavaScript
    Réponses: 15
    Dernier message: 02/07/2008, 16h14
  3. [OpenOffice][Texte] donner des valeurs aux champs utilisateurs sans insertion
    Par cpf2006 dans le forum OpenOffice & LibreOffice
    Réponses: 2
    Dernier message: 18/06/2008, 15h01
  4. [drag drop] donner des propriétés à un élément ?
    Par Merfolk dans le forum JavaScript
    Réponses: 1
    Dernier message: 21/12/2007, 14h28
  5. [Debug]Donner des noms aux thread lors du débugage
    Par jeje99 dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 21/12/2005, 16h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo