Schreibziele für Dropzone

Dropzone ist nicht nur ein weiterer FTP-Upload-Client, sondern eine großartige Dienstprogramm-Plattform für die Verarbeitung von Dateien und Text. Dropzone ist eine Sammlung von Zielen, die zwei Arten von Aktionen haben kann: Drag & Drop-Aktion und / oder a Klicken Sie auf Aktion. Es gibt viele vorprogrammierte Ziele, die Sie verwenden können. Sie können jedoch auch eigene Ziele in Ruby schreiben!

Dropzone wird vorgestellt


Dropzone Dropdown-Menü

Wenn Sie Dropzone starten, wird ein neues Menübalkensymbol oben auf dem Bildschirm angezeigt. Wenn Sie darauf klicken, werden alle von Ihnen konfigurierten Ziele angezeigt. Dieser Ablagebereich kann so viele Ziele enthalten, wie Sie konfigurieren möchten. Dateien oder Text können auf diesen Zielen abgelegt werden oder Sie können darauf klicken, um die Klickaktion auszuführen.


Dropzone-Kreise

Wenn Sie die Maus je nach Konfiguration ganz nach links oder rechts bewegen, werden die Dropzone-Kreise angezeigt. Sie können höchstens fünf verschiedene Ziele in den Kreisen haben. Sie können Dateien in diese Zielkreise ziehen, um die Aktion für sie auszuführen, oder sie in den Dropdown-Menü der Menüleiste ziehen, um denselben Effekt zu erzielen. Dropzone gibt einen schönen Hinweis auf den Fortschritt der Aktion.


Dropzone Dropdown-Menü: Voreinstellungen auswählen

Um Ihre verschiedenen Ziele zu konfigurieren, klicken Sie einfach auf das Symbol der Menüleiste und wählen Sie Einstellungen… .


Dropzone-Ziele-Dialog

Der Einstellungsdialog öffnet sich mit der Liste der Ziele. Hier können neue Ziele erstellt und alte Ziele bearbeitet oder gelöscht werden.

Die Standardaktionen, die Sie verwenden können, sind:

  • Dateien verschieben
  • Amazon S3
  • Dateien kopieren
  • Dateien kopieren
  • Dateien kopieren
  • Image Shack
  • Anwendung installieren
  • Anwendung öffnen
  • Text speichern
  • Text teilen
  • TwitPic

Sie können auch viele andere von ihrer Website herunterladen.

Ein Ziel ist einfach eine einzelne Datei mit Ruby-Code, deren Erweiterung in geändert wurde .Abwurfgebiet anstatt .rb. Daher kann jeder, der sich mit Ruby auskennt, seine eigenen Ziele erstellen und diese mit anderen teilen.


Dropzone-Einstellungsdialog

Das Einstellungsdialog Mit dieser Option können Sie die Kreise einschalten, die Kreise links oder rechts auf dem Bildschirm auswählen und die Aktionen bearbeiten, die Sie in Ihr System geladen haben. Beim Bearbeiten einer Aktion wird einfach der Standard-Texteditor aufgerufen, um die Zieldatei zu bearbeiten.

Spitze: Alle Zieldateien befinden sich unter ~ / Library / Anwendungssupport / Dropzone / Zielskripts /. Alle Änderungen, die Sie an einer Datei dort vornehmen, werden sofort verwendet. Daher können Sie dort einfach Dateien erstellen, um sie als gültige Aktionen im Dialog zu installieren. Wenn Sie auf ein Dropzone-Ziel doppelklicken, wird es einfach in dieses Verzeichnis kopiert.

Bildziel komprimieren / konvertieren

Ich arbeite ständig mit Bildern für Tutorials und Blogbeiträge. Ich muss sie immer kleiner machen und auf eine realisierbare Größe verkleinern. Das kann zeitaufwändig und langweilig sein. Bei Dropzone geht es jedoch nur um die Automatisierung. Ein gutes Beispiel wäre ein Ziel, um Bilddateien zu empfangen und zu konvertieren, während das Original in einem Sicherungsverzeichnis gespeichert wird.

