Écrire des actions Dropzone 3

Dans Ecrire des destinations pour Dropzone, Je vous ai montré comment créer une destination de fichier unique pour l'extension Zone de largage. Ce didacticiel s'appuiera sur cette base pour montrer les nouveautés de Dropzone 3 et comment en tirer parti..

Comme auparavant, tout le code sera dans Rubis. Si vous ne savez pas programmer dans Rubis, Je suggère d'étudier Les fondamentaux du rubis premier.

Vue d'ensemble

Dropzone 3 a perdu les cercles de destination qui étaient uniques au programme original.

Dropzone 3

Dans Dropzone 3, tous les actes sont dans le menu déroulant des icônes de la barre de menus. Ce qui s'appelait un destination dans l'ancienne version est maintenant un action. Cela préserve l’idée que tout peut être exécuté sur les fichiers ou le texte déposé sur un fichier donné. action.

Dropzone 3 a également abandonné l’utilisation d’un seul fichier Rubis script pour une action. Dropzone 3 utilise maintenant un dossier spécial Mac OS X qui masque son contenu à l'utilisateur moyen. Un action peut maintenant contenir d’autres fichiers de support qui ne gêneront pas les autres actes.

Menu Actions possibles

En cliquant sur le + Le symbole dans le coin supérieur gauche révèle tous les Actions intégrées et n'importe quel Actions de l'utilisateur.

Préférences Dropzone 3

Cliquez sur l'engrenage dans le coin supérieur droit pour accéder au Préférences, Console de débogage, Actions de réinitialisation, et Aidez-moi des menus.

le Drop Bar en haut de la liste déroulante se trouve un emplacement pratique pour stocker des fichiers tout en les regroupant avant de les déposer dans une action. Faire glisser et déposer des fichiers ici ne les déplace pas. Il stocke leurs emplacements.

Le deuxième niveau avec la rubrique DOSSIERS / APPS est une barre de lancement rapide pour tout programme ou dossier placé à cet endroit. Si un fichier est glissé sur une icône de programme, le programme sera lancé avec ce fichier chargé..

Le dernier niveau est le actes qui sont mis en place pour utiliser. Il n'y a pas de limite au nombre d'actions. Les actions peuvent être utilisées plus d'une fois, chacune ayant ses propres préréglages.

Créer une action

Créez une nouvelle action en sélectionnant Développer l'action dans le + menu.

Invocation d'une action de développement

Cela amènera le Développer l'action dialogue.

Développer le dialogue d'action

Remplissez le dialogue comme ci-dessus et appuyez sur Créer une action. L'éditeur que le système a configuré pour les scripts Ruby s'ouvrira avec le fichier d'action créé. le action.rb le fichier est le point de départ de l'action.

Répertoire d'action

En utilisant l'éditeur pour révéler l'emplacement de ce fichier, vous le trouverez dans le répertoire ~ / Bibliothèque / Application Support / Dropzone 3 / Actions. Dans ce répertoire, un répertoire spécial nommé Unpack.dzbundle qui contient le action.rb fichier et un défaut icon.png fichier. Tous les fichiers pour l'action doivent être ici. le icon.png fichier est l'image que Dropzone affiche dans le menu déroulant. Remplacez-le par celui donné dans le téléchargement.

Le fichier de démarrage par défaut donne un aperçu de base de l'API Dropzone 3. Supprimer tout sauf l'en-tête de cet exemple.

# Dropzone Action Info # Nom: Unpack # Description: Cette action décompresse les fichiers zip dans un répertoire spécifié. # Poignées: Fichiers # Créateur: Richard Guay # URL: http://customct.com # Evénements: Clics, Dragged # KeyModifiers: Commande, Option, Contrôle, Shift # SkipConfig: Non # RunsSandboxed: Oui # Version: 1.0 # MinDropzoneVersion: 3.2 

L'en-tête est essentiellement identique à la version précédente. Je vais passer en revue les éléments nouveaux et modifiés. Prière de se référer à Ecrire des destinations pour Dropzone pour les articles non couverts.

Poignées

Cette description n'est pas nouvelle, mais grandement simplifiée. Le possible Poignées est maintenant Des dossiers, Texte, ou les deux séparés par une virgule. Auparavant, c'était le terme le plus technique pour désigner la même chose. Pour cette action, mettez Des dossiers seulement.

KeyModifiers

