PopClip Extensions de script

PopClip est un excellent utilitaire qui, une fois que vous y êtes habitué, devient très difficile de vivre. Ce tutoriel va montrer comment écrire une extension de script en créant un exemple d'extension.

Dans ce tutoriel, je vais vous montrer comment créer une extension PopClip en construisant une extension qui recherchera une référence biblique à sélectionner, la recherchera en anglais ou en thaï à l'aide d'une API Web et collera le ou les versets appropriés à la place. . Vous apprendrez à créer une extension PopClip utilisant un script PHP, une expression régulière pour l'activation, la définition de préférences que l'utilisateur peut modifier et l'utilisation de touches de raccourci pour remplacer les préférences..


Définir votre extension

La première chose à faire est de décider de ce que l'extension va faire. Vous devez toujours créer chaque extension avec une seule fonctionnalité. Depuis que je suis missionnaire, j'écris des notes sur des versets bibliques tout le temps. J'aimerais avoir une extension qui prend une référence biblique et colle ce ou ces versets dans mon document en thaï et en anglais. Par conséquent, l'extension fera exactement cela!

Mais parfois, je n'ai besoin que de l'une ou l'autre langue. Par conséquent, l'extension doit disposer d'un panneau de préférences et de touches de raccourci pour remplacer les préférences. Cela peut sembler beaucoup de travail, mais PopClip le rend facile.

J'ai trouvé un site Web génial, Ephesians 4:14, qui permet de télécharger des versets de la Bible King James en anglais et de la Bible King James en Thaïlande. Depuis que je travaille avec la langue thaïlandaise, ce sont les seules bibles dont j'ai besoin. Ils ont aussi beaucoup d'autres langues. Par conséquent, vous pouvez ajouter la langue qui pourrait vous intéresser.


Ressources Popclip

Si vous venez d'installer PopClip, veuillez d'abord lire le Guide de l'utilisateur PopClip. Le didacticiel, Créez votre propre extension personnalisée pour PopClip, offre une excellente introduction à PopClip et explique comment créer des extensions qui ne nécessitent aucune programmation. Ce tutoriel se concentrera sur les extensions de programmation de scripts pour PopClip.

Pilotmoon donne une liste complète des options du fichier de configuration de plist. Toujours se référer à ceci pour la documentation à jour de l'interface d'extensions pour PopClip.

L'extension sera écrite en PHP. Si vous ne savez pas programmer en PHP, vous trouverez un excellent cours vidéo sur Tuts +: PHP Fundamentals.


La structure du fichier

Où que vous travailliez sur votre ordinateur, créez un répertoire appelé popclipBible.popclipext. Ce répertoire ressemblera à un fichier normal, mais lorsque vous faites un clic droit dessus, sélectionnez le menu contextuel. Afficher le contenu du paquet, il montrera le contenu de ce répertoire. Vous devez créer les fichiers Config.plist, bible.php, et bible.png dans ce répertoire.

Config.plist est le fichier plist décrit dans la section suivante. bible.php contiendra le script PHP à exécuter. bible.png est le fichier graphique de l'extension. Tous ces éléments sont dans le fichier de téléchargement en haut..


La pliste

Toutes les extensions pour PopClip commencent par un fichier plist appelé Config.plist. Ce fichier indique à PopClip comment l’extension s’intègre dans le monde de PopClip. Le plist complet pour cette extension est:

     actes   Après résultat-coller Fichier d'image bible.png Interprète de script / usr / bin / php Fichier de script shell bible.php Titre Bible   Les options   Identifiant d'option biblekjv Type d'option booléen Option Label KJB   Identifiant d'option biblethaikjv Type d'option booléen Option Label Thai KJV   Description de l'extension Rechercher des versets de la Bible dans Popclip. Identifiant d'extension com.customct.popclip.extension.bible Nom de l'extension Bible Longue course  Expression régulière (. * \ d + \: \ d + (\ - \ d +) *) Version du logiciel requise 701  

