Ajouter de nouveaux greffons à Inkscape

modifier

Le système de greffons d'Inkscape (Inkscape Extensions) est aujourd'hui principalement basé sur le langage Python et contient également quelques scripts en Shell (Bash) et en Perl ; il y a un exemple en Ruby, mais je ne suis pas sûr qu'il soit utilisé, un greffon portant le même nom existant en python. Un système de greffons utilisant le langage Ruby avait été mis en place il y a quelques années, mais n'est pas maintenu à ce jour.

Pour ce qui est de python, jusqu'à la version 0.45.1 d'Inkscape, la bibliothèque pyXML est utilisée pour la gestion du XML, mais a partir de la 0.46 (qui doit sortir début 2008), la bibliothèque lxml la remplace ; celle-ci est plus performante, plus légère et mieux documentée que pyXML (qui a l'air abandonnée).

Les modules d'extension d'Inkscape sont composés de 2 fichiers :

Fichier .inx

modifier

Le fichier .inx contient la description de ce dont a besoin le greffon :

  • le nom du script dans le menu extensions, et le sous menu auquel il est rattaché,
  • les arguments dont le script a besoin ainsi que leur type,
  • l'interpréteur de commande utilisé par le script,
  • l'emplacement et le nom du script sur disque.

Fichier de script

modifier

Il récupère les arguments fournis par inkscape dans l'architecture XML du fichiers SVG.

Par exemple en python :

 class Project(inkex.Effect):
     def __init__(self):
         inkex.Effect.__init__(self)
     def effect(self):
         if len(self.options.ids) < 2:
             inkex.debug("Requires two selected paths. The second must be exactly four nodes long.")
             sys.exit()

La class projet contient la méthode Effect qui sera appelé avec les options ; cet extrait est tiré du greffon perspective.py qui a besoin de 2 arguments.

Liens externes

modifier