Lorsqu'il est défini, Dropzone définira la variable d'environnement pour les modificateurs de touches maintenus enfoncés pendant les actions de glisser-déposer ou de clic. Puisque cette action n'a pas besoin de modificateurs, supprimez cette ligne..

SkipConfig

Cet en-tête indique à Dropzone si l'action doit être configurée ou non. Cette action nécessite que ce paramètre soit défini sur faux.

Version

Cet en-tête indique à Dropzone de quelle version il s'agit. Ceci est pour faciliter la mise à jour.

MinDropzoneVersion

Cet en-tête indique la version la plus basse de Dropzone dont l'action a besoin..

Après le MinDropzoneVersion, ajouter:

# OptionsNIB: ChooseFolder # UniqueID: 234985238238452835 

le OptionsNIB indique à Dropzone un panneau d'options préconfiguré à utiliser. Les valeurs possibles sont:

  • S'identifier
  • ExtendedLogin
  • Clé API
  • Nom d'utilisateurAPIKey
  • Choisir le dossier
  • ChoisissezApplication

Cette action utilisera le Choisir le dossier option. Cela demandera à l'utilisateur de spécifier un dossier cible pour décompresser les fichiers. L'action recevra la valeur dans le chemin variable d'environnement.

le Identifiant unique doit être un nombre aléatoire qui identifiera de manière unique le paquet d’actions. Si l'action est répertoriée sur le site principal, cela vous aidera à déterminer les informations de version. Lorsque l'action est modifiée, Dropzone informe les autres utilisateurs que la nouvelle version est disponible et peut la mettre à jour directement à partir de Dropzone..

Action traînée

le traîné () La fonction est exécutée lorsque l'utilisateur fait glisser des fichiers sur l'action dans le menu déroulant. le traîné () la fonction pour l’action de décompression est:

def dragged # # Active le mode déterminé. # $ dz.determinate (true) # # Récupère les valeurs de données. # if ((ENV ['chemin']!! = nil) && (Filedirectory? (ENV ['chemin'])))) # # récupère les valeurs par défaut. # dir = ENV ['path'] # # Traite chaque fichier image. # total = $ items.count # # Dites à Dropzone que nous commençons… # $ dz.begin ("Décompression de # total fichiers…") # # Index sur toutes les images données. # pour l'index dans 0… total # # Convertit le fichier image. # '/ usr / bin / unzip -n "# $ itemsindex]" -d "# dir"' # # Supprime le fichier d'origine. # File.delete ($ items [index]) # # Indiquer à Dropzone quel pourcentage est effectué. # $ dz.percent ((((index + 1) * 100) total) .to_i) end else # # L'utilisateur n'a pas configuré l'action. Dis leur. # $ dz.error ("Action de décompression", "Vous n'avez pas donné de répertoire cible!") end # # Dites à l'utilisateur que c'est fait. # $ dz.finish ("Déballage terminé.") # # Terminez le protocole Dropzone. Si vous voulez une URL dans le presse-papiers, passez-la # ici. Si vous voulez simplement copier du texte dans le presse-papiers, utilisez plutôt $ dz.text (). # Soit $ dz.url () ou $ dz.text () doit être la dernière chose dans la méthode déplacée. # $ dz.url (false) end 

le traîné () la fonction raconte Zone de largage si elle est déterminée ou non en utilisant le $ dz.determinate () une fonction. Cette action est déterminée, donc vrai doit être passé. Si une requête Internet est dans l'action, elle doit être définie sur faux.

L'action détermine s'il existe une configuration appropriée. le si L’instruction détermine cela en vérifiant si la variable utilisée pour donner les préréglages existe et est un répertoire valide. S'il n'est pas configuré, il utilise le $ dz.error () fonction pour transmettre un message d'erreur à l'utilisateur et quitter le programme. Il y a aussi $ dz.warning () fonction qui donne le même type de dialogue à l'utilisateur, mais n'arrête pas l'action. Il y a aussi $ dz.fail () fonction qui fonctionne comme $ dz.error (), mais laisse un X sur l'icône pour montrer que le processus a totalement échoué.

Si la chemin l'information est là et bien, ça continue avec l'action. Il raconte Zone de largage qu'il commence avec $ ds.begin () une fonction. Cela prend une chaîne qui est également transmise à l'utilisateur. Tous les fichiers déposés dans l’action ont leur adresse de répertoire dans le répertoire. $ articles tableau.

L’action se déroulera sur tous les $ articles passé et appelle le programme zip standard pour décompresser le fichier dans le répertoire désigné. Une fois que chaque fichier est traité, il supprime le fichier d'origine et augmente le pourcentage effectué à l'aide de la touche $ dz.percent () une fonction.

