Extention : boite de dialogue pour le choix d'un fichier

Asked by Hans-Karl

Bonjour à tous,

Je prépare une extention pour gérer des fichiers CSV contenant (entre autres) des coordonnées de points (x et y) et afficher un plan. Le fichier est généré par un tachéomètre. Rien ne fonctionne encore pour le moment. Pour le fichier INX, j'indique en toute lettre le chemin où se trouve mon fichier CSV (/home/.../TEST.csv).

J'ai cherché dans la documentation et je n'ai pas trouvé comment faire apparaitre la boite de dialogue comme on peut la voir quand on fait 'Fichier'>'Ouvrir'. Quelqu'un sait-il comment faire apparaitre cette fenêtre de choix ?

Ma config :
Fedora 11
Inkscape 0.47

Merci pour votre attention,

Jean-Charles

Question information

Language:
French Edit question
Status:
Solved
For:
Inkscape Edit question
Assignee:
No assignee Edit question
Solved by:
jazzynico
Solved:
Last query:
Last reply:
Revision history for this message
jazzynico (jazzynico) said :
#1

Bonjour Jean-Charles,

Il me semble qu'il n'existe pas de module gérant cela pour les extensions du menu Extension.
Par contre certaines extensions, utilisées non pas dans ce menu mais directement pour les importations et exportations savent le faire (dans les listes déroulantes de type de fichier des boîtes de dialogue qui apparaissent lorsque vous choisissez Fichier>Importer ou Fichier>Enregistrer sous).

Pour transformer votre extension classique en extension d'import, il faut changer les lignes suivantes dans le fichier inx :

  <effect>
    <object-type>all</object-type>
  </effect>

par (par exemple) :

  <input>
      <extension>.csv</extension>
      <mimetype>text/csv</mimetype>
      <_filetypename>Comma Separated Values (*.csv)</_filetypename>
      <_filetypetooltip>x and y values for total station import</_filetypetooltip>
  </input>

puis modifier un peu le fichier inx et le fichier py pour que le fichier utilisé soit celui passé par la boîte d'importation.
Pour cette dernière étape, je vous conseille de regarder comment ça marche avec d'autres extensions de ce type (dxf_input, par exemple). N'ayant jamais expérimenté cette technique, je ne peux hélas pas vous aider beaucoup plus.

Bonne soirée.

Revision history for this message
Hans-Karl (jchbraun) said :
#2

Bonjour,

L'idée de passer par 'Fichier'>'Importer' me plait, mais ce système est plutôt reservé aux fichiers qui ont des spécifications standards bien établies. Or, mon fichier CSV contient : numéro de point, coord. X, coord. Y, coord. Z (juste indicatif) et enfin un code (numérique) qui identifie le point en tant que début de courbe, fin de courbe, point intermédiaire ou encore point isolé. Selon ce code, la courbe peut se refermer sur elle-même ou non, etc. Ce dernier numéro ajouté est destiné à identifier la nature de l'objet relevé en topographie et ce sont les personnes qui manipulent l'appareil qui le déterminent.

Je pense que je vais rester sur l'idée d'une extension accessible depuis le menu 'Extension' pour le moment (quand on a l'habitude du terminal, ce n'est pas gênant d'enter le chemin complet à la main). Mais un de mes objectifs est aussi de présenter à l'écran les points uniquement, sans polylignes. Quand le système sera au point, on pourra sûrement en reparler.

Merci et bonne journée.

Revision history for this message
Best jazzynico (jazzynico) said :
#3

Bonjour,

> L'idée de passer par 'Fichier'>'Importer' me plait, mais ce système est plutôt reservé aux fichiers
> qui ont des spécifications standards bien établies.

C'est vrai surtout pour les extensions qui ont vocation à être largement distribuées ou complètement intégrées dans l'outil. Ce qui pourrait être la cas, par exemple, s'il s'agissait d'un importateur « générique » de fichiers csv, un peu comme avec les applications de type tableurs (avec prévisualisation des colonnes, des en-têtes, etc.). Cependant, dans la limite où vous la réalisez pour un besoin personnel, vous pouvez faire comme bon vous semble.

Bonne journée.

Revision history for this message
Hans-Karl (jchbraun) said :
#4

Thanks JazzyNico, that solved my question.