Scripter avec Smile

Transcription

Scripter avec Smile
Scripter avec Smile
Satimage-software
www.satimage-software.com
c 2004 Satimage (France)
Copyright 28 juillet 2005
satimage - 1 avenue des prés - 94260 fresnes - france
Ph. +33.1.46.15.92.92 – Fax +33.1.46.15.92.99
[email protected] - www.satimage-software.com
sarl satimage – société d’application du traitement d’image – rcs créteil b 383 200 573
1
2
Table des matières
1 Introduction
3
2 Scripter dans Smile
2.1 L’interpréteur AppleScript . . . . . . . . . . . . . . . . . . . .
2.2 Le contexte persistant . . . . . . . . . . . . . . . . . . . . . .
2.3 Suivre l’exécution . . . . . . . . . . . . . . . . . . . . . . . . .
3
3
4
5
3 Confort et productivité
3.1 La fenêtre Worksheet . . . .
3.2 Ouvrir un dictionnaire. . . .
3.3 Rechercher une définition . .
3.4 Récupérer un chemin d’accès
3.5 Recherche de texte . . . . .
3.6 Comparaison de fichiers . .
3.7 Créer ses bibliothèques . . .
.
.
.
.
.
.
.
6
6
6
7
7
7
8
8
.
.
.
.
9
9
10
10
11
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4 Applets et scripts compilés
4.1 La fenêtre de script . . . . . . . . . . . . .
4.2 Enregistrer un script . . . . . . . . . . . .
4.3 Enregistrer une applet ou un droplet . . .
4.4 Enregistrer un script sans son code source
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Scripter avec Smile
1
3
Introduction
Smile est un environnement intégré pour AppleScript. Smile offre les fonctions suivantes :
– un éditeur de scripts,
– un éditeur d’interface graphique,
– une bibliothèque graphique,
– un environnement interactif de visualisation de données scientifiques
(SmileLab).
Ce document présente les fonctionnalités de Smile en tant qu’éditeur de
scripts1 .
2
Scripter dans Smile
2.1
L’interpréteur AppleScript
La première fonctionnalité fondamentale de Smile, qui va améliorer considérablement votre expérience de la programmation AppleScript, est son
interpréteur pour AppleScript.
Chaque fenêtre de texte2 — en plus de fonctionner comme une fenêtre
normale d’édition — est un interpréteur pour AppleScript appelé terminal
AppleScript. Quand on tape la touche Enter (non pas Retour Chariot) Smile
compile et exécute à la volée l’instruction courante ou le bloc d’instructions
sélectionnées dans un terminal AppleScript.
Par défaut, Smile envoie le résultat du script (s’il y a lieu) dans un terminal AppleScript spécial, la fenêtre Console3 .
L’autre possibilité est d’avoir le résultat ajouté à la suite du texte de la
fenêtre. Ceci peut être pratique pour ré-utiliser immédiatement le résultat
d’une instruction (comme dans une calculette). Le menu Script > Sortie dans
la Console vous permet de choisir entre ces deux possibilités.
Ainsi, les terminaux AppleScript permettent de scripter interactivement.
Ceci est particulièrement utile dans les phases de test et de mise au point.
Une fois votre script au point vous en ferez par exemple une “applet”, ce qui
1
Ce document n’est pas un manuel AppleScript. Concernant AppleScript veuillez vous
référer à la documentation officielle de Apple.
2
Les terminaux AppleScript sont blanches.
3
Smile crée automatiquement une fenêtre Console quand c’est nécessaire.
4
est expliqué plus loin.
2.2
Le contexte persistant
La seconde fonctionnalité fondamentale de Smile, qui rend particulièrement intuitive la programmation dans Smile, c’est que Smile maintient
en permanence un contexte global, et que les instructions qu’on exécute dans
une terminal AppleScript s’exécutent dans ce contexte.
Une variable définie dans un terminal AppleScript est persistante : elle
reste définie jusqu’à ce qu’on quitte Smile. C’est ce qui permet d’exécuter (et
donc de rédiger) un script pas à pas.
Par exemple, pour modifier la valeur d’une variable, il suffit d’exécuter —
dans n’importe quel terminal AppleScript — l’instruction suivante.
Example 1
set myVariable to 2
De même à tout moment vous pourrez lire le contenu de la variable en
exécutant :
Example 2
myVariable
-- 2
Les procédures compilées dans un terminal AppleScript sont également persistantes, et elles sont disponibles de partout.
Example 3
on bip()
beep 2
end bip
Une fois ce bloc sélectionné et compilé comme indiqué ci-dessus, la procédure
peut être invoquée par :
Example 4
bip() -- "bip bip"
C’est ce mécanisme qui va vous permettre d’enrichir votre environnement de
programmation (voir section 3.7).
Remarque : pour accéder depuis une procédure à une variable définie au
préalable il faut la déclarer explicitement comme globale.
Example 5
Scripter avec Smile
5
on bip()
beep myVariable
end bip
-- compile mais échoue à l’exécution :
-- "La variable myVariable n’est pas définie"
Example 6
on bip()
global myVariable
beep myVariable
end bip
-- correct
2.3
Suivre l’exécution
L’exécution ligne à ligne n’est pas toujours possible (ou pratique). Par
exemple on perd le fil dès qu’une ligne appelle une procédure ou quand on
rencontre une structure de boucle repeat.
Smile ne propose pas à proprement parler de débogueur. Smile met à votre
disposition un jeu de quelques fonctions destinées à la mise au point. Les
fonctions les plus pratiques sont quietmsg(s)4 et postit s, qui chacune affichent leur paramètre s, respectivement à la suite de la Console et dans une
fenêtre flottante.
Le paramètre s doit être une expression AppleScript qu’AppleScript peut traduire (coercer) en chaı̂ne de caractères (string). Si ce n’est pas le cas, utilisez
la commande display de Smile, qui traduit pratiquement toute expression
en une string.
Example 7
quietmsg(display thefiles)
repeat with f in thefiles
try
-- process f
postit (f & " ok")
on error errstr
quietmsg(f & " : " & errstr)
4
quietmsg est la version “discrète” de msg qui, elle, met la fenêtre Console au premier
plan.
6
end try
end repeat
Dans cet exemple postit va permettre de suivre le déroulement de la boucle
et quietmsg va enregistrer tous les cas problématiques. Si la liste thefiles
est longue, ceci sera beaucoup moins fastidieux que de suivre pas à pas le
programme.
3
Confort et productivité
3.1
La fenêtre Worksheet
Smile ouvre automatiquement un terminal AppleScript nommée
Worksheet. Cette fenêtre s’enregistre automatiquement quand on quitte
Smile, dans le dossier ∼/Library/Application Support/Smile/. Utilisez-la
comme bloc-notes personnel pour y stocker par exemple des fragments de
script utiles.
3.2
Ouvrir un dictionnaire. . .
Dans Smile, les dictionnaires AppleScript s’ouvrent dans des fenêtres de
texte qui possèdent un menu Index.
Ce menu propose la liste des Suites AppleScript, des verbes (ou AppleEvents)
et des Classes. Pour afficher la liste en ordre alphabétique, déroulez le menu
avec la touche option enfoncée.
Le sous-menu Fichier > Ouvrir un dictionnaire. . . permet d’ouvrir rapidement certains dictionnaires.
– AppleScript : ouvre le dictionnaire de base d’AppleScript
– Scripting additions, (sous-menu) : affiche la liste des Compléments de
pilotage qui sont installés
– la liste des applications scriptables qui sont lancées
– System Events : une application en tâche de fond qui propose un ensemble de commandes utiles concernant notamment les fichiers.
Pour ouvrir le dictionnaire d’une application qui n’est pas lancée, déposez
son icône sur l’icône de Smile ou utilisez les deux premières lignes du sousmenu Fichier > Ouvrir un dictionnaire. . . :
Scripter avec Smile
7
– Navigateur. . . : permet de choisir parmi toutes les applications scriptables disponibles (comme dans l’Editeur de Scripts d’Apple)
– Autres. . . : ouvre le dialogue standard d’ouverture (qui s’affiche plus
rapidement).
3.3
Rechercher une définition
Pour trouver la définition d’un terme, sélectionnez-le à l’écran puis choisissez Trouver la définition dans le menu contextuel (ctrl-click). Ceci fonctionne
sur les verbes (ex. write), sur les noms de Classe (ex. window) et sur les
commandes appartenant à une bibliothèque AppleScript (ex. msg). Smile recherche tout d’abord dans son propre dictionnaire, puis dans le dictionnaire
de base d’AppleScript et dans les dictionnaires des Compléments de pilotage
installés.
Si Smile trouve la définition, il ouvre le ou les dictionnaires correspondants
et vous montre la ou les définitions.
Suivant ce qui est disponible dans le système d’Aide, le menu contextuel peut
proposer d’autres options.
3.4
Récupérer un chemin d’accès
On peut récupérer le chemin d’accès d’un fichier à l’aide de la souris : il
suffit de déposer son icône sur un terminal AppleScript. Avec la touche shift
vous récupérez le chemin POSIX.
3.5
Recherche de texte
Smile dispose d’un dialogue de recherche complet. Outre les fonctions
habituelles de recherche vous pouvez utiliser des fonctions avancées.
Recherche dans un dossier
Avec le dialogue Recherche vous pouvez effectuer une recherche dans tout
un dossier : cochez la case Recherche dans un dossier puis au moyen du menu
choisissez un dossier.
Smile examinera5 tous les fichiers de texte et tous les scripts compilés (et
applets) contenus dans le dossier ou dans des sous-dossiers.
5
Pour interrompre la recherche utilisez la touche esc, ou fermez la fenêtre de Résultats.
8
Une fenêtre nommée Résultats de la recherche affiche le suivi de la recherche
dans sa barre supérieure et, dans son contenu, le résultat de la recherche.
Pour chaque occurrence la fenêtre affiche deux lignes : la première est une
instruction destinée à ouvrir le fichier concerné. La seconde affiche la ligne
où la chaı̂ne a été trouvée.
Example 8
show "Macintosh HD :Users :mimi :Documents :Urgent" selection
1330, 1339
- acheter 2000 licences pour smilelab
Pour afficher la chaı̂ne trouvée, cliquez dans la ligne show... puis appuyez
sur la touche Enter.
Regular expressions
Si vous cochez “regexp” dans le dialogue de Recherche, la chaı̂ne de recherche est traités comme une “Regular expression” : la plupart des caractères
conservent leur signification usuelle, mais certains (les “méta-caractères”)
prennent un sens spécial qui permet de définir des recherches plus sophistiquées. La syntaxe des Regular expressions dans le dialogue de Recherche
est identique à celle des commandes find text et change du Complément
de pilotage Satimage6 , qui est documenté séparément.
3.6
Comparaison de fichiers
La commande menu Edition > Comparer (raccourci : cmd-K) lance la comparaison des deux fenêtres situées au premier plan. La comparaison débute
dans chacune des deux fenêtres au point d’insertion courant et sélectionne le
premier bloc différent. Pour passer à la différence suivante, taper de nouveau
cmd-K.
3.7
Créer ses bibliothèques
Smile offre un mécanisme qui permet de charger des bibliothèques
AppleScript au lancement. Tout fichier texte placé dans le dossier Class
scripts/Context additions est compilé et chargé au moment où Smile
6
Remarque : certaines fonctionnalités des Regular expressions ne peuvent s’utiliser que
par script.
Scripter avec Smile
9
se lance. Il est conseillé de stocker ses bibliothèques personnelles dans le
domain utilisateur, c’est-à-dire dans le dossier :
∼/Library/Application Support/Smile/Class scripts/Context
additions/
4
Applets et scripts compilés
Pour un certain nombre d’usages, un script sous la forme d’un fichier
texte ne convient pas. C’est le cas notamment pour réaliser une application
AppleScript autonome (“applet” ou “droplet”). On peut aussi avoir besoin
de scripts sous forme compilée : par exemple pour les “Folder actions” de
du Système et de Smile7 .
Finder et pour les menus
Ce sont les “fenêtres de script” de Smile qui vous permettent d’éditer ces
scripts compilés, applets et droplets.
4.1
La fenêtre de script
Quand vous ouvrez un script compilé, une applet ou un droplet dans
Smile, son script s’ouvre dans une “fenêtre de script” (avec un fond coloré).
Les fenêtres de script de Smile fonctionnent comme les fenêtres de l’Editeur
de Scripts d’Apple.
Pour créer une nouvelle fenêtre de script utilisez Fichier > Nouveau script. Le
menu Handlers visible dans la fenêtre affiche la liste des procédures présentes
dans la fenêtre8 (utilisez la touche option pour afficher la liste en ordre alphabétique).
Pour afficher (resp. supprimer) le menu Handlers utilisez la commande
menu Script > Liste des commandes. Notez que les terminaux AppleScript
supportent également le menu Handlers.
Pour travailler dans une fenêtre de script, on utilise d’une par les commandes destinées à l’édition de texte habituelle, et également l’ensemble des
commandes spécifiques qui se trouvent dans le menu Script.
7
Le menu
affiche le contenu des dossiers User scripts de Smile. Pour ajouter
des scripts personnels il est conseillé de créer un dossier User scripts dans le dossier
∼/Library/Application Support/Smile/.
8
Vous pouvez faire afficher des lignes supplémentaires dans le menu Handlers : toute
ligne dans la fenêtre qui commence par -- mark affiche la suite de la ligne dans le menu.
10
– Exécuter le script tente de compiler puis d’exécuter tout le script de
la fenêtre de premier plan. Le résultat de l’exécution, s’il y en a un,
s’affiche dans la fenêtre Console.
Pour interrompre le déroulement du script utilisez le raccourci cmd-.
(point) ou la touche esc.
– Vérifier la syntaxe tente de compiler le script de la fenêtre active. Dans
une fenêtre de script, la touche Enter a le même effet que la commande
Vérifier la syntaxe.
4.2
Enregistrer un script
Pour enregistrer un script utilisez l’une des commandes Enregistrer ou
Enregistrer sous. . . du menu Fichier. Si la fenêtre n’a encore jamais été enregistrée, ou si vous utilisez la commande Enregistrer sous. . . , un menu Format
dans le dialogue d’enregistrement vous propose différentes options. Si vous
choisissez l’option par défaut, Document, (ce qui signifie script compilé standard) vous pouvez choisir d’enregistrer sous l’un des deux formats supportés :
– pour obtenir un document compatible avec les OS pré-X, ne donnez
pas d’extension au nouveau nom de fichier,
– pour obtenir un fichier stocké comme “data” seulement, compatible
uniquement avec OSX, ajoutez explicitement l’extension .scpt à la fin
du nom du fichier.
4.3
Enregistrer une applet ou un droplet
Les applets et les droplets sont des applications autonomes qu’AppleScript peut créer à partir de votre script. Pour enregistrer un script en tant
qu’applet choisissez l’option Format > Application dans le dialogue d’enregistrement9 .
Quand on la lance, une applet exécute sa procédure run (ou sans nom), puis
elle quitte. Pour réaliser une applet qui reste lancée après avoir exécuté sa
procédure run (qui peut d’ailleurs être vide), sélectionnez l’option Format >
Application de tâche de fond au moment de l’enregistrer. En effet, une applet
est elle-même une application scriptable et n’importe quel script peut appeler
ses procédures au moyen de la construction tell ... end tell.
9
Comme dans l’Editeur de Scripts d’Apple, si le script contient une procédure open
Smile enregistrera le script comme droplet.
Scripter avec Smile
4.4
11
Enregistrer un script sans son code source
Les trois dernières lignes du menu Format du dialogue d’enregistrement
permettent d’enregistrer le script comme “non-éditable” c’est-à-dire sans le
source. Une fois un script enregistré de la sorte on ne pourra plus récupérer
le code source : veillez à en conserver une copie éditable.

Documents pareils