Scrivere azioni Dropzone 3

Nel Scrivere le destinazioni per Dropzone, Ti ho mostrato come creare una destinazione di file singolo per l'estensione Zona di rilascio. Questo tutorial si baserà su quella base per mostrare cosa c'è di nuovo in Dropzone 3 e come sfruttarlo.

Come prima, tutto il codice sarà in Rubino. Se non sai come programmare in Rubino, Suggerisco di studiare I fondamenti di Ruby primo.

Panoramica

Dropzone 3 ha perso i cerchi di destinazione che erano unici per il programma originale.

Dropzone 3

In Dropzone 3, tutto il Azioni sono nel menu icona a discesa dalla barra dei menu. Quello che è stato chiamato a destinazione nella vecchia versione è ora un azione. Ciò preserva l'idea che qualsiasi cosa possa essere eseguita sui file o sul testo lasciato cadere su un dato azione.

Dropzone 3 ha anche abbandonato l'uso di un singolo file Rubino script per un'azione. Dropzone 3 ora usa una cartella speciale di Mac OS X che nasconde i suoi contenuti all'utente medio. Un azione ora può contenere altri file di supporto che non interferiscono con gli altri Azioni.

Menu Azioni possibili

Cliccando sul + il simbolo nell'angolo in alto a sinistra rivela tutto il Azioni integrate e qualsiasi Azioni dell'utente.

Dropzone 3 Preferenze

Clicca sulla marcia nell'angolo in alto a destra per arrivare al Preferenze, Console di debug, Reimposta azioni, e Aiuto menu.

Il Barra di scorrimento nella parte superiore del menu a discesa è un posto utile per archiviare i file durante la raccolta dei file prima di inviarli a un'azione. Trascinare e rilasciare i file qui non li sposta. Memorizza le loro posizioni.

Il secondo livello con la voce CARTELLE / APP è una barra di avvio veloce per qualsiasi programma o cartella collocato lì. Se un file viene trascinato sull'icona di un programma, il programma verrà avviato con quel file caricato.

L'ultimo livello è il Azioni che sono impostati per l'uso. Non c'è limite al numero di azioni. Le azioni possono essere utilizzate più di una volta con ciascuna con i propri preset.

Creazione di un'azione

Crea una nuova azione selezionando Sviluppa azione nel + menu.

Invocazione di Develop Action

Questo mostrerà il Sviluppa azione dialogo.

Sviluppa finestra di dialogo di azione

Compila il dialogo come sopra e premi Crea azione. L'editor che il sistema ha configurato per gli script Ruby si aprirà con il file di azione creato. Il action.rb il file è il punto di partenza dell'azione.

Directory di azioni

Usando l'editor per rivelare la posizione di questo file, lo troverai nella directory ~ / Library / Application Support / Dropzone 3 / Actions. In questa directory, una directory speciale chiamata Unpack.dzbundle che contiene il action.rb file e un valore predefinito icon.png file. Tutti i file per l'azione devono essere qui. Il icon.png file è l'immagine visualizzata da Dropzone nel menu a discesa. Sostituirlo con quello indicato nel download.

Il file iniziale predefinito fornisce una panoramica di base dell'API Dropzone 3. Rimuovi tutto tranne l'intestazione per questo esempio.

# Dropzone Action Info # Nome: Unpack # Descrizione: questa azione scompatta i file zip in una directory specificata. # Handle: Files # Creator: Richard Guay # URL: http://customct.com # Events: Clicked, Dragged # KeyModifiers: Command, Option, Control, Shift # SkipConfig: No # RunsSandboxed: Yes # Version: 1.0 # MinDropzoneVersion: 3.2 

L'intestazione è per lo più uguale alla versione precedente. Vedrò gli elementi nuovi e modificati. Per favore riferisci a Scrivere le destinazioni per Dropzone per articoli non coperti.

maniglie

Questa descrizione non è nuova, ma notevolmente semplificata. Il possibile maniglie è ora File, Testo, o entrambi separati da una virgola. Prima era il termine più tecnico per la stessa cosa. Per questa azione, metti File solo.

KeyModifiers

Quando è impostato, Dropzone imposterà la variabile d'ambiente per i modificatori di tasti tenuti premuti durante le operazioni di trascinamento e rilascio o clic. Poiché questa azione non ha bisogno di modificatori, cancella quella linea.

