Dropzone 3-acties schrijven

In Bestemmingen schrijven voor Dropzone, Ik heb je laten zien hoe je één bestandbestemming kunt maken om uit te breiden Afgeefpunt. Deze tutorial bouwt voort op die basis om te laten zien wat nieuw is in Dropzone 3 en hoe je hiervan kunt profiteren.

Zoals eerder zal alle code in zijn Robijn. Als je niet weet hoe je moet programmeren Robijn, Ik stel voor om te studeren De grondbeginselen van Ruby eerste.

Overzicht

Dropzone 3 heeft de bestemmingskringen verloren die uniek was voor het oorspronkelijke programma.

Dropzone 3

In Dropzone 3 zijn alle acties staan ​​in het drop-down pictogrammenu van de menubalk. Wat heette a bestemming in de oude versie is nu een actie. Hiermee wordt het idee behouden dat iets kan worden uitgevoerd op de bestanden of tekst die op een gegeven wordt neergezet actie.

Dropzone 3 liet ook het gebruik van één bestand vallen Robijn script voor een actie. Dropzone 3 gebruikt nu een speciale Mac OS X-map die de inhoud van de gemiddelde gebruiker verbergt. Een actie kan nu andere ondersteunende bestanden bevatten die anderen niet in de weg zitten acties.

Mogelijke acties Menu

Klik op de + symbool in de linkerbovenhoek onthult alle Ingebouwde acties En elk Gebruikersacties.

Dropzone 3-voorkeuren

Klik op het tandwiel in de rechterbovenhoek om bij de voorkeuren, Foutopsporingsconsole, Reset Acties, en Helpen menus.

De Drop Bar bovenaan de vervolgkeuzelijst is een handige plek om bestanden op te slaan terwijl u bestanden samenvoegt voordat u ze op een actie plaatst. Door hier bestanden te slepen en neer te zetten worden ze niet verplaatst. Het slaat hun locaties op.

Het tweede niveau met de titel FOLDERS / APPS is een snelstartbalk voor elk programma of map die daar wordt geplaatst. Als een bestand wordt gesleept naar een programmapictogram, wordt het programma gestart met dat bestand geladen.

Het laatste niveau is het acties die zijn ingesteld om te gebruiken. Er is geen limiet aan het aantal acties. Acties kunnen meer dan eens worden gebruikt, waarbij elk zijn eigen presets heeft.

Een actie maken

Maak een nieuwe actie door te selecteren Actie ontwikkelen in de + menu.

Ontwikkelactie oproepen

Dit zal de Actie ontwikkelen dialoog.

Ontwikkel actiedialoog

Vul het dialoogvenster zoals hierboven in en druk op Actie maken. De editor die het systeem heeft geconfigureerd voor Ruby-scripts wordt geopend met het gemaakte actiebestand. De action.rb bestand is het startpunt van de actie.

Action Directory

Door de editor te gebruiken om de locatie van dit bestand te onthullen, vindt u het in de map ~ / Bibliotheek / Application Support / Dropzone 3 / Actions. In deze map, een speciale map met de naam Unpack.dzbundle dat bevat de action.rb bestand en een standaard icon.png het dossier. Alle bestanden voor de actie moeten hier zijn. De icon.png bestand is de afbeelding die Dropzone weergeeft in het vervolgkeuzemenu. Vervang dit door het exemplaar dat in de download wordt gegeven.

Het standaard startbestand geeft een basisoverzicht van de Dropzone 3 API. Verwijder alles behalve de koptekst voor dit voorbeeld.

# Dropzone Action Info # Name: Unpack # Description: Deze actie pak zip-bestanden uit in een opgegeven map. # Handles: Bestanden # Creator: Richard Guay # URL: http://customct.com # Evenementen: Geklikt, versleept # KeyModifiers: Command, Option, Control, Shift # SkipConfig: No # RunsSandboxed: Yes # Version: 1.0 # MinDropzoneVersion: 3.2 

De kop is grotendeels hetzelfde als de vorige versie. Ik zal de nieuwe en gewijzigde items bespreken. Raadpleeg alstublieft Bestemmingen schrijven voor Dropzone voor items die niet zijn gedekt.

handgrepen

Deze beschrijving is niet nieuw, maar sterk vereenvoudigd. Het mogelijke handgrepen is nu bestanden, Tekst, of beide gescheiden met een komma. Vroeger was het de meer technische term voor hetzelfde. Voor deze actie, zet bestanden enkel en alleen.

KeyModifiers

Indien ingesteld, stelt Dropzone de omgevingsvariabele in voor belangrijke modifiers die worden ingedrukt tijdens het slepen en neerzetten of klikken op acties. Aangezien deze actie geen modifiers nodig heeft, verwijdert u die regel.

