Escribiendo Dropzone 3 Acciones

En Destinos de escritura para Dropzone, Te mostré cómo crear un destino de archivo único para extender Zona de descenso. Este tutorial se basará en esa base para mostrar qué hay de nuevo en Dropzone 3 y cómo aprovecharla..

Como antes, todo el código estará en Rubí. Si no sabes programar en Rubí, Sugiero estudiar Los fundamentos de ruby primero.

Visión general

Dropzone 3 ha perdido los círculos de destino que eran exclusivos del programa original.

Dropzone 3

En Dropzone 3, todos los comportamiento se encuentran en el menú de iconos desplegable de la barra de menús. Lo que se llamó un destino en la versión anterior es ahora una acción. Esto conserva la idea de que se puede realizar cualquier cosa en los archivos o el texto que se suelta en un archivo dado. acción.

Dropzone 3 también eliminó el uso de un solo archivo Rubí Guión para una acción. Dropzone 3 ahora usa una carpeta especial de Mac OS X que oculta su contenido al usuario promedio. Un acción Ahora puede contener otros archivos de soporte que no se interpongan en el camino de otros comportamiento.

Posibles acciones del menú

Haciendo clic en el + símbolo en la esquina superior izquierda revela toda la Acciones incorporadas y cualquier Acciones del usuario.

Dropzone 3 Preferencias

Haga clic en el engranaje en la esquina superior derecha para llegar a la Preferencias, Consola de depuración, Restablecer acciones, y Ayuda menús.

los Barra de caída en la parte superior de la lista desplegable es un lugar útil para almacenar archivos mientras se reúnen los archivos antes de colocarlos en una acción. Arrastrar y soltar archivos aquí no los mueve. Almacena sus ubicaciones.

El segundo nivel con el título. CARPETAS / APLICACIONES es una barra de inicio rápido para cualquier programa o carpeta colocada allí. Si un archivo se arrastra a un icono del programa, el programa se iniciará con ese archivo cargado.

El último nivel es el comportamiento que están configurados para su uso. No hay límite al número de acciones. Las acciones se pueden usar más de una vez y cada una tiene sus propios ajustes predeterminados.

Creando una acción

Crea una nueva acción seleccionando Desarrollar acción en el + menú.

Invocando Desarrollar Acción

Esto traerá la Desarrollar acción diálogo.

Desarrollar el diálogo de acción

Rellene el cuadro de diálogo como se muestra arriba y presione Crear acción. El editor que el sistema ha configurado para los scripts de Ruby se abrirá con el archivo de acción creado. los action.rb Archivo es el punto de partida de la acción..

Directorio de acciones

Usando el editor para revelar la ubicación de este archivo, lo encontrará en el directorio ~ / Library / Application Support / Dropzone 3 / Actions. En este directorio, un directorio especial llamado Unpack.dzbundle que contiene el action.rb archivo y un valor predeterminado icon.png expediente. Todos los archivos para la acción tienen que estar aquí. los icon.png archivo es la imagen que Dropzone muestra en el menú desplegable. Reemplaza esto con el dado en la descarga..

El archivo de inicio predeterminado proporciona una descripción básica de la API de Dropzone 3. Eliminar todo menos el encabezado de este ejemplo..

# Información de acción de Dropzone # Nombre: Desempaquetar # Descripción: Esta acción desempaqueta los archivos zip en un directorio específico. # Manijas: Archivos # Creador: Richard Guay # URL: http://customct.com # Eventos: Clicked, Dragged # KeyModifiers: Command, Option, Control, Shift # SkipConfig: No # RunsSandboxed: Yes # Version: 1.0 # MinDropzoneVersion: 3.2 

El encabezado es casi igual que la versión anterior. Voy a repasar los artículos nuevos y cambiados. Por favor refiérase a Destinos de escritura para Dropzone para artículos no cubiertos.

Asas

Esta descripción no es nueva, pero se simplifica enormemente. Lo posible Asas es ahora Archivos, Texto, o ambos separados por una coma. Antes, era el término más técnico para la misma cosa. Para esta acción, pon Archivos solamente.

Modificadores de teclas