Comme on peut le constater, il s’agit d’un fichier de données formaté XML. Ce fichier de données indique à PopClip tout ce qu’il doit savoir pour exécuter l’extension..

C'est le plist nu nécessaire pour cette extension. Le dictionnaire principal a les clés actes et Les options. Ce sont les entrées principales pour fournir les fonctionnalités de l'extension. Je vais les décrire plus en détail ci-dessous. Les autres clés sont:

Description de l'extension
Cette clé donne une description de ce que l’extension va faire. Cela doit être court, mais descriptif.

Identifiant d'extension
Cette clé donne un identifiant unique pour votre extension. Je l'ai basé sur mon site Web pour une unicité complète. Cela peut se faire par n'importe quel ordre alphanumérique, mais quelque chose de lisible est toujours agréable.

Nom de l'extension
Cette clé est le nom de l'extension. Je l'appelle simplement Bible.

Longue course
Cette clé est définie sur true, car elle passera un appel d'API Web dont la fin prendra un certain temps en raison de la vitesse du réseau. PopClip affiche simplement une icône d'attente pendant l'exécution de l'action..

Si l'extension ne prend pas longtemps, elle devrait être fausse.

Expression régulière
La valeur de cette clé est une expression régulière qui autorisera le lancement de l'extension uniquement si elle affirme la valeur true pour le texte actuellement sélectionné. En écrivant une expression régulière qui correspondra seulement à une référence biblique, cela ne montrera pas l'extension de la Bible sur n'importe quelle sélection de texte..

Faites bon usage de cette fonctionnalité. La présence de toute sélection de texte complique la tâche de l'utilisateur de l'extension. Réfléchissez à la manière dont quelqu'un voudrait utiliser l'extension et créer une bonne expression régulière pour ce cas..

Si vous êtes un peu rouillé en écrivant des expressions régulières, alors vous devriez lire cet article sur Net Tuts+.

Version du logiciel requise
Cette clé spécifie la version de PopClip nécessaire à cette extension..


actes

Les touches d'action permettent de définir l'action que l'extension effectuera. Il y a beaucoup de possibilités, mais ce tutoriel ne portera que sur les éléments nécessaires. Ils sont comme suit:

Après
Ceci spécifie l'action à entreprendre après l'exécution du script. résultat-coller va coller dans le haut la plupart des applications quel que soit le texte du script écho.

Fichier d'image
Cette clé spécifie l'icône utilisée pour cette extension. Depuis l'icône dans la même zone que l'extension, vous pouvez simplement vous référer au fichier: bible.png. Si vous souhaitez conserver les icônes dans un sous-répertoire de l'extension, vous utiliserez une référence relative à ce fichier..

Interprète de script
Cette clé définit l'interpréteur qui sera utilisé pour traiter le script. Depuis que je fais ce programme en PHP, il doit référencer l’interpréteur PHP par défaut sur tous les Mac: / usr / bin / php. Vous pouvez placer le chemin complet de l’interprète que vous voulez utiliser pour écrire des extensions..

Fichier de script shell
Cette clé définit le fichier dans le répertoire de l'extension à exécuter. Le nom du fichier est: bible.php.

Titre
Cette clé est le titre de l'extension: Bible.


Les options

le Les options key contient un tableau de dictionnaires. Un dictionnaire pour chaque option dans le panneau des préférences pour l'extension. Pour cette extension, l'utilisateur doit avoir la possibilité de coller à partir de la Bible en KJV ou de la Bible en Thai KJV. Comme j’ai deux options pour cette extension, je vais décrire chaque touche du Les options dictionnaire et dire ce que j'ai utilisé pour chaque option.

Identifiant d'option
Cette clé donne à PopClip un nom unique pour l’option dont vous avez besoin pour votre extension. Ceci est utilisé dans la variable d'environnement transmise à votre programme. Pour les deux options, ces identifiants seront utilisés: biblekjv et biblethaikjv.