SkipConfig

Deze header vertelt Dropzone of de actie moet worden geconfigureerd of niet. Voor deze actie moet deze instelling worden ingesteld vals.

Versie

Deze header is om Dropzone te vertellen welke versie het is. Dit is om gemakkelijker bij te werken.

MinDropzoneVersion

Deze kop geeft de laagste Dropzone-versie aan die de actie nodig heeft.

Na de MinDropzoneVersion, toevoegen:

# OptionsNIB: ChooseFolder # UniqueID: 234985238238452835 

De OptionsNIB vertelt Dropzone een voorgeconfigureerd optiepaneel om te gebruiken. De mogelijke waarden zijn:

  • Log in
  • ExtendedLogin
  • API sleutel
  • UsernameAPIKey
  • Kies folder
  • ChooseApplication

Deze actie gebruikt de Kies folder keuze. Dit zal de gebruiker vragen om een ​​doelmap op te geven voor het uitpakken van de bestanden. De actie krijgt de waarde in de pad omgevingsvariabele.

De Unieke ID moet een willekeurig nummer zijn dat het actiepakket uniek identificeert. Als de actie wordt vermeld op de hoofdsite, helpt dit om de versie-informatie te bepalen. Wanneer de actie wordt gewijzigd, zal Dropzone anderen informeren dat de nieuwe versie beschikbaar is en deze rechtstreeks vanuit Dropzone kan bijwerken.

Gesleepte actie

De gesleept () De functie wordt uitgevoerd wanneer de gebruiker bestanden sleept naar de actie in het vervolgkeuzemenu. De gesleept () De functie voor het uitpakken is:

def gesleept # # Bepaalde modus inschakelen. # $ dz.determinate (true) # # Verkrijg de gegevenswaarden. # if ((ENV ['path']! = nil) && (Filedirectory? (ENV ['path']))) # # krijgt de standaardwaarden. # dir = ENV ['path'] # # Verwerk elk afbeeldingsbestand. # total = $ items.count # # Tell dropzone we beginnen ... # $ dz.begin ("Uitpakken # totaal bestanden ...") # # Index over alle gegeven afbeeldingen. # voor index in 0 ... totaal # # Converteer het afbeeldingsbestand. # '/ usr / bin / unzip -n "# $ itemsindex]" -d "# dir"' # # Verwijder het originele bestand. # File.delete ($ items [index]) # # Vertel Dropzone welk percentage is gedaan. # $ dz.percent ((((index + 1) * 100) totaal) .to_i) end else # # De gebruiker heeft theaction niet geconfigureerd. Vertel het ze. # $ dz.error ("Actie uitpakken", "U hebt geen doelmap opgegeven!") einde # # Vertel de gebruiker dat het gedaan is. # $ dz.finish ("Klaar met uitpakken.") # # Sluit het dropzone-protocol af. Als je een url op het klembord wilt, geef dit # hier door. Als u alleen tekst naar het klembord wilt kopiëren, gebruikt u in plaats daarvan $ dz.text (). # $ Dz.url () of $ dz.text () moet het laatste zijn in de gesleepte methode. # $ dz.url (false) einde 

De gesleept () functie vertelt Afgeefpunt als het al dan niet bepalend is door de $ Dz.determinate () functie. Deze actie is bepaald, dus waar moet worden doorgegeven. Als er een internetverzoek in de actie zit, moet dit worden ingesteld op vals.

De actie bepaalt of een juiste configuratie bestaat. De als statement bepaalt dat door te kijken of de variabele die wordt gebruikt om de presets te geven bestaat en een geldige directory is. Als het niet is geconfigureerd, gebruikt het de $ Dz.error () functie om een ​​foutbericht door te geven aan de gebruiker en het programma af te sluiten. Er is ook een $ Dz.warning () functie die hetzelfde type dialoogvenster aan de gebruiker geeft, maar de actie niet stopt. Er is ook een $ Dz.fail () functie die hetzelfde werkt als $ Dz.error (), maar laat een X op het pictogram om aan te geven dat het proces volledig is mislukt.

Als het pad informatie is er en prima, het gaat verder met de actie. Het zegt Afgeefpunt dat het begint met $ Ds.begin () functie. Dat vereist een string die ook wordt doorgegeven aan de gebruiker. Alle bestanden die op de actie zijn geplaatst, hebben hun directoryadressen in de $ items rangschikking.

De actie loopt over elk punt $ items geslaagd en roept het standaard zip-programma om het bestand uit te pakken in de aangewezen map. Nadat elk bestand is verwerkt, wordt het oorspronkelijke bestand verwijderd en wordt het percentage verhoogd met behulp van de $ Dz.percent () functie.