SkipConfig

Questa intestazione indica a Dropzone se l'azione deve essere configurata o meno. Questa azione richiede che questa impostazione sia impostata su falso.

Versione

Questa intestazione deve dire a Dropzone quale versione è. Questo è per un aggiornamento più semplice.

MinDropzoneVersion

Questa intestazione specifica la versione di Dropzone più bassa di cui l'azione ha bisogno.

Dopo il MinDropzoneVersion, Inserisci:

# OptionsNIB: ChooseFolder # UniqueID: 234985238238452835 

Il OptionsNIB dice a Dropzone un pannello delle opzioni preconfigurato da usare. I valori possibili sono:

  • Accesso
  • ExtendedLogin
  • apikey
  • UsernameAPIKey
  • ChooseFolder
  • ChooseApplication

Questa azione utilizzerà il ChooseFolder opzione. Questo chiederà all'utente di specificare una cartella di destinazione per decomprimere i file. L'azione riceverà il valore nel sentiero variabile d'ambiente.

Il UniqueID deve essere un numero casuale che identificherà univocamente il pacchetto di azioni. Se l'azione è elencata nel sito principale, ciò contribuirà a determinare le informazioni sulla versione. Quando l'azione viene modificata, Dropzone informerà gli altri che la nuova versione è disponibile e può aggiornarla direttamente da Dropzone.

Azione trascinata

Il trascinato () la funzione viene eseguita quando l'utente trascina i file sull'azione nel menu a discesa. Il trascinato () la funzione per l'azione di decompressione è:

def trascinato # # Attiva la modalità determinata. # $ dz.determinate (true) # # Ottieni i valori dei dati. # if ((ENV ['path']! = nil) && (Filedirectory? (ENV ['path']))) # # ottiene i valori predefiniti. # dir = ENV ['path'] # # Elabora ogni file immagine. # totale = $ items.count # # Indica dropzone che stiamo iniziando ... # $ dz.begin ("Disimballaggio # total files ...") # # Indice su tutte le immagini fornite. # per indice in 0 ... totale # # Converti il ​​file immagine. # '/ usr / bin / unzip -n "# $ itemsindex]" -d "# dir"' # # Elimina il file originale. # File.delete ($ items [index]) # # Tell Dropzone che percentuale ha fatto. # $ dz.percent ((((indice + 1) * 100) totale) .to_i) end else # # L'utente non ha configurato theaction. Diglielo. # $ dz.error ("Unpack Action", "Non hai dato una directory di destinazione!") end # # Dì all'utente che è stato fatto. # $ dz.finish ("Finished Unpacking.") # # Completare il protocollo dropzone. Se vuoi un URL negli appunti, passalo qui. Se vuoi solo copiare il testo negli appunti, usa invece $ dz.text (). # Sia $ dz.url () o $ dz.text () deve essere l'ultima cosa nel metodo trascinato. # $ dz.url (falso) fine 

Il trascinato () la funzione dice Zona di rilascio se è determinato o meno usando il $ Dz.determinate () funzione. Questa azione è determinata, quindi vero deve essere passato. Se è in corso una richiesta Internet, è necessario impostarla su falso.

L'azione determina se esiste una configurazione corretta. Il Se la dichiarazione determina che vedendo se la variabile usata per dare i preset esiste ed è una directory valida. Se non è configurato, utilizza il $ Dz.error () funzione per passare un messaggio di errore all'utente ed esce dal programma. C'è anche un $ Dz.warning () funzione che fornisce all'utente lo stesso tipo di finestra di dialogo, ma non interrompe l'azione. C'è anche un $ Dz.fail () funzione che funziona allo stesso modo di $ Dz.error (), ma lascia a X sull'icona per mostrare che il processo è completamente fallito.

Se la sentiero l'informazione è lì e va bene, continua con l'azione. Dice Zona di rilascio che sta iniziando con $ Ds.begin () funzione. Ciò richiede una stringa che viene anche passata all'utente. Tutti i file lasciati all'azione hanno i loro indirizzi di directory nel file articoli $ schieramento.