Une fois terminé avec tous les fichiers, l’action appelle le $ dz.finish () fonctionner avec un message approprié. Le dernier appel de fonction d’une action doit être le $ dz.url () ou la $ dz.text () une fonction. Une URL ou un texte à copier dans le presse-papiers peut être passé. Sinon, passez faux.

Action cliquée

le cliqué () La fonction est appelée chaque fois que l'utilisateur clique sur l'action. Cette action obtiendra un nouveau répertoire pour décompresser les archives. Cela n'est pas nécessaire, mais montre comment utiliser certaines des nouvelles fonctions de Dropzone 3. le cliqué () fonction est ci-dessous:

def clicked # # Le gestionnaire cliqué devrait obtenir le répertoire de destination à utiliser et # le sauvegarder. # # # Demande la largeur du graphique. # dir = $ dz.cocoa_dialog ("fileselect --select-directory -‑select-only-directory --title 'Unpack to Directory'") .split ("\ n") # # Voir si l'utilisateur a annulé sa sortie. Ne continuez pas s'ils annulent. # if ((dir [0]! = nil) && (répertoire_fichier?(dir[0]))) # # Enregistrez l'emplacement du répertoire. # $ dz.save_value ("path", dir [0]) else # # L'utilisateur n'a pas configuré l'action. Dis leur. # $ dz.error ("Action de décompression", "Vous avez annulé! Vous n'avez pas indiqué de répertoire cible!") end # # Dites à l'utilisateur que c'est fait. # $ dz.finish ("Répertoire de décompression: # dir [0]") # # Terminez le protocole Dropzone. Si vous voulez une URL dans le presse-papiers, passez-la # ici. Si vous voulez simplement copier du texte dans le presse-papiers, utilisez plutôt $ dz.text (). # Soit $ dz.url () ou $ dz.text () doit être la dernière chose dans la méthode cliquée. # $ dz.url (false) end 

le cliqué () la fonction demande un nouveau répertoire à l’utilisateur en utilisant le $ dz.cocoa_dialog () une fonction. Cette fonction prend la ligne de commande pour le Boîte de dialogue cacao programme en tant que paramètre de la fonction, le transmet à Boîte de dialogue cacao programme et renvoie les résultats de l'appel du Boîte de dialogue cacao programme.

Les résultats sont partagés à la Entrer caractère dans un tableau de chaînes. Il vérifie si un répertoire est valide et que l'utilisateur n'a pas appuyé sur le bouton d'annulation. Si cela échoue, il utilise $ dz.error () fonction pour dire à l'utilisateur et quitter. Sinon, il enregistre le répertoire dans Zone de largage en utilisant le $ dz.save_value () une fonction. Tout ce qui est enregistré avec cette fonction dans une action est récupérable dans les variables d'environnement lors de la réexécution..

La fonction sort en tant que traîné () la fonction a.

Autres fonctions

Dropzone 3 a également une fonction de dossier de fichier temporaire appelée $ dz.temp_folder (). Il retourne le répertoire à utiliser pour créer des fichiers temporaires.

Si vous devez copier ou déplacer des fichiers, le Rsync.do_copy () la fonction doit être utilisée.

Tout Modificateurs Clés spécifiés dans l'en-tête sont dans la ENV ['KEY_MODIFIERS'] variable d'environnement.

Débogage

La nouvelle console de débogage est un excellent ajout. Pour ouvrir la console, sélectionnez-la dans le menu:

Ouvrir la console de débogage

La console affichera déjà tout le résultat de la dernière action utilisée.

La console de débogage

La console affiche tous les VARIABLEs passé dans l’environnement, le UN ÉVÉNEMENT (cliqué dans cet exemple), tout Save_Values, et le dernier message donné à l'utilisateur.

Lorsque cette ligne est ajoutée après la $ dz.Save_Value () une fonction,

'met "L'information donnée:" + dir [0]' 

ces informations de débogage seront visibles dans la console:

Affichage des informations de débogage

L'information supplémentaire est là en rouge. Cela donne un moyen pratique de déboguer des scripts d'action.

Conclusion

Dans ce tutoriel, je vous ai montré les différences entre la nouvelle version de Zone de largage et comment créer votre propre action pour décompresser des fichiers dans un répertoire spécifié par l'utilisateur. Maintenant que vous savez créer des actions, allez en faire et partagez-les avec tout le monde.