Wenn Sie mit Ruby noch nicht vertraut sind und mehr darüber erfahren möchten, sollten Sie sich den Kurs „Grundlagen von Ruby“ zu Tuts ansehen+.

Spitze: Im Download-Zip für diese Lektion habe ich einen Alfred-Workflow zum Anzeigen der Dropzone-Zielskripte Verzeichnis.

Erstellen Sie zunächst eine Datei im Dropzone-Skriptverzeichnis mit dem Namen CompressImage.dropzone. Alle Dropzone-Zielskripten beginnen mit einem Header. Dieser Header teilt Dropzone mit, wie mit diesem Ziel zu interagieren ist. Fügen Sie in der erstellten Datei den folgenden Text ein:

 #! / usr / bin / ruby ​​# Dropzone Zielinfo # Name: Compress Image # Beschreibung: Dieses Ziel dient zum Komprimieren der angegebenen Bilder. Sie müssen eine imagemagick-Bibliothek (http://www.imagemagick.org/script/index.php) installiert haben. Es ist am besten von HomeBrew (http://brew.sh/) zu installieren. # Handles: NSFilenamesPboardType # Ereignisse: Geklickt, gezogen # Ersteller: Richard Guay  # URL: http://customct.com # IconURL: http://www.customct.com/images/CompressFile.png

Die erste Zeile ist der Standard sha-bang für ein Rubin-Skript. Nach dem sha-bang, Es gibt einen Kommentarblock mit den erforderlichen Informationen für Dropzone, um das Ziel zu nutzen. Alle diese Felder müssen sich in jeder Zieldatei befinden. Die verschiedenen Felder sind:

Name

Name ist einfach der Name, den Dropzone dem Benutzer in der Aktionsliste anzeigen soll. Es ist am besten, hier kein Ziel zu nennen, sondern einen Namen zu haben, der die durchgeführte Aktion genau beschreibt.

Beschreibung

Beschreibung ist der für die Aktion angezeigte Text. Dropzone zeigt nur zwei Zeilen an. Der hier ist zu groß, um vollständig im Dialogfeld angezeigt zu werden. Der Benutzer wird dies jedoch sehen und kann sich die Zieldatei ansehen, um das Ganze zu sehen. Es gibt derzeit keinen besseren Ort, um einige Dinge über das Reiseziel zu dokumentieren.

Griffe

Griffe beschreibt die Arten von Aktionen, die das Ziel ausführen wird. Die zwei Möglichkeiten sind NSFilenamesPboardType und NSStringPboardType.

Das NSFilenamesPboardType teilt Dropzone mit, dass Sie nur vollständige Systemdateinamen verwenden. Das NSStringPboardType teilt Dropzone mit, dass Sie nur Strings nehmen. Wenn Sie beide mit einem Komma auflisten, sendet Dropzone Ihnen beide Typen. Innerhalb des Zielcodes können Sie die Umgebungsvariable überprüfen ENV ['DRAGGED_TYPE'] um zu sehen, welcher Typ an das Ziel übergeben wurde. Für dieses Ziel nur das NSFilenamesPboardType wird benötigt, da nur Dateien bearbeitet werden.

Veranstaltungen

Veranstaltungen teilt Dropzone mit, welche Art von Ereignissen das Ziel verarbeiten kann. Es gibt nur zwei Ereignisse: Gezogen und Angeklickt. EIN Gezogen Mit event kann der Benutzer Dateien und / oder Text auf dem Ziel ablegen. EIN Angeklickt Ereignis ermöglicht das Klicken auf das Ziel für eine Aktion. Dieses Ziel verwendet beide durch ein Komma getrennt.

Schöpfer

Schöpfer teilt Dropzone mit, wer der Autor des Ziels ist und dessen E-Mail-Adresse. Dies wird auf der angezeigt Zieldialog wenn die Zielaktion zur Liste der Ziele des Benutzers hinzugefügt wird.

