Drag'n'Drop avec Tkdnd

 

Miko

Les Bwidgets permettent le drag'n'drop (glisser-deplacer), seulement, d'après ce que j'ai compris à l'intérieur d'une même application. N'hésitez pas à me contredire, je me trompe souvent...

Tkdnd http://sourceforge.net/project/showfiles.php?group_id=13167 permet, lui, le drag'n'drop inter-applications, il n'est malheureusement pas supporté sur Mac, mais fonctionne sous Unix et Windows.

Utilisation
Après avoir téléchargé et installé les binaires pour votre plateforme, un simple
 package require tkdnd

vous fournira les fonctions.

Les types de données qu'il est possible de glisser-deplacer sont:

text/plain qui correspond à des données purement ASCII

text/plain;charset=UTF-8 qui vous permettra de récupérer des chaînes de caractères au format UTF-8

text/uri-list permet de récupérer une liste de noms de fichiers.

FILENAME sous Windows ou FILE_NAME sous Unix vous permettra de récupérer un nom de fichier.

Exemple
Avec un éditeur de texte dont le widget texte est .text et ou vous avez pris soin de coder une proc "ChargerTexte" qui reçoit en argument un nom de fichier, il vous suffit de coder:
 dnd bindtarget .text FILENAME <Drop> {ChargerTexte %D}

pour pouvoir glisser-déplacer de l'explorateur Windows dans votre éditeur. Evitez bien évidemment de glisser un fichier binaire dans un éditeur de texte, à moins d'en avoir implémenté la gestion...

Si l'application source le permet, vous pouvez également glisser du texte en codant:

 dnd bindtarget .text text/plain <Drop> {.text insert end %D}

Ceci fonctionne par exemple avec WordPad.

Et voilà une fonction supplémentaire pour la Wish List d'Editt 1.0.10...:-)