Type d'option
Cette clé définit le type d'option. Il peut être soit booléen (Oui ou non), chaîne (n'importe quelle chaîne), ou plusieurs (Vous donnez une liste d'options et l'utilisateur peut choisir parmi elles). le booléen le type est ce qui est nécessaire pour cette extension.

Option Label
Cette clé définit le texte à utiliser dans le panneau d'options pour l'extension. Pour cette extension, les étiquettes KJB et Thai KJV marchera.

Avec ces options définies dans la liste de contrôle, un panneau de préférences sera créé pour éditer les préférences. Voici à quoi ça va ressembler:

Préférences de l'extension de la Bible

Le scénario

Maintenant, le script doit être écrit. Le script complet est:

  $ url, CURLOPT_HEADER => 0, CURLOPT_RETURNTRANSFER => VRAI, CURLOPT_TIMEOUT => 4); $ ch = curl_init (); curl_setopt_array ($ ch, ($ options + $ par défaut)); if (! $ result = curl_exec ($ ch)) trigger_error (curl_error ($ ch));  curl_close ($ ch); return $ result;  // // Fonction: getBibleVerse // // Description: cette fonction permet de récupérer un // verset biblique sur le site Web api.preachingcentral.com //. // // Entrées: // $ verse Les versets à rechercher. // $ version La version de la bible à utiliser. // function getBibleVerse ($ verse, $ version) global $ book; $ result = ""; $ raw = urlencode ($ verse); $ xml = curl_get ("http://api.preachingcentral.com/bible.php?passage=$raw&version=$version"); $ xml_parser = xml_parser_create (); xml_parse_into_struct ($ xml_parser, $ xml, $ vals, $ index); xml_parser_free ($ xml_parser); $ premier = 0; $ quote = 0; foreach ($ vals as $ xml_elem) if (strcmp ($ xml_elem ['tag'], "TEXT") === 0) if ($ quote == 0) $ result = $ result. '"'. $ xml_elem ['valeur']; $ quote = 1; sinon $ result = $ result." ". $ xml_elem ['valeur']; if (strcmp ($ xml_elem ['tag'] , "RESULT") === 0) if ($ first == 0) if (strcmp ($ version, "thai") === 0) // // Le site ne renvoie que les noms de livre en anglais. Traduisez-les // en thaï. // $ blist = explode ("", $ xml_elem ['valeur']); $ bname = "; $ bver = "; if (count ($ blist) == 3) $ bname = $ blist [0]. Blist $ [1]; $ bver = $ blist [2]; elseif (count ($ blist) = = 4) $ bname = $ blist [0]. $ Blist [1]. $ Blist [2]; $ bver = $ blist [3]; sinon $ bname = $ blist [0]; $ bver = $ blist [1]; $ result = $ book [$ bname]. "". $ bver; else // // anglais, ici c'est bon. // $ result = $ xml_elem ['valeur']; $ premier = 1; else $ result = $ result. '"'. "\ n \ n". $ xml_elem ['valeur'];  $ quote = 0;  retourne $ résultat. '"'; // // Récupère les variables d'environnement PopClip pour l'extension //. // $ verse = trim (getenv ('POPCLIP_TEXT')); $ qKJV = getenv ('POPCLIP_OPTION_BIBLEKJV'); $ qThaiKJV = getenv ( "POPCLIP_OPTION_BIBLETHAIKJV"); $ keycode = intval (getenv ('POPCLIP_MODIFIER_FLAGS')); $ results = ""; // // Si la préférence est définie sur KJV ou que la touche de commande // est enfoncée, obtenez le verset du Anglais KJV // et ajoutez-le au résultat Si vous appuyez simultanément sur la touche de commande // et sur la touche de navigation, obtenez également le KJV. // if (($ qKJV [0] == '1') || ( $ keycode == 1048576) || ($ keycode == 1310720)) $ results. = getBibleVerse ($ verse, "kjv"). "\ n"; // // Si la préférence est définie sur le fichier KJV thaïlandais. ou la touche de contrôle // est enfoncée puis récupérez le verset de la version thaïlandaise KJV et ajoutez-le au résultat. Si vous appuyez simultanément sur la touche de commande // et sur la touche de commande, // obtenez également la version thaïlandaise // if (($ qThaiKJV [0] == '1') || ($ keycode == 262144) || ($ keycode == 1310720)) $ results. = getBibleVerse ($ verse, "thai"). "\ n "; // // Any Tout ce qui est repris dans le script sera collé dans // la plus haute application par PopClip. Si le résultat // n'est rien, alors retournez le verset. // if (strcmp ($ résultats, "") === 0) echo $ verse;  else echo $ results; ?>