URL

URL gibt Dropzone eine URL, die für weitere Informationen zum Ziel angezeigt werden soll. Daher kann der Autor einen Link zu seiner eigenen Website oder eine Seite auf seiner Website angeben, auf der die Verwendung des Ziels erläutert wird. Dies wird auch im angezeigt Zieldialog wenn die Zielaktion zur Liste der Ziele des Benutzers hinzugefügt wird.

IconURL

IconURL Geben Sie Dropzone eine URL, um das Symbol für dieses Ziel anzuzeigen. Dieses Symbol wird für die Kreis-DropZones und die Dropdown-Dropdown-Menüs des Menüs verwendet. Dieses Symbol sollte die Aktion des Ziels etwas beschreiben und sollte an einem leicht zugänglichen Ort sein (dh es wäre am besten, wenn es nicht in Ihrem persönlichen System wäre und ein DynDNS darauf verweist. Es ist möglicherweise nicht ohne weiteres verfügbar.) Ein öffentlicher Dropbox-Link würde funktionieren. Das heißt, solange er nicht gelöscht wird!). Hier habe ich das Symbol auf meiner Website zum Herunterladen in Dropzone.

Zielaktionsfunktionen

Das Ziel muss eine Funktion für jede Aktion definieren, die als mit dem Ziel verwendbar aufgeführt ist. Dieses Ziel wird beide verwenden: Gezogen Aktion in der gezogen Funktion zum Verarbeiten von Dateien und Angeklickt Aktion in der angeklickt Funktion zum Abrufen von Präferenzen für das zu verwendende Ziel. Dieses Ziel muss über die grafische Zielbreite und den Erweiterungstyp verfügen, die im Konvertierungsprozess verwendet werden sollen.

Das gezogen Funktion ist zuerst. Fügen Sie der Zieldatei Folgendes hinzu:

 erfordern 'fileutils' def gezogen # # Bestimmten Modus aktivieren. # $ dz.determinate (true) # # Setzt den Standard-Rückgabewert auf einen Fehler. # result = "Sie müssen zuerst die Standardwerte festlegen!" # # Liefert die Datenwerte. # dataDir = File.expand_path ("~ / Library / Anwendungsunterstützung / Dropzone / Zieldaten /"), wenn File.directory?(dataDir) # # die Standardwerte erhält. # $ defaults = IO.readlines ("# dataDir /CompressFiles.txt") $ size = $ defaults [0] .split (":") [1] .strip $ ext = $ defaults [1] .split ( ":") [1] .strip # # Verarbeitet jede Bilddatei. # total = $ items.count # # Startzone starten ... # $ dz.begin ("Komprimieren von # total Bildern ..." beginnen) # # Das temporäre Verzeichnis für die Originale erstellen. # tmpDir = File.dirname ($ items [0]) + "/ tmp /" if! File.directory?(tmpDir) # # Das Verzeichnis existiert nicht! Erstelle es! # FileUtils.mkdir_p (tmpDir) end # # Index für alle angegebenen Bilder. # für den Index in 0… total # # Kopieren Sie das Original in das tmp-Verzeichnis. Rsync wäre die bevorzugte # -Methode, aber das prozentuale Diagramm auf der Benutzeroberfläche wird durcheinander gebracht. # # Rsync.do_copy ($ items [index], tmpDir, false) # FileUtils.copy_file ($ items [index], "# tmpDir # File.basename ($ items [index])") # # Erstellen der neue Dateiname mit der vom Benutzer angegebenen Erweiterung. # $ newFilePath = "# $ items [index] .chomp (File.extname ($ items [index])) # $ ext" # # Konvertieren Sie die Bilddatei. # output = '/ usr / local / bin / convert - Hintergrund weiß -Qualität 90% -alpha Hintergrund -alpha off + dither -colors 256 -flatten -transparent none -resize # $ size \ "# $ items [Index ] \ "\" # $ newFilePath \ "; ' # # Wenn die Konvertierung das Original nicht zerstört, entfernen Sie das Original. # if File.extname ($ items [index])! = $ ext File.delete ($ items [index]) end # # Teilen Sie Dropzone mit, wie viel Prozent erreicht werden. # $ dz.percent (((((Index + 1) * 100) / total) .to_i) end # # Setzt die Ergebniszeichenfolge auf "beendet". # result = "Komprimierung abgeschlossen." end # # Sagen Sie dem Benutzer, dass dies erledigt ist. # $ dz.finish (Ergebnis) # # Beenden Sie das Dropzone-Protokoll. Wenn Sie eine URL in der Zwischenablage haben möchten, geben Sie hier # ein. Wenn Sie nur Text in die Zwischenablage kopieren möchten, verwenden Sie stattdessen $ dz.text (). # Entweder $ dz.url () oder $ dz.text () muss das Letzte in der gezogenen Methode sein. # $ dz.url (falsch) Ende

