J'essaie de créer un service qui fait ce qui suit :
- Si certains dossiers/fichiers sont sélectionnés dans le Finder, copiez (tous) les chemins d'accès dans le presse-papiers.
- Si rien n'est sélectionné, copiez le "Chemin" de la fenêtre.
En fouillant et en s'inspirant de posts tels que Copie du chemin d'accès du répertoire courant dans le presse-papiers et celui de MacYourself Copier le chemin d'accès d'un fichier ou d'un dossier dans le presse-papiers sous Mac OS X Lion Je suis arrivé au point où je peux obtenir les chemins de la sélection, mais je semble être bloqué lorsque j'essaie d'obtenir le chemin de la fenêtre actuelle si la sélection est vide.
MISE À JOUR 13-Dec-2013. J'ai reçu des commentaires utiles (voir https://apple.stackexchange.com/a/113612/7488 (merci @Flavin) donc j'ai mis à jour le code avec celui ci-dessous :
on run {input, parameters}
set l to {}
tell application "Finder"
set sel to (get selection)
if not sel = {} then -- there are some file/folders selected
repeat with f in (get selection)
set end of l to POSIX path of (f as alias)
end repeat
else --no stuff is selected, get the current location path
set end of l to POSIX path of (insertion location as alias)
end if
end tell
set text item delimiters to linefeed
set the clipboard to (l as text)
end run
La logique semble solide, et cela fonctionne tant que j'ai "quelque chose" de sélectionné dans le Finder.
Je soupçonne que le service n'est pas "actif" lorsque rien n'est sélectionné (c'est-à-dire lorsque le résultat souhaité est de copier le chemin actuel dans le presse-papiers).
Dans cette situation, la fenêtre du Finder apparaît comme suit :
Mais en essayant d'activer le service, la liste des services est "vide" :
Lorsque j'ai sélectionné quelque chose, la liste des services est remplie :
Le "chemin d'accès au fichier de copie" que j'ai défini est associé aux "fichiers et dossiers" dans les préférences des services - quel est le problème ?