Aller au contenu


Photo

Swift applescriptable


  • Please log in to reply
6 replies to this topic

#1 sigma6

sigma6

    Macfr addict

  • Membres
  • PipPipPipPipPip
  • 960 Messages :
  • Sexe:Masculin
  • Localisation:GVA
  • Passions:Bof...

Posté 12 août 2015 - 11:19

Salut l'équipe

 

J'aimerais pouvoir donner du contrôle applescript/javascript à une de mes applis (codée en swift) histoire de pouvoir facilement la contrôler depuis ical ou n'importe quoi d'autre en fait.

 

J'ai trouvé un début de piste ici: http://www.objc.io/i...scripting-data/

 

Mais c'est pour de l'objective-c et je n'arrive pas à faire pareil avec swift… 

 

J'ai une classe avec plein de méthodes qui font pile poil ce que je cherche à contrôler mais je n'arrive pas à faire le liens entre le .sdef et ma classe… Une idée?

 

Merci!



#2 jp

jp

    Touriste

  • Modérateurs
  • PipPipPipPipPipPipPipPipPip
  • 6 564 Messages :
  • Configuration:N/A
  • Sexe:Masculin
  • Localisation:Créteil

Posté 12 août 2015 - 17:54

Salut sigma6 ! C'est une bonne question ça :P

 

Est ce que tu as essayé de préfixé ta classe avec le token "@objc" pour dire au compilo que ta classe Swift est aussi une classe Objective-C ? J'ai pas essayé, mais comme l'API s'attend à une classe OC, j'imagine que ça doit être requis.

 

-- Edit

 

Quoi que ta / tes classes qui prennent en charge les messages AS doivent hériter de "FSAppleScriptCommand" normalement, donc le "@objc" doit être implicite.

 

Je vais essayer sur un petit projet vierge voir ce qu'il en est (j'ai fait de l'AS sur des projets OC, mais jamais Swift pour l'instant).


La phrase suivante est fausse. La phrase précédente est vraie.

#3 jp

jp

    Touriste

  • Modérateurs
  • PipPipPipPipPipPipPipPipPip
  • 6 564 Messages :
  • Configuration:N/A
  • Sexe:Masculin
  • Localisation:Créteil

Posté 12 août 2015 - 20:11

Voilà un mini projet de test qui fonctionne. Le point clef est que le nom des classes dans le ".sdef" doivent être préfixés par le nom du module où la classe est définie (le nom de ton produit par défaut).

 

Fichier joint  SwiftAS.zip   18,03 Ko   4 Nombre de téléchargements 

 


La phrase suivante est fausse. La phrase précédente est vraie.

#4 sigma6

sigma6

    Macfr addict

  • Membres
  • PipPipPipPipPip
  • 960 Messages :
  • Sexe:Masculin
  • Localisation:GVA
  • Passions:Bof...

Posté 13 août 2015 - 14:40

Wow t'es trop fort!

 

Bon, j'arrive à y implémenter à mon projet, mais maintenant faut que je pige pourquoi 9 fois sur 10 il me dit que mon dictionnaire est corrompu… Ça semble venir du tag code, mais des fois il me dit que c'est interdit de mettre plus de 4 caractères, mais en même temps dans ton exemple il y en a plus que 4… je pige rien. Les erreurs sont assez incohérentes.

 

Si j'arrive à piger pourquoi il m'embête je poste ça ici.

 

Merci mille fois en tout cas, ça me sort une bonne épine du pied!



#5 jp

jp

    Touriste

  • Modérateurs
  • PipPipPipPipPipPipPipPipPip
  • 6 564 Messages :
  • Configuration:N/A
  • Sexe:Masculin
  • Localisation:Créteil

Posté 13 août 2015 - 16:48

Avec plaisir :)

 

Pour le tag code, je ne sais pas. J'ai toujours fait comme ça (mais j'ai peut-être eu tord, et si ça passait avant, peut-être qu'Apple a corrigé un truc qui fait que ça passe plus ?).

 

Ou alors un bug dans Xcode 7 beta (si c'est ça que tu utilises)

 

Si tu trouves l'origine du problème, oui poste ça ici !

 

-- Edit

 

En même temps, si tu regarde la Standard Suite (celle par défaut, fournie par Apple), y'a des code > 4 caractères, comme "coremove" par exemple.


La phrase suivante est fausse. La phrase précédente est vraie.

#6 sigma6

sigma6

    Macfr addict

  • Membres
  • PipPipPipPipPip
  • 960 Messages :
  • Sexe:Masculin
  • Localisation:GVA
  • Passions:Bof...

Posté 14 août 2015 - 10:31

Ouais, la doc est un peu incompréhensible… Mais je crois que j'ai compris!

 

Dans la standard suite, apple fait ce qu'il veut, parce qu'apple y se la pètent… Ils ont défini leurs codes et ils utilisent ça et tant pis pour toi.

 

Après dans la suite de l'appli tu donnes un code pour la suite, par exemple Abcd, du coup toutes les commandes après doivent faire 8 caractères et commencer par Abcd, par exemple AbcdEfgh… et c'est ça que je faisais faux, je ne reprenais pas le début du code de la suite. C'est malin. Et ça, c'est pas documenté!

 

Une vraie bande de pantoufles chez apple



#7 jp

jp

    Touriste

  • Modérateurs
  • PipPipPipPipPipPipPipPipPip
  • 6 564 Messages :
  • Configuration:N/A
  • Sexe:Masculin
  • Localisation:Créteil

Posté 14 août 2015 - 16:37

Ah oui d'accord. Et effectivement, dans mes app qui font de l'AS les codes font toujours 8 caractères, avec les 4 premiers caractères étant le code de la suite. J'ai surement dû prendre l'habitude de faire comme ça sans trop me souvenir si c'était nécessaire ou quoi.
 
Merci pour cette trouvaille !

La phrase suivante est fausse. La phrase précédente est vraie.




0 utilisateur(s) en train de lire ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)