L'azione verrà ripetuta su ogni articoli $ passato e chiama il programma zip standard per decomprimere il file nella directory designata. Dopo che ogni file è stato processato, cancella il file originale e aumenta la percentuale eseguita usando $ Dz.percent () funzione.

Una volta fatto con tutti i file, l'azione chiama il $ Dz.finish () funziona con un messaggio appropriato. L'ultima chiamata di funzione di un'azione deve essere il $ Dz.url () o il $ Dz.text () funzione. È possibile passare un url o un testo da copiare negli appunti. Altrimenti, passa falso.

Azione cliccata

Il cliccato () la funzione viene chiamata ogni volta che l'utente fa clic sull'azione. Questa azione otterrà una nuova directory per decomprimere gli archivi. Questo non è necessario, ma mostra come utilizzare alcune delle nuove funzioni di Dropzone 3. Il cliccato () la funzione è di seguito:

def clickked # # Il gestore cliccato dovrebbe ottenere la directory di destinazione da usare e # salvarlo. # # # Richiedi la larghezza del grafico. # dir = $ dz.cocoa_dialog ("fileselect --select-directories --select-only-directories --title 'Unpack alla directory'") .split ("\ n") # # Verifica se l'utente ha annullato la chiamata. Non continuare se si annulla. # if ((dir [0]! = nil) && (File.directory?(dir[0]))) # # Salva il percorso della directory. # $ dz.save_value ("percorso", dir [0]) altro # # L'utente non ha configurato l'azione. Diglielo. # $ dz.error ("Unpack Action", "You cancelled out! Non hai dato una directory di destinazione!") end # # Informa l'utente che è stato fatto. # $ dz.finish ("Unpack Directory: # dir [0]") # # Completa il protocollo dropzone. Se vuoi un URL negli appunti, passalo qui. Se vuoi solo copiare il testo negli appunti, usa invece $ dz.text (). # Sia $ dz.url () o $ dz.text () deve essere l'ultima cosa nel metodo cliccato. # $ dz.url (falso) fine 

Il cliccato () funzione richiede una nuova directory all'utente utilizzando il $ Dz.cocoa_dialog () funzione. Questa funzione accetta la riga di comando per Cocoa Dialog programma come parametro della funzione, passa a Cocoa Dialog programma e restituisce i risultati della chiamata di Cocoa Dialog programma.

I risultati sono suddivisi al accedere personaggio in una serie di stringhe. Controlla una directory valida e l'utente non ha premuto il pulsante Annulla. Se fallisce, usa $ Dz.error () funzione per dire all'utente e uscire. Altrimenti, salva la directory in Zona di rilascio usando il $ Dz.save_value () funzione. Tutto ciò che viene salvato con questa funzione in un'azione è recuperabile nelle variabili di ambiente in caso di riesecuzione.

La funzione termina come trascinato () funzione ha fatto.

Altre funzioni

Dropzone 3 ha anche una funzione di cartella di file temporanea chiamata $ Dz.temp_folder (). Restituisce la directory che viene utilizzata per creare file temporanei.

Se hai bisogno di copiare o spostare file, il Rsync.do_copy () la funzione deve essere utilizzata.

Qualunque Modificatori chiave specificato nell'intestazione sono nel ENV [ 'KEY_MODIFIERS'] variabile d'ambiente.

Debug

La nuova console di debug è un'ottima aggiunta. Per aprire la console, selezionala dal menu:

Apertura della console di debug

La console mostrerà già tutto l'output dell'ultima azione utilizzata.

La console di debug

La console mostra tutto il VARIABILEs passato nell'ambiente, il EVENTO (cliccato in questo esempio), qualsiasi Save_Values, e il messaggio finale dato all'utente.

Quando questa riga viene aggiunta dopo il $ Dz.Save_Value () funzione,

'puts' Le informazioni fornite: "+ dir [0] ' 

queste informazioni di debug saranno visibili nella console:

Visualizzazione delle informazioni di debug

Le informazioni extra sono lì in rosso. Questo fornisce un modo conveniente per eseguire il debug degli script di azione.

Conclusione

In questo tutorial, ti ho mostrato le differenze nella nuova versione di Zona di rilascio e come creare la propria azione per decomprimere i file in una directory specificata dall'utente. Ora che sai come creare azioni, vai a crearne alcune e condividile con tutti.