Das erste Element deklariert alle Bibliotheken, die für das Ziel benötigt werden. Hier die Fileutile Eine Bibliothek wird zum Verschieben von Dateien benötigt. Der Programmautor empfiehlt die Verwendung der Rsync Bibliothek, die in Dropzone vorgeladen ist, hat jedoch den Nebeneffekt, dass der Fortschrittsbalken bei jedem Aufruf zurückgesetzt wird. Der Autor von Dropzone sagte, dass dieser Effekt in der nächsten Version von Dropzone ein- oder ausgeschaltet werden kann.

Das Rsync Die Bibliothek fragt den Benutzer ab, ob bereits eine Datei vorhanden ist, an der eine verschoben wird, oder wenn höhere Berechtigungen erforderlich sind. Das Fileutile Bibliothek wird nicht und nur einen Fehler geben. Verwenden Sie daher die Fileutile Bibliothek erfordert mehr Vorsicht.

Das gezogen Die Funktion teilt Dropzone zunächst mit, dass diese Aktion eine bestimmte Zeit in Anspruch nimmt. Das $ dz.determinate (true) Funktion führt dies aus. Wenn Sie ins Internet oder ähnliches hochladen, würden Sie dies auf einstellen falsch. Wenn eingestellt auf falsch, Die Fortschrittsanzeige zeigt nur einen Bildlaufeffekt im gesamten Dialog an, anstatt zu versuchen, den Fortschritt anzuzeigen.

Als Nächstes wird die Ergebniszeichenfolge auf einen Standardwert für die Anzeige für den Benutzer festgelegt. Wenn der nächste wenn, dann Aussage ist falsch, dann wird es angezeigt.

Das dataDir wird auf die vollständige Adresse des Datenverzeichnisses gesetzt, das zum Speichern der Standardwerte für das zu verwendende Ziel verwendet werden soll. Wenn dieses Verzeichnis vorhanden ist, werden die Standardwerte für die Grafikbreite und die Erweiterung gelesen, um die Grafik anzugeben. Andernfalls wird der Benutzer aufgefordert, zuerst die Einstellungen festzulegen.

Spitze: Die nächste Version von Dropzone verfügt über eine API für die Arbeit mit einem Datenverzeichnis.

Das $ Artikel Array ist die Liste der Dateien, die der Dropzone in einer Drag-Aktion übergeben werden. Dies ist ein Standard-Ruby-Array, das vom Dropzone-Programm festgelegt wird, bevor die Zielskripts aufgerufen werden.

Das $ dz.begin () Funktion muss aufgerufen werden, um den Fortschrittsbalken mit dem an die Funktion übergebenen Text anzuzeigen. Wenn diese Funktion nicht aufgerufen wird, wird der Fortschrittsbalken nicht angezeigt und Dropzone weiß nicht, in welchem ​​Status sich diese befindet.