Cuando se establece, Dropzone establecerá la variable de entorno para los modificadores clave mantenidos durante las acciones de arrastrar y soltar o hacer clic. Como esta acción no necesita modificadores, borra esa línea..

SkipConfig

Este encabezado le dice a Dropzone si la acción necesita ser configurada o no. Esta acción necesita que esta configuración se establezca en falso.

Versión

Este encabezado es para decirle a Dropzone qué versión es. Esto es para una actualización más fácil..

MinDropzoneVersion

Este encabezado especifica la versión más baja de Dropzone que necesita la acción.

Después de la MinDropzoneVersion, añadir:

# OptionsNIB: ChooseFolder # UniqueID: 234985238238452835 

los OpcionesNIB le dice a Dropzone un panel de opciones preconfiguradas para usar. Los valores posibles son:

  • Iniciar sesión
  • ExtendedLogin
  • Clave API
  • Nombre de usuarioAPIKey
  • Elegir la carpeta
  • ElijaAplicación

Esta acción utilizará el Elegir la carpeta opción. Esto le pedirá al usuario que especifique una carpeta de destino para descomprimir los archivos. La acción recibirá el valor en el camino Variable ambiental.

los Identificación única tiene que haber algún número aleatorio que identifique de forma única el paquete de acciones. Si la acción aparece en el sitio principal, esto ayudará a determinar la información de la versión. Cuando se modifica la acción, Dropzone informará a otros que la nueva versión está disponible y puede actualizarla directamente desde Dropzone.

Acción arrastrada

los arrastrado () La función se ejecuta cuando el usuario arrastra los archivos a la acción en el menú desplegable. los arrastrado () La función para la acción de desempaquetar es:

def dragged # # Activa el modo determinado. # $ dz.determinate (true) # # Obtener los valores de los datos. # if ((ENV ['path']! = nil) && (Filedirectory? (ENV ['path']))) # # obtiene los valores predeterminados. # dir = ENV ['ruta'] # # Procesa cada archivo de imagen. # total = $ items.count # # Dígale a Dropzone que estamos comenzando ... # $ dz.begin ("Desempaquetando # archivos total ...") # # Indice sobre todas las imágenes proporcionadas. # para el índice en 0 ... total # # Convertir el archivo de imagen. # '/ usr / bin / unzip -n "# $ itemsindex]" -d "# dir"' # # Eliminar el archivo original. # File.delete ($ items [index]) # # Indique a Dropzone qué porcentaje se realizó. # $ dz.percent ((((index + 1) * 100) total) .to_i) final else # # El usuario no configuró la acción. Dígales. # $ dz.error ("Acción Desempaquetar", "¡No le diste un directorio de destino!") final # # Dígale al usuario que está listo. # $ dz.finish ("Finished Unpacking.") # # Finalice el protocolo de la zona de descarga. Si quieres una url en el portapapeles, pásala # aquí. Si solo desea copiar texto al portapapeles, use $ dz.text () en su lugar. # Ya sea $ dz.url () o $ dz.text () tiene que ser lo último en el método arrastrado. # $ dz.url (falso) final 

los arrastrado () la función dice Zona de descenso Si está determinado o no mediante el uso de la $ dz.determinate () función. Esta acción es determinada, por lo que cierto necesita ser aprobado Si hay una solicitud de Internet en la acción, debe configurarse para falso.

La acción determina si existe una configuración adecuada. los Si La sentencia determina que al ver si la variable utilizada para asignar los valores preestablecidos existe y es un directorio válido. Si no está configurado, utiliza el $ dz.error () Función para pasar un mensaje de error al usuario y sale del programa. También hay una $ dz.warning () Función que proporciona el mismo tipo de diálogo al usuario, pero que no detiene la acción. También hay una $ dz.fail () Función que funciona igual que $ dz.error (), pero deja un X en el icono para mostrar que el proceso falló totalmente.

Si el camino La información está ahí y está bien, continúa con la acción. Dice Zona de descenso que esta empezando con $ ds.begin () función. Eso toma una cadena que también se pasa al usuario. Todos los archivos colocados en la acción tienen sus direcciones de directorio en el $ artículos formación.

