Archives actuelles avec moteur de recherche
N'hésitez pas à vous inscrire à la liste : http://listes.patpro.net/mailman/listinfo/applescript_fr
Apple, AppleScript, AppleScript Studio, AppleTalk, AppleWorks, ColorSync, Finder, HyperCard, iBook, iLife, iMac, iWork, Keynote, Mac, Macintosh, Mac OS, Pages, Panther, PowerBook, Power Mac, Power Macintosh, QuickTime, Safari, Tiger, Xcode sont des marques déposées par Apple Computer, Inc., enregistrées aux Etats-Unis et dans les autres pays. Liste officielle
De : (Liste AppleScript francophone) <applescript_fr@xxxxxxx.net>
À : "(Liste AppleScript francophone)" <applescript_fr@xxxxxxx.net>
Date : samedi 23 février 2002 06:01
Objet : applescript_fr Digest #431
Liste AppleScript francophone Digest #431
1) Re: Changer l'icone d'un dossier
by "Christophe Delb@rt" <delbart.c@xxxxxxx.apple.com>
2) Re: Modifier des noms de fichier en série
by SeguS <wirinum@xxxxxxx.fr>
3) Re: Truc bizarre dans AppleScript
by "Laurent Sebilleau" <l.sebilleau@xxxxxxx.fr>
4) Re: Changer l'icone d'un dossier
by Daniel Varlet <varlet@xxxxxxx.ch>
5) Re: Changer l'icone d'un dossier
by Jean-Marie Hoornaert <jean.marie.hoornaert@xxxxxxx.be>
6) Re: Changer l'icone d'un dossier
by Daniel Varlet <varlet@xxxxxxx.ch>
7) Re: Effacer l'icône_personnalisée_d'un_fichier
by Nicolas Barbulesco <nbarbulesco@xxxxxxx.fr>
De : "Christophe Delb@rt" <delbart.c@xxxxxxx.apple.com> Date : Fri, 22 Feb 2002 08:02:33 +0100 Objet : [AS] Re: Changer l'icone d'un dossier > Bon ben comme tu avais presque fini, voilà : > > [SCRIPT] > tell application "Finder" > activate > set dossierSource to folder "ColorChoice" of desktop > set dossierCible to desktop > > set the ColorChoice to name of every folder of dossierSource > --{"Bleu", "Orange", "Rouge", "Vert", "Mauve"} > set ColoriMac to choose from list the ColorChoice with prompt ¬ > "Quelle est la couleur de l'iMac?" & return & return & > "Cliquez sur la couleur choisie. Puis cliquez sur CHOISIR." OK button > name "CHOISIR" > -- Tester le prompt pour voir si tout s'affiche !!!! > if ColoriMac is false then error number -128 > > set ColoriMac to the ColoriMac as string > get icon of folder ColoriMac of dossierSource > make folder at dossierCible with properties {name:"Documents > Serveur", icon:result} > end tell > [/SCRIPT] > > Note : > Comme souvent le Finder ne calcule pas plusieurs choses sur la même > ligne > Sans aucun avertissement, ni erreur évidemment >:-<<< !!!! > Pour ça que j'emploi result ici. Pour tronçonner la commande. > Pas d'icone créé avec : > make folder at dossierCible with properties {name:"Documents > Serveur", icon: icon of folder ColoriMac of dossierSource} > Daniel, Lorsque j'exécute le script, il me retourne une erreur "Liste vide" au niveau du "set ColoriMac".. Une idée? Autres sous-questions : - pour le "set dossier Source", mes icones se trouvent ds le dossier "Utilitaires" du dossier "Applicaiton Mac OS 9" du disque, puis-je dans ce cas écrire : set dossierSource to folder "ColorChoice" of folder "Utilitaires" of folder "Applications MAc OS 9" of startup disk - Si mon dossier cible existe déjà ds le dossier Documents.. Quelle sera la dernière ligne de cette partie du script? du genre : set icon of "Documents Serveur rouge" to icon of ColoriMac? Un tout grand merci à tous pour votre aide. Christophe
De : SeguS <wirinum@xxxxxxx.fr> Date : Fri, 22 Feb 2002 11:33:09 +0100 Objet : [AS] Re: Modifier des noms de fichier en série ==> Message de "Cilv1" du 21/02/2002 13:11 : > J'ai dans un dossier tout un stock de couvertures d'albums de BD. > Elles sont toutes de la forme "Nomdelasérie". T"Numéro". J'aimerais pouvoir > modifier tous ces noms > [...] remplacer dans tous ces noms de > fichier le ". " par un "-" par exemple une possibilité (avec OSAX ACME Script Widgets) ... [script] --OSAX ACME Script Widgets 2.5 © 1994-95 Wayne K. Walrath tell application "Finder" set a_modifier to every file of (choose folder) repeat with i in a_modifier set temp to the name of i set temp to ACME replace "." in temp with "-" set the name of i to temp end repeat end tell [/script] -- Serge Ségu wirinum@xxxxxxx.fr PGPkey : 0x30D196E9
De : "Laurent Sebilleau" <l.sebilleau@xxxxxxx.fr> Date : Fri, 22 Feb 2002 12:34:11 +0100 Objet : [AS] Re: Truc bizarre dans AppleScript Avec du retard, mais peut-être utile quand même... > À 21:08 +0100 le 19.02.2002, Nicolas Barbulesco écrivait au sujet de "[AS] > Re: Truc bizarre dans AppleScript" : > [...] >> >> Oui, ça marche, cool ! C'est étrange, comme écriture ; >> "me", c'est le script ? Ça ressemble à de la >> programmation fonctionnelle... Le script existe en >> tant que "valeur", en tant qu'"objet" ? > > Absolument. > > [SCRIPT] > script totor > property nb_blabla:0 > > on blabla() > display dialog "j'suis totor" > set nb_blabla to nb_blabla +1 > end > end > > tell totor to blabla() > nb_blabla of totor > [/SCRIPT] > >> On peut >> changer "me" ? > > essayes ;-)) > mais il faut préciser que my /of me appelle la routine du script courant > dans le cas bien particulier d'un tell. > > --- extrait de la bible ;-) > If you need to call a subroutine from within a Tell statement, you must use the > reserved words of me or my to indicate that the subroutine is part of the script > (not a command that should be sent to the object of the Tell statement). > --- > Carrément... il faut (you must...) ;-))) > > Dans d'autres cas, ça appelle l'application courante (celle qui gère le script)... > > Mais bon, j'ai l'impression de compliquer... > > A mon avis, changer "me" est impossible et n'a pas de sens. C'est une référence créée par l'environnement d'exécution qui pointe vers l'objet script en exécution. Il ne peut y en avoir qu'un (même si on ne se prend pas pour Highlander). >>Ce serait excellent, on pourrait faire >> des espèces de scripts qui se modifieraient eux-mêmes, >> donc un système qui se maintiendrait tout seul ! En >> cas de bogues identifiés, le script modifierait >> lui-même son code... Modifier le script en exécution lui-même (l'objet script pointé par me) est une idée intéressante, mais à ma connaissance Lisp est le seul langage qui permette de le faire, et ceci parce qu'il est interprété et non compilé (et comme dit Daniel, les bogues dans un programme qui se modifie lui-même, bonjour !). En effet, la compilation du script créée un code objet qui est le programme réellement exécuté, et les seules modifications que nous pouvons faire dans le cadre d'Applescript portent sur la source. Autrement dit, pour que ces modifications soient prises en compte, il faudrait que le script modifie la source, la compile, ET se relance pour recharger le nouveau code objet. > > Oui... Mais là je pense qu'il plus simple de corriger les bogues directement;-))) > > Tu peux automatiser l'écriture de scripts et les compiler. C'est ** un > peu** l'idée mise en pratique par Laurent Sebilleau il y a quelques temps... > > [...] Euh... oui. L'idée était plutôt celle d'un script principal utilisant de petits scripts annexes comme librairies d'appoint. On voit sans arrêt sur la liste des demandes pour renommer des fichiers, les ranger dans des dossiers, etc. Ce sont tous des problèmes particuliers (ce qui fait qu'aucun script tout fait ne peut les résoudre entièrement), mais ils ont tous des points communs: où aller pêcher les fichiers à traiter, où les mettre, comment traiter les conflits de noms de fichiers, et autres. Les solutions proposées sont toujours excellentes du point de vue du traitement particulier, mais laissent de côté tout l'aspect général: on met des "choose file" ou des "choose folder" qui permettent d'illustrer le traitement et de le tester, mais qui ne sont pas utilisables lorsqu'il y a 400 fichiers à traiter ou que l'on veut automatiser le traitement la nuit. L'idée était de fournir un environnement qui remplace efficacement les "choose file" dans lequel il soit possible d'insérer très facilement les traitements particuliers. Mais il semble que ce soit une idée trop compliquée. >> >> En effet. Dois-je comprendre (j'avais pas du tout >> pensé à ça) que les routines en AppleScript sont >> toutes des fonctions (= qui renvoient une valeur) et >> que les procédures n'existent pas ? A ce moment-là, >> toute routine renvoie une valeur, et quand il n'y a >> pas de return il est sous-entendu, la routine >> renvoyant alors le dernier résultat ? Dans ton >> exemple, ce n'est alors pas le set t to t+1 qui est >> important, mais le résultat t+1 ; tu aurais alors pu >> mettre set maVariableQuiSertARien to t+1, ou même t+1 >> tout court ? J'ajouterai quelque chose à la réponse de Daniel. Il est dangereux d'extrapoler des notions qui viennent d'autres langages de programmation comme la procédure et la fonction. Applescript ne connaît ni l'une ni l'autre mais seulement des "handlers" ou gestionnaires. Ceux-ci sont des fragments de code destinés à traiter des évènements ou messages. Certains évènements sont générés par l'extérieur (les Apple Events), d'autres sont engendrés par le script lui-même. Quelque chose comme: faireCeci(parm1,parm2) -- appel du gestionnaire faireCeci() est un raccourci pour l'expression complète: tell me to faireCeci(parm1,parm2) C'est donc le cas particulier d'un mécanisme plus général qui s'étend à l'ensemble des scripts et des applis accessibles. Ecrire un handler est donc écrire la réaction à un message qui peut provenir de n'importe où. Inversement, un handler peut appeler n'importe quel autre handler dans un script ou une application et modifier toute variable dont la portée est suffisante (voir la discussion sur les variables qui a eu lieu sur la liste). C'est la raison pour laquelle il faut préciser avec l'instruction tell (éventuellement sous-entendue) à qui (script ou appli) on adresse le message. En fin d'exécution, tout handler retourne un message, même si le programmeur ne l'utilise pas pour communiquer une valeur. La différence avec l'appel d'une fonction dans un langage classique est que si ce message de retour tarde trop, Applescript engendre une erreur (délai dépassé). A+ Laurent
De : Daniel Varlet <varlet@xxxxxxx.ch> Date : Fri, 22 Feb 2002 16:13:12 +0100 Objet : [AS] Re: Changer l'icone d'un dossier À 08:02 +0100 le 22.02.2002, Christophe Delb@rt écrivait au sujet de "[AS] Re: Changer l'icone d'un dossier" : (j'ai enlevé les quotes du script pour plus de lisibilité. J'ai rajouté des "¬" manquant) [SCRIPT] tell application "Finder" activate set dossierSource to folder "ColorChoice" of desktop set dossierCible to desktop set the ColorChoice to name of every folder of dossierSource --{"Bleu", "Orange", "Rouge", "Vert", "Mauve"} set ColoriMac to choose from list the ColorChoice with prompt ¬ "Quelle est la couleur de l'iMac?" & return & return &¬ "Cliquez sur la couleur choisie. Puis cliquez sur CHOISIR."¬ OK button name "CHOISIR" -- Tester le prompt pour voir si tout s'affiche !!!! if ColoriMac is false then error number -128 set ColoriMac to the ColoriMac as string get icon of folder ColoriMac of dossierSource make folder at dossierCible ¬ with properties {name:"Documents Serveur", icon:result} end tell [/SCRIPT] >> Note : >> Comme souvent le Finder ne calcule pas plusieurs choses sur la même >> ligne >> Sans aucun avertissement, ni erreur évidemment >:-<<< !!!! >> Pour ça que j'emploi result ici. Pour tronçonner la commande. >> Pas d'icone créé avec : >> make folder at dossierCible with properties {name:"Documents >> Serveur", icon: icon of folder ColoriMac of dossierSource} >> > Daniel, Voui Christophe ;-) > Lorsque j'exécute le script, il me retourne une erreur "Liste vide" au > niveau du "set ColoriMac".. Une idée? Si dossierSource (folder "ColorChoice" of desktop ) ne contient pas de dossiers, c'est normal ;-))))) Si tes icones sont, soit sur des dossiers (folders), soit sur des documents (files) ou autres, tu peux employer le terme générique du Finder pour objet : item. set the ColorChoice to name of every item of dossierSource. Il récupéra alors le nom de tous les objets visibles du dossier. Pour info : Le Finder ne laisse pas l'utilisateur gérer les invisibles sauf un dossier : Temporary Items. > Autres sous-questions : > - pour le "set dossier Source", mes icones se trouvent ds le dossier > "Utilitaires" du dossier "Applicaiton Mac OS 9" du disque, puis-je > dans ce cas écrire : > set dossierSource to folder "ColorChoice" of folder "Utilitaires" of > folder "Applications MAc OS 9" of startup disk Bien sûr. Mais tu écris 2 choses différentes : > mes icones se trouvent ds le dossier > "Utilitaires" et > set dossierSource to folder "ColorChoice" of folder "Utilitaires" Peu importe : je choisis donc le stockage des icones dans le dossier ColorChoice ;-))) voir note (*) Bien entendu, il faut que tu adaptes le script à ta configuration perso. Je précise quand même les variables : dossierSource : le dossier où sont stockés tes dossiers/fichiers avec icone perso. (dossiers/fichiers colorés) dossierCible : Le dossier (ou disque) dans lequel sera créé (ou modifié, maintenant) un nouveau dossier avec l'icone choisie par l'utilisateur. Ce sont les 2 seuls paramètres que tu as à modifier pour que ça s'adapte à tes besoins. C'est pour ça que je les ai placé en tête de script. > - Si mon dossier cible existe déjà ds le dossier Documents.. Quelle > sera la dernière ligne de cette partie du script? du genre : set icon of > "Documents Serveur rouge" to icon of ColoriMac? Notes : [ Ta référence est fausse : "Documents Serveur rouge" tout court ne veut rien dire pour le Finder. Mais c'était du genre, alors...;-) voir note (*) again Attention, le dossierCible est le dossier qui CONTIENT le dossier à modifier. Ça peut paraître inutile, mais en fait ici ça va nous servir à vérifier si le dossier à modifier existe et à le créer si nécessaire (cf plus bas la 2e version). Tiens une question : pourquoi faire choisir une couleur pour un dossier qui s'appelle déjà "Documents Serveur rouge" ? ] 2 solutions : 1) Soit tu es sûr que le dossier à modifier existe (on est jamais sûr de ce genre de chose avec les utilisateurs ;-))))) Remplace la dernière ligne --make folder at dossierCible ¬ -- with properties {name:"Documents Serveur", icon:result} par : set icon of folder "Documents Serveur rouge" of dossierCible to result Dans ce cas-là tu pourras bien entendu directement définir le dossierCible comme le dossier à modifier. en début de script : set dossierCible to folder ¬ "Documents Serveur rouge" of folder "Documents" of startup disk La dernière ligne s'écrira donc : set icon of dossierCible to result 2) Soit tu testes, et tu crées le dossier s'il n'existe pas (variante fortement conseillée) : Remplace les 2 dernières lignes (en commentaires) par : ---------------------------------------- variante 2 --get icon of folder ColoriMac of dossierSource -- make folder at dossierCible ¬ -- with properties {name:"Documents Serveur", icon:result} try get folder "Documents Serveur rouge" of dossierCible on error make folder at dossierCible ¬ with properties {name:"Documents Serveur rouge"} end set icon of result to icon of folder ColoriMac of dossierSource ---------------------------------------- Note : Ici j'ai employé result pour alléger le script (esthétique ?! ;-). Pas par obligation. > Un tout grand merci à tous pour votre aide. De rien c'est un plaisir. À plus tard. P.S. (*) Notes sur les références de type Finder (encore !!!!) : [ Tu peux même écrire plus court : set dossierSource to folder ¬ "Ton Disque:Applications (Mac OS9):Utilitaires:ColorChoice:" La partie texte ci-dessus est une référence de type nameString (ou pathString ou plus simplement chemin). C'est simplement les noms des différents éléments à parcourir en partant du disque pour arriver au fichier. Le ":" à la fin de chaque nom spécifie que c'est un dossier. Tu peux même mixer les deux références avec le Finder ( nameString incomplet avec réf. Finder) set dossierSource to folder ¬ "Applications (Mac OS 9):Utilitaires:" of startup disk Dans la pratique tu t'apercevras qu'on emploie le moins souvent possible la référence Finder qui est de type : machin of machin of truc of bidule of tartenpion of etc... D'abord parce que c'est long à écrire... et surtout parce que ce n'est PAS (ou très peu) compatible avec TOUT le reste !!!! Que se soit avec AppleScript brut ou avec d'autres applications ou Osax. Il n'y a que le Finder qui fasse bande à part comme ça pour les références de fichier (il me semble...) Je sais que c'est étonnant, car les exemples pour débutants d'Apple et même l'Éditeur de Scripts emploient la référence Finder... Si tu dois passer à d'autres commandes d'applications/Osax/AS qui nécessitent une référence à des fichiers il faut avant de sortir du Finder, convertir (coercition) les références en texte (nameString) ou alias. Vivement le tome X (3 ???) du Guide AppleScript sur les Objets et Références !!!!! Un résumé des conversions des références de fichiers (terme générique comprenant les documents, les applis, les dossiers, les fichiers alias, etc...) pouvant être faites par le Finder : Références de type -> Références de type - Finder -> nameString folder "Utilitaires" of folder ¬ "Applications MAc OS 9" of startup disk as string --> "monDisque:Applications (Mac OS 9):Utilitaires:" - Finder -> alias folder "Utilitaires" of folder ¬ "Applications MAc OS 9" of startup disk as alias --> alias "monDisque:Applications (Mac OS 9):Utilitaires:" - alias (ou file) -> Finder item (alias "monDisque:Applications (Mac OS 9):Utilitaires:") item (file "monDisque:Applications (Mac OS 9):Utilitaires:") --> folder "Utilitaires" of folder "Applications MAc OS 9" of startup disk - nameString -> Finder item "monDisque:Applications (Mac OS 9):Utilitaires:" --> folder "Utilitaires" of folder "Applications MAc OS 9" of startup disk ] -- Daniel
De : Jean-Marie Hoornaert <jean.marie.hoornaert@xxxxxxx.be> Date : Fri, 22 Feb 2002 16:54:33 +0100 Objet : [AS] Re: Changer l'icone d'un dossier le 22/02/02 16:13, Daniel Varlet a ecrit : > (*) Notes sur les références de type Finder (encore !!!!) : Merci Daniel pour cette partie plus théorique. Je n'ai jamais utilisé autre chose que "HD:Folder:File". Mais, disposer d'explications bien formulées, c'est encore mieux. -- Cordialement. Jean-Marie -HOO;-) ____________________ Courriel : jean.marie.hoornaert@xxxxxxx.be PPsP* : http://www.h2o.be Newsletter : jmh@xxxxxxx.be?subject=Infos_h2o * Page Personnelle sans Prétention * pour AppleScripter FileMaker
De : Daniel Varlet <varlet@xxxxxxx.ch> Date : Fri, 22 Feb 2002 18:47:17 +0100 Objet : [AS] Re: Changer l'icone d'un dossier À 16:54 +0100 le 22.02.2002, Jean-Marie Hoornaert écrivait au sujet de "[AS] Re: Changer l'icone d'un dossier" : > le 22/02/02 16:13, Daniel Varlet a ecrit : > >> (*) Notes sur les références de type Finder (encore !!!!) : > > Merci Daniel pour cette partie plus théorique. > Je n'ai jamais utilisé autre chose que "HD:Folder:File". > Mais, disposer d'explications bien formulées, c'est encore mieux. Fait plaisir que ça serve, et que tu me dises que c'est compréhensible. Pas écrit ça pour rien (car l'air de rien,mais ça prend pas mal de temps et oblige à un minimum de rigueur). Content. Tiens, ça me permet aussi de corriger des erreurs de typo que j'ai oublié dans la liste des conversions de références fichier : Lire "Applications (Mac OS 9)" à la place de "Applications MAc OS 9" ou vice-versa. C'est la faute à Christophe, au copié-collé non auto-correctif, à la neige qui tombe etc... ;-)))) À plus tard. -- Daniel
De : Nicolas Barbulesco <nbarbulesco@xxxxxxx.fr> Date : Sat, 23 Feb 2002 03:20:41 +0100 (CET) Objet : [AS] Re: Effacer l'icône_personnalisée_d'un_fichier > Avec le Finder : > > tell app "finder" to set icon of item monFichier > to {} > > C'est tellement simple que j'ai pas trouvé tout de > suite ;-))) Parfait, merci, c'était pile ce qu'il me fallait ! ;-) @+ Nico ___________________________________________________________ Do You Yahoo!? -- Une adresse @yahoo.fr gratuite et en français ! Yahoo! Mail : http://fr.mail.yahoo.com