La première chose dans le script est un tableau des noms des livres de la Bible. Ce tableau sert à traduire les noms de livres en anglais en leur équivalent thaï. L'API Web utilisée par l'extension ne donne que des références en anglais. Ainsi, les noms des livres bibliques en anglais doivent être traduits en thaï.

La première fonction est une fonction d'assistance. Il s'agit d'une routine PHP permettant de demander des informations à un site Web à l'aide de curl et de renvoyer les résultats au programme appelant. L'entrée est l'URL de la demande.

La deuxième fonction est la fonction principale de traitement du verset biblique. Il demandera le verset biblique et traitera le XML résultant dans un format plus lisible pour le coller dans l'éditeur de texte ou quel que soit le programme actuellement actif. Les paramètres sont le verset biblique réel et le désignateur pour lequel la Bible doit demander. Pour la Bible King James, c'est KJV. Pour la Bible thaïlandaise, c’est thaïlandais. Vous pouvez obtenir d'autres codes à partir du lien de site ci-dessus.


Obtenir des informations de l'environnement

PopClip envoie des informations au script via des variables d'environnement. C'est un moyen simple de communiquer. Voici comment vous accédez à cette information.

 // // Récupère les variables d'environnement PopClip pour l'extension //. // $ verse = trim (getenv ('POPCLIP_TEXT')); $ qKJV = getenv ('POPCLIP_OPTION_BIBLEKJV'); $ qThaiKJV = getenv ("POPCLIP_OPTION_BIBLETHAIKJV"); $ keycode = intval (getenv ('POPCLIP_MODIFIER_FLAGS')); $ results = "";

La fonction PHP getenv () récupérera la variable d'environnement donnée dans la chaîne pour l'appel de fonction. Toutes les variables d'environnement sont des chaînes et doivent être utilisées comme telles. Les différentes variables d'environnement sont:

POPCLIP_TEXT
Cette variable est la sélection lorsque PopClip a été appelé. L’utilisateur de l’extension pouvant sélectionner un espace supplémentaire, j’aime toujours utiliser le réduire() fonction pour supprimer tout espace blanc supplémentaire.

POPCLIP_OPTION_BIBLEKJV
Cette variable est l’option permettant d’obtenir le verset de la version King James. C'est une chaîne contenant le caractère 1 si true, sinon il contient le caractère 0.

POPCLIP_OPTION_BIBLETHAIKJV
Cette variable est l'option permettant d'obtenir le verset de la version thaïlandaise du roi James. C'est une chaîne contenant le caractère 1 si true, sinon il contient le caractère 0.

POPCLIP_MODIFIER_FLAGS
Cela vous indique quelles touches ont été enfoncées pendant la sélection de l'action PopClip. Tout ce qui est passé dans une variable d'environnement est une chaîne. Par conséquent, les chaînes doivent également être traduites dans un format facile à utiliser. Je utilise l intval () fonction pour convertir la chaîne en un entier.

Toutes les valeurs de code de clé différentes sont affichées dans le GitHub PopClip Extensions.

Comme on peut le constater, chaque option dans les préférences de l'extension a sa propre variable d'environnement correspondante.

La variable $ result est également définie sur une chaîne vide pour les deux prochaines sections à remplir.


Traitement des variables d'environnement