Als alle bestanden zijn voltooid, roept de actie het $ Dz.finish () functie met een goede boodschap. De laatste functieaanroep van een actie moet de. Zijn $ Dz.url () of de $ Dz.text () functie. Een url of tekst die naar het klembord kan worden gekopieerd, kan worden doorgegeven. Anders doorgeven vals.

Klikactie

De geklikt () functie wordt aangeroepen wanneer de gebruiker op de actie klikt. Deze actie krijgt een nieuwe map om de archieven uit te pakken. Dit is niet nodig, maar laat zien hoe u enkele van de nieuwe functies van Dropzone 3 kunt gebruiken. De geklikt () functie is hieronder:

def kliked # # De aangeklikte handler moet de bestemmingsdirectory gebruiken om te gebruiken en # sla deze op. # # # Vraag de breedte van de afbeelding aan. # dir = $ dz.cocoa_dialog ("fileselect - select-directories --select-only-directories --title" Unpack to Directory '") .split (" \ n ") # # Kijk of de gebruiker het heeft geannuleerd. Ga niet verder als ze annuleren. # if ((dir [0]! = nil) && (File.directory?(dir[0]))) # # Sla de maplocatie op. # $ dz.save_value ("path", dir [0]) else # # De gebruiker heeft de actie niet geconfigureerd. Vertel het ze. # $ dz.error ("Uitpakken actie", "U hebt geannuleerd! U hebt geen doeldirectory opgegeven!") einde # # Vertel de gebruiker dat het klaar is. # $ dz.finish ("Directory uitpakken: # dir [0]") # # Sluit het dropzone-protocol af. Als je een url op het klembord wilt, geef dit # hier door. Als u alleen tekst naar het klembord wilt kopiëren, gebruikt u in plaats daarvan $ dz.text (). # Ofwel $ dz.url () of $ dz.text () moet het laatste zijn in de geklikte methode. # $ dz.url (false) einde 

De geklikt () function vraagt ​​een nieuwe map aan bij de gebruiker die de $ Dz.cocoa_dialog () functie. Deze functie neemt de opdrachtregel voor de Cocoa Dialog programmeer als de parameter van de functie, geef deze door aan Cocoa Dialog programma en geeft de resultaten van het oproepen van de Cocoa Dialog programma.

De resultaten zijn opgesplitst in de invoeren teken in een array van strings. Het controleert op een geldige map en dat de gebruiker niet op de knop Annuleren heeft gedrukt. Als dit mislukt, wordt het gebruikt $ Dz.error () functie om de gebruiker te vertellen en af ​​te sluiten. Anders slaat het de map op Afgeefpunt de ... gebruiken $ Dz.save_value () functie. Alles wat met deze functie in een actie is opgeslagen, kan bij heruitvoer in de omgevingsvariabelen worden opgehaald.

De functie wordt afgesloten als de gesleept () functie deed.

Andere functies

Dropzone 3 heeft ook een tijdelijke bestandsmapfunctie genaamd $ Dz.temp_folder (). Het geeft de directory terug die gebruikt moet worden om tijdelijke bestanden aan te maken.

Als u bestanden wilt kopiëren of verplaatsen, moet u de Rsync.do_copy () functie moet worden gebruikt.

Ieder Sleutel Modifiers gespecificeerd in de koptekst staan ​​in de ENV [ 'KEY_MODIFIERS'] omgevingsvariabele.

debugging

De nieuwe debug-console is een geweldige toevoeging. Als u de console wilt openen, selecteert u deze in het menu:

De debug-console openen

De console toont al de uitvoer van de laatste gebruikte actie.

De foutopsporingsconsole

De console toont alle VARIABELEs doorgegeven in de omgeving, de EVENEMENT (in dit voorbeeld aangeklikt), elk Save_Values en het laatste bericht dat aan de gebruiker is gegeven.

Wanneer deze regel wordt toegevoegd na de $ Dz.Save_Value () functie,

'puts' De gegeven informatie: "+ dir [0]" 

deze foutopsporingsinformatie is zichtbaar in de console:

Debuginformatie weergeven

De extra informatie is er in het rood. Dit biedt een handige manier om actiescripts te debuggen.

Conclusie

In deze zelfstudie heb ik je de verschillen laten zien in de nieuwe versie van Afgeefpunt en hoe je je eigen actie kunt maken om bestanden te unzippen naar een door de gebruiker gespecificeerde map. Nu je weet hoe je acties moet maken, ga er een paar maken en deel ze met iedereen.