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.