La partie principale de toute extension PopClip consiste à prendre les variables passées dans l'environnement et à en faire quelque chose d'utile.

 // // Si la préférence est définie sur KJV ou si la touche de commande // est enfoncée, récupérez le verset de la version anglaise KJV // et ajoutez-le au résultat. // if (($ qKJV [0] == '1') || ($ keycode == 1048576) || ($ keycode == 1310720)) $ results. = getBibleVerse ($ verse, "kjv"). "\ n"; 

Cette section de code ira chercher le verset de la version de King James s'il a été défini dans les préférences (variable $ qKJV) ou si la touche de commande a été enfoncée lors de la sélection de l'action PopClip ($ keycode est 1048576). Il le demandera également si les touches de commande et de commande sont enfoncées (le code de touche $ est 1310720). Étant donné que la variable $ qKJV est une chaîne composée de 1 ou 0, vous pouvez vérifier que le premier caractère est un caractère 1. Ainsi, il n’est pas nécessaire de traiter un nombre. Ça peut faire gagner du temps!

Si la condition est vraie, alors les vers sont récupérés en utilisant le getBibleVerse () fonction et ajoutée à la chaîne $ result.

 // // Si la préférence est définie sur la KJV thaïlandaise ou que la touche de commande // est enfoncée, récupérez le verset de la version // Thai KJV et ajoutez-le au résultat. // if (($ qThaiKJV [0] == '1') || ($ keycode == 262144) || ($ keycode == 1310720)) $ results. = getBibleVerse ($ verse, "thai"). "\ n"; 

Ici, c'est pareil. Si la version Thai King James a été sélectionnée dans les préférences ($ qThaiKJV) ou si vous avez appuyé sur la touche de navigation lors de la sélection de l'action PopClip ($ keycode est 262144), la version Thai King James sera demandée. Il le demandera également si les touches de commande et de commande sont enfoncées (le code de touche $ est 1310720).

Si la condition est vraie, alors les vers sont récupérés en utilisant le getBibleVerse () fonction et ajoutée à la chaîne $ result.

 // // Tout ce qui est repris dans le script sera collé dans // la plupart des applications par PopClip. Si le résultat // n'est rien, alors retournez le verset. // if (strcmp ($ résultats, "") === 0) echo $ verse;  else echo $ results; 

Ici, les résultats doivent être répercutés. Mais, si le tampon de résultats est vide, le verset doit être répercuté. Si une chaîne vide est répercutée, cela supprimera ce qui a été sélectionné. Puisque tout est une option, il est possible d’arriver ici avec le $ résultats variable vide. De bonnes pratiques de programmation nous indiquent de toujours prendre en compte chaque possibilité.


Usage

Une fois que l'extension est chargée dans PopClip et que les préférences sont définies, l'extension est facile à utiliser. Il suffit de sélectionner un texte qui est une référence biblique.

Sélection d'un verset

Lorsque la barre PopClip apparaît, sélectionnez la bible blanche et la sélection sera transformée en vers. Ici, les préférences ont été définies pour les versions KJV et ThaiKJV à imprimer..

Vers remplacé

Si le texte ne correspond pas à l'expression régulière pour une référence biblique, l'icône de la Bible ne sera pas affichée..

La sélection n'est pas un vers

Cela permet d’économiser de l’immobilier sur la barre PopClip. Chaque fois que vous créez une extension, réfléchissez à la façon de minimiser les apparences inutiles de votre extension..


Résumé

Maintenant, vous avez une petite extension PopClip soignée pour obtenir des vers à partir d’un site Web et les coller dans votre application. Mieux encore, vous savez maintenant comment créer un panneau de préférences pour votre extension, accéder aux informations de votre extension, manipuler le texte sélectionné et le coller à nouveau dans l'application la plus en haut. Vous pouvez prendre ce code et le développer ou l'utiliser comme squelette pour votre propre extension PopClip. Faites savoir à tout le monde comment vous l'utilisez dans les commentaires!