Als nächstes die tmp Das Verzeichnis wird in dem Verzeichnis erstellt, das die Originalgrafiken enthält. Die Originalgrafik wird hier kopiert, bevor eine Aktion ausgeführt wird, um die Originalgrafik beizubehalten, falls dem Benutzer das Ergebnis nicht gefällt.

Das für… ende block wird verwendet, um jede Grafikdatei im $ Artikel Array. Die eigentliche Konvertierung erfolgt mit der Konvertierungsfunktion der ImageMagick-Bibliothek. Da dies keine Standardbibliothek ist, die auf dem Mac OS X-System geladen ist, muss sie vom Benutzer des Ziels installiert werden. Die beste Lösung ist, Home Brew zu installieren und den Befehl zu verwenden brauen installieren imagemagick um die Bibliothek zu installieren. Das ist einfach zu bewerkstelligen und liefert viel bessere Ergebnisse als der Versuch, es selbst zu kompilieren und zu installieren!

Nach der Grafikkonvertierung und -komprimierung muss die Fortschrittsanzeige aktualisiert werden. Das ist was $ dz.percent () tut. Sie berechnen den ganzzahligen Betrag, der abgeschlossen ist. Der Wert sollte zwischen 0 und 100 liegen.

Wenn die Schleife beendet ist, wird die Ergebnis string wird auf eine beschreibende Nachricht gesetzt, die mit dem Benutzer gesendet wird $ dz.finish (). Danach die $ dz.url () oder $ dz.text () Funktionen müssen aufgerufen werden. Das $ dz.url () Kann beides sein falsch oder eine richtige URL-Zeichenfolge, die an den Benutzer gesendet und in einem Browser angezeigt werden soll. Das $ dz.text () ist dasselbe, außer dass der angegebene Text direkt an die Zwischenablage (oder das Pasteboard) übergeben wird. Eine dieser Funktionen muss vor dem Beenden aufgerufen werden, oder Dropzone weiß nicht, ob das Ziel fertig ist.

Als nächstes die angeklickt Funktion ist definiert. Sie können diesen Code zum Skript hinzufügen:

 def clicked # # Der angeklickte Handler sollte die zu verwendende Größe und Erweiterung erhalten und # in der Konfigurationsdatei speichern. Speichern Sie Daten in der # ~ / Library / Anwendungsunterstützung / Dropzone / Zieldaten / CompressFiles.txt # # # Setzen Sie die Standard-Rückgabezeichenfolge auf die Fehlerbedingung. # result = "Entschuldigung, Sie haben den Vorgang abgebrochen." # # Fordern Sie die Breite der Grafik an. # button1, width = '. / CocoaDialog Standard-Eingabefeld --title "Dateien komprimieren: Grafikbreite" --e --informative-text "Welche Breite?"' abgebrochen. Fahren Sie nicht fort, wenn sie abbrechen. # if button1! = "2" # # Fragen Sie nach dem Grafikdatentyp, der am Ende angezeigt werden soll. # button2, extnum = '. / CocoaDialog Dropdown --titel "Dateien komprimieren: Grafikformat" --text "Welches Grafikformat?" --items ".jpg" ".png" ".gif" --button1 "Ok" --button2 "Cancel" '. split ("\ n") # # Prüfen Sie, ob der Benutzer den Vorgang abgebrochen hat. Fahren Sie nicht fort, wenn sie abbrechen. # if button2! = "2" # # Ändern Sie die Dropdown-Nummer in eine Zeichenfolge. # case extnum.to_i wenn 0 ext = ".jpg" wenn 1 ext = ".png" wenn 2 ext = ".gif" end # # Stellen Sie sicher, dass das Datenverzeichnis vorhanden ist. # dataDir = File.expand_path ("~ / Library / Anwendungsunterstützung / Dropzone / Zieldaten /") if! File.directory?(dataDir) # # Das Verzeichnis existiert nicht! Erstelle es! # FileUtils.mkdir_p (dataDir) end # # Schreibe die Datendatei. Nicht anhängen, sondern löschen und neu schreiben! # File.open ("# dataDir /CompressFiles.txt", 'w') | Datei | file.write ("Größe: # width \ nExt: # ext") # # Informieren Sie den Benutzer, indem Sie den Rückgabewert auf das setzen, was der Benutzer angegeben hat. # result = "Größe: # width px, Ext: # ext" end end # # Teilen Sie dem Benutzer mit, dass dies erledigt ist. # $ dz.finish (Ergebnis) # # Beenden Sie das Dropzone-Protokoll. Wenn Sie eine URL in der Zwischenablage haben möchten, geben Sie hier # ein. Wenn Sie nur Text in die Zwischenablage kopieren möchten, verwenden Sie stattdessen $ dz.text (). # Entweder $ dz.url () oder $ dz.text () muss das letzte in der angeklickten Methode sein. # $ dz.url (falsch) Ende

