Appli: scriptable recordable

tabliertablier Membre
17:24 modifié dans API AppKit #1
  ??? A vous tous, j'aimerais bien savoir:
lorsque vous faites une appli cocoa, vous la rendez scriptable? recordable? ou vous ne vous préoccupez jamais de cela?

nota:
scriptable -> controlable par un script AppleScript
recordable -> l'appli se contrôle elle-même par des scripts ce qui permet à  l'éditeur de script d'enregistrer les actions successives.

Réponses

  • CéroceCéroce Membre, Modérateur
    17:24 modifié #2
    A priori, en utilisant les bindings, il y aurait juste à  définir le dictionnaire pour rendre l'appli scriptable, mais j'avoue ne l'avoir jamais fait. C'est le genre de trucs qu'on envisage à  la version 3.0...

    Je ne dis pas que l'ouverture à  l'extérieur n'est pas intéressante, mais je préfère utiliser un format de fichier bien organisé, style XML, ce qui procure déjà  beaucoup de possibilités. D'autant plus que je n'ai jamais aimé AppleScript, aussi bien sa syntaxe que ses abstractions trop poussées, qui rendent finalement tout très compliqué.
  • tabliertablier Membre
    17:24 modifié #3
    Désolé, j'étais absent.
    Oui pour rendre une application scriptable c'est assez simple. Il faut concevoir un dictionnaire et les handlers qui vont avec. L'enregistrement par le "system event" est automatique sous 10.5.
    Si beaucoup d'applications sont scriptables, j'en trouve peu de "recordable". Le Finder bien sur! mais à  part lui?
    Quand à  la syntaxe d'AppleScript, elle est parfois pénible, même si elle est proche de l'anglais.

    Par contre je ne vois pas la relation avec un format de fichier. Le sujet est le contrôle d'une application par une autre application. Je ne vois pas comment faire cela avec un fichier.
  • 17:24 modifié #4
    Tiens d'ailleurs, pour une fois je me préocupe de la possibilité de rendre mon Application contrôlable via AppleScript  :o
    J'ai un peu la flemme de lire la doc Apple à  ce sujet.. tout simplement parce que je la trouve un peu mal foutu sur ce sujet là .. un peu bordélique surtout..
    Bref si quelqu'un a un article assez compact sur comment rendre son appli scriptable :)
  • tabliertablier Membre
    17:24 modifié #5
    Eh bien je suis en train d'écrire un tuto en français la-dessus, mais je vais doucement car je me bats avec la doc (abstruse ou absconde au choix) et les exemples. Pour faire une appli scriptable, il y a quand même beaucoup de choses à  connaitre (AppleScript, AppleEvents, le system Event  ...).
    De plus, je suis à  la retraite et ce n'est pas ma priorité.
    Je pense quand même que c'est un plus de faire des applications scriptables.
  • CéroceCéroce Membre, Modérateur
    17:24 modifié #6
    dans 1246109602:

    Par contre je ne vois pas la relation avec un format de fichier. Le sujet est le contrôle d'une application par une autre application. Je ne vois pas comment faire cela avec un fichier.


    La relation c'est que, très souvent, les scripts servent à  modifier des documents. Plutôt que de demander à  l'appli de modifier son document, il peut être pratique de modifier directement le document sur le disque. Par exemple, un document XML s'édite facilement avec Python, qui est un langage à  la fois plus avancé et plus simple qu'AppleScript.
  • tabliertablier Membre
    17:24 modifié #7
      ??? Utiliser AppleScript et les AppleEvents pour modifier des fichiers, c'est possible, mais très très réducteur!

    Exemple d'utilisation d'AppleScript et des AppleEvents: le projet "Incremental"  (Archiveur/Contrôleur d'archivage).
    Garder une trace de tout les fichiers reçus, Archiver les nouveaux fichiers sauf s'ils étaient déja archivés. La solution a donc été de faire une appli qui contrôle le "Finder" pour obtenir les caractéristiques des nouveaux fichiers, qui contrôle "CDFinder" pour la partie catalogue et les comparaisons catalogues-nouveaux_fichiers, et  qui contrôle "Toast" pour la partie gravure de l'archivage.
    La première réalisation était en AppleScript Studio! ça marche, mais les syntaxes AS évoluent et je n'étais pas très satisfait!
    La dernière version est en Objective-C et les échanges avec les applis extèrieures sont des AppleEvents, donc du C.

    Je ne suis pas sur que l'on puisse faire cela avec Python (je n'ai rien contre les serpents alors je vais me renseigner. Site conseillé SVP, Merci)
  • CéroceCéroce Membre, Modérateur
    17:24 modifié #8
    dans 1246297451:

      ??? Utiliser AppleScript et les AppleEvents pour modifier des fichiers, c'est possible, mais très très réducteur!


    Peut-être, mais il me semble que c'est tout de même souvent à  cela que ça sert. Les possibilité sont en effet potentiellement très étendues; cependant, les appli sont scriptables depuis 1993 (!) et cette fonctionnalité est toujours autant sous-utilisée. Et la raison principale, c'est AppleScript.

    dans 1246297451:

    Je ne suis pas sur que l'on puisse faire cela avec Python (je n'ai rien contre les serpents alors je vais me renseigner. Site conseillé SVP, Merci)

    À ma connaissance, il n'existe pas de bibliothèque Python pour gérer les AppleEvents. Au mieux, tu peux utiliser le bridge Python/ObjC pour utiliser les classes de Cocoa.
  • AliGatorAliGator Membre, Modérateur
    17:24 modifié #9
    Perso, j'ai jamais utilisé AppleScript pour modifier des documents.
    Je l'ai plutôt utilisé pour générer automatiquement des événements, trier automatiquement mes contacts du carnet d'adresses selon des critères un peu capilotractés, renommer automatiquement mes contacts pour qu'ils soient tous en minuscule au lieu de majuscule, ou renommer des fichiers en série pour qu'ils aient tous le même format de nom, appliquer des règles Mail, faire des actions de dossier, ... et j'en passe.

    Et pour ces cas là  je vois mal comment j'aurais pu faire avec autre chose qu'AppleScript... ou alors si, certainement, par exemple pour renommer mes contacts mais en étudiant alors le format des VCard, vérifiant la cohérence entre les UUID utilisés dans le carnet d'adresse et ceux de la base et de la VCard, effectuer une règle pour transformer mon contenu de la VCard en majuscule sans se gourrer de ligne à  modifier, etc... J'aurais mis 10x plus de temps pour avoir une solution faisant la même chose que mes 5 ou 10 lignes d'AppleScript.

    Je ne dis pas qu'AS est la solution à  tout, mais ça dépanne quand même bien, ponctuellement. Et dans certains cas c'est bien pratique et facile d'accès.
  • tabliertablier Membre
    17:24 modifié #10
      ::) ça me parait la bonne utilisation d'AppleScript!
    Savez-vous que toute application Cocoa est toujours un minimum scriptable ? AppKit.framework place une suite "minimum" dans l'exécutable (quit, open, reopen,...), mais n'ajoute pas de dictionnaire! Une appli peut recevoir des AppleEvents sans forcément avoir un dictionnaire, hé oui!
    En fait, ce qui m'intéresse ce sont les AppleEvents. Et AppleScript est un moyen simple de générer des AEv.
Connectez-vous ou Inscrivez-vous pour répondre.