La acción se desplazará sobre cada $ artículos Pasó y llama al programa zip estándar para descomprimir el archivo en el directorio designado. Después de que cada archivo se procesa, borra el archivo original y aumenta el porcentaje realizado utilizando el $ dz.percent () función.

Una vez hecho con todos los archivos, la acción llama al $ dz.finish () Funcionar con un mensaje adecuado. La última función llamada de una acción tiene que ser la $ dz.url () o la $ dz.text () función. Se puede pasar una url o texto para copiar en el portapapeles. De lo contrario, pasar falso.

Acción pulsada

los pulsado () La función se llama cada vez que el usuario hace clic en la acción. Esta acción obtendrá un nuevo directorio para descomprimir los archivos. Esto no es necesario, pero muestra cómo usar algunas de las nuevas funciones de Dropzone 3. los pulsado () la función está abajo:

def clicked # # El controlador en el que se hizo clic debería obtener el directorio de destino para usarlo y # guardarlo. # # # Solicitar el ancho del gráfico. # dir = $ dz.cocoa_dialog ("selección de archivos --select-directorios ‑‑seleccionar-solo-directorios --título 'Desempaquetar en el Directorio'") .split ("\ n") # # Ver si el usuario canceló. No continúes si se cancelan. # if ((dir [0]! = nil) && (File.directory?(dir[0])) # # Guardar la ubicación del directorio. # $ dz.save_value ("path", dir [0]) else # # El usuario no configuró la acción. Dígales. # $ dz.error ("Desempaquetar acción", "¡Usted canceló! ¡No le dio un directorio de destino!") final # # Dígale al usuario que ya está hecho. # $ dz.finish ("Unpack Directory: # dir [0]") # # Termine el protocolo de la zona de colocación. Si quieres una url en el portapapeles, pásala # aquí. Si solo desea copiar texto al portapapeles, use $ dz.text () en su lugar. # Ya sea $ dz.url () o $ dz.text () tiene que ser lo último en el método en el que se hizo clic. # $ dz.url (falso) final 

los pulsado () La función solicita un nuevo directorio del usuario utilizando el $ dz.cocoa_dialog () función. Esta función toma la línea de comando para el Diálogo de cacao programa como parámetro de la función, lo pasa a Diálogo de cacao programa, y ​​devuelve los resultados de llamar al Diálogo de cacao programa.

Los resultados se dividen en la Entrar carácter en una matriz de cadenas. Comprueba si hay un directorio válido y que el usuario no presionó el botón de cancelar. Si esto falla, usa $ dz.error () Función para decirle al usuario y salir. De lo contrario, guarda el directorio en Zona de descenso utilizando la $ dz.save_value () función. Cualquier cosa guardada con esta función en una acción es recuperable en las variables de entorno al volver a ejecutar.

La función sale como la arrastrado () la función hizo.

Otras funciones

Dropzone 3 También tiene una función de carpeta de archivos temporal llamada $ dz.temp_folder (). Devuelve el directorio que se utilizará para crear archivos temporales..

Si necesita copiar o mover archivos, Rsync.do_copy () la función necesita ser utilizada.

Alguna Modificadores clave especificado en el encabezado están en el ENV ['KEY_MODIFIERS'] Variable ambiental.

Depuración

La nueva consola de depuración es una gran adición. Para abrir la consola, selecciónela del menú:

Abriendo la consola de depuración

La consola ya mostrará todos los resultados de la última acción utilizada..

La consola de debug

La consola muestra todos los VARIABLEs pasado en el medio ambiente, el EVENTO (clic en este ejemplo), cualquier Guardar_Valors, y el mensaje final dado al usuario..

Cuando esta línea se agrega después de la $ dz.Save_Value () función,

'pone "la información dada:" + dir [0]' 

Esta información de depuración se podrá ver en la consola:

Visualización de información de depuración

La información extra está ahí en rojo. Esto proporciona una forma conveniente de depurar scripts de acción..

Conclusión

En este tutorial, te mostré las diferencias en la nueva versión de Zona de descenso y cómo crear su propia acción para descomprimir archivos en un directorio especificado por el usuario. Ahora que sabe cómo crear acciones, vaya a hacer algunas y compártalas con todos..