Das angeklickt Funktion verwendet einfach das externe Programm CocoaDialog um das Breitenziel der Grafik zu erhalten und dann erneut für die Erweiterung zu verwenden. CocoaDialog ist in Dropzone enthalten, Sie können es jedoch auch in Ihren eigenen Skripts herunterladen und verwenden.

Sobald die Informationen vom Benutzer abgerufen wurden, wird das Standardverzeichnis erstellt, falls es nicht vorhanden ist, und die Voreinstellungen werden in einer Datendatei gespeichert CompressFiles.txt. Das gezogen Funktion liest diese Datei.

Zuletzt werden die Einstellungen mit dem Benutzer an den Benutzer zurückgegeben $ dz.finish () Funktion und Aufruf der dz.url () Funktion, um den Prozess zu beenden.

Testen

Wenn Sie das Terminal zum öffnen ~ / Library / Anwendungssupport / Dropzone / Zielskripts / In diesem Verzeichnis sehen Sie ein Unterverzeichnis mit dem Namen lib. Gehen Sie in dieses Verzeichnis und Sie können das Ziel testen. Durch Eingabe von:

ruby runner.rb CompressImage.dropzone angeklickt

Sie können die angeklickte Funktion des Ziels testen. Ebenso können Sie Folgendes eingeben:

ruby runner.rb CompressImage.dropzone wurde gezogen 

Dadurch wird die gezogene Funktion mit der Taste ausgeführt Datei. Sie müssen die Eingabetaste mehrmals drücken, um den gesamten Vorgang zu durchlaufen. Wenn du platzierst setzt Funktionsaufrufe im Code zum Anzeigen von Variablenwerten können Sie zum Debuggen von Code verwenden.

Sie können die Ausgabe eines laufenden Ziels auch anzeigen, indem Sie drücken Umschalt-Befehl-D im Dropzone-Menü. Dropzone zeigt dann die Ausgabekonsole Dadurch werden alle Ausgaben des Zielskripts angezeigt. Eine praktische Debugging-Funktion.

In der Zukunft

Dropzone wird aktiv entwickelt und andere Programmierer erstellen Zieldateien. Sie können hier alternative Ziele oder das GitHub-Konto von Dropzone anzeigen, Ihre Zieldatei hinzufügen und eine Pull-Anforderung erteilen.

Dropzone Dropdown-Menü

Der Autor, John Winter, sagte mir, dass die neue Version in einigen Monaten erscheinen wird. Sie können eine kurze Vorschau auf Version 3.0 erhalten! Version 3.0 enthält einige Verbesserungen in der API und in Erweiterungen der Benutzeroberfläche.

Fazit

Ich hoffe, dass Sie dieses Reiseziel genauso genießen wie ich. Ich benutze es jeden Tag in meinem Beruf. Sie können jetzt die Grundlagen hier anwenden und mit Ihren eigenen experimentieren. Wenn Sie ein neues Ziel erstellen, teilen Sie es bitte in den Kommentaren unten.