Diálogos y comandos

Interfaz de scripts, modelada sobre la de Aseprite: Dialog{ title = ... } construye una ventana a partir de widgets (label, entry, number, slider, check, radio, combobox, color, shades, button, separator, file) y plugin:newCommand añade comandos a los menús, a la paleta de comandos y al editor de Atajos de teclado. El editor dibuja la ventana, solo con texto, con una barra de título que nombra el script y lo marca como "script". Los callbacks (onclick, onchange, onclose) se ejecutan en el script, de uno en uno, cada uno como un solo paso de deshacer; un script con un diálogo abierto sigue vivo, inactivo, mientras el usuario sigue dibujando, y detenerlo cierra sus diálogos. No se admiten: widgets de lienzo ni dlg:repaint. (18 funciones)

Dialog(opts) — pura

Crea un diálogo: una ventana que el script dibuja en el editor, construida con los métodos dlg: y abierta con dlg:show. La ventana siempre nombra el script y está marcada como "script" para que no se pueda confundir con una parte del editor, y todo lo que un script pone en ella es texto simple. Añade widgets con los métodos dlg: (se encadenan), y luego dlg:show{ wait = false } para una ventana que sigue abierta mientras el usuario sigue dibujando, o dlg:show{ wait = true } (el valor predeterminado) para detener el script hasta que se cierre. Un script con un diálogo abierto sigue vivo, inactivo; detener el script lo cierra. Los callbacks (onclick, onchange, onclose) se ejecutan en el script; cada uno es un solo paso de deshacer. Se pueden tener abiertos como máximo 4 diálogos y abrir 10 cada 10 segundos; como máximo 100 widgets cada uno.

  • opts (table) — Una cadena de título, o una tabla. Dialog("Title") es Dialog{ title = "Title" }.
    • title (string) — Se muestra en la parte superior del diálogo (máx. 80 caracteres). Solo texto.
    • onclose (function(ev)) — Se llama, en el script, cuando el usuario cierra el diálogo.

Devuelve (table): El diálogo. dlg.data es una tabla con los valores actuales de los widgets que tienen un id.

dlg:button(opts?) — pura

Añade un botón. Sin onclick, al pulsarlo cierra el diálogo y establece dlg.data.<id> en true (así, tras dlg:show{ wait = true } puedes saber qué botón lo cerró).

  • opts (table, opcional)
    • id (string) — Da nombre al widget: su valor se lee como dlg.data.<id> y es el destino de dlg:modify. Letras, dígitos y _ , empezando por una letra; único en el diálogo.
    • label (string) — Texto que se muestra a la izquierda del widget; un widget con etiqueta empieza su propia fila.
    • visible (boolean; predeterminado true) — Muestra el widget.
    • enabled (boolean; predeterminado true) — Permite que el usuario lo cambie.
    • text (string) — El texto del botón.
    • focus (boolean; predeterminado false) — Empieza con el foco del teclado aquí.
    • onclick (function(ev)) — Se llama, en el script, cuando el usuario lo pulsa, con ev = { id }. Todo lo que cambia en el documento es un solo paso de deshacer.

Devuelve (table): El diálogo, para encadenar.

dlg:check(opts?) — pura

Añade una casilla de verificación. Su valor es dlg.data.<id> (un booleano).

  • opts (table, opcional)
    • id (string) — Da nombre al widget: su valor se lee como dlg.data.<id> y es el destino de dlg:modify. Letras, dígitos y _ , empezando por una letra; único en el diálogo.
    • label (string) — Texto que se muestra a la izquierda del widget; un widget con etiqueta empieza su propia fila.
    • visible (boolean; predeterminado true) — Muestra el widget.
    • enabled (boolean; predeterminado true) — Permite que el usuario lo cambie.
    • text (string) — El texto junto a la casilla.
    • selected (boolean; predeterminado false) — Empieza marcada.
    • onchange (function(ev)) — Se llama, en el script, cada vez que el usuario cambia el valor, con ev = { id, value }. Una ráfaga de cambios (al arrastrar un control deslizante) puede llegar solo como el último. Todo lo que cambia en el documento es un solo paso de deshacer.

Devuelve (table): El diálogo, para encadenar.

dlg:close() — pura

Cierra el diálogo (desde el script, p. ej. en el onclick de un botón). Un script termina cuando su fragmento principal acaba y no queda ningún diálogo abierto.

Devuelve (table): El diálogo, para encadenar.

dlg:color(opts?) — pura

Añade un campo de color que abre el selector de color completo, con la paleta del sprite y los colores recientes. Su valor es dlg.data.<id> (una cadena "#rrggbb" o "#rrggbbaa").

  • opts (table, opcional)
    • id (string) — Da nombre al widget: su valor se lee como dlg.data.<id> y es el destino de dlg:modify. Letras, dígitos y _ , empezando por una letra; único en el diálogo.
    • label (string) — Texto que se muestra a la izquierda del widget; un widget con etiqueta empieza su propia fila.
    • visible (boolean; predeterminado true) — Muestra el widget.
    • enabled (boolean; predeterminado true) — Permite que el usuario lo cambie.
    • color (color ("#rgb", "#rrggbb[aa]" or { r, g, b, a }); predeterminado "#000000") — El color inicial.
    • onchange (function(ev)) — Se llama, en el script, cada vez que el usuario cambia el valor, con ev = { id, value }. Una ráfaga de cambios (al arrastrar un control deslizante) puede llegar solo como el último. Todo lo que cambia en el documento es un solo paso de deshacer.

Devuelve (table): El diálogo, para encadenar.

dlg:combobox(opts?) — pura

Añade una lista desplegable. Su valor es dlg.data.<id> (el texto de la opción elegida).

  • opts (table, opcional)
    • id (string) — Da nombre al widget: su valor se lee como dlg.data.<id> y es el destino de dlg:modify. Letras, dígitos y _ , empezando por una letra; único en el diálogo.
    • label (string) — Texto que se muestra a la izquierda del widget; un widget con etiqueta empieza su propia fila.
    • visible (boolean; predeterminado true) — Muestra el widget.
    • enabled (boolean; predeterminado true) — Permite que el usuario lo cambie.
    • options (a list of strings (max 200)) — Las opciones.
    • option (string; predeterminado the first option) — La opción inicial.
    • onchange (function(ev)) — Se llama, en el script, cada vez que el usuario cambia el valor, con ev = { id, value }. Una ráfaga de cambios (al arrastrar un control deslizante) puede llegar solo como el último. Todo lo que cambia en el documento es un solo paso de deshacer.

Devuelve (table): El diálogo, para encadenar.

dlg:entry(opts?) — pura

Añade un cuadro de texto. Su valor es dlg.data.<id> (una cadena).

  • opts (table, opcional)
    • id (string) — Da nombre al widget: su valor se lee como dlg.data.<id> y es el destino de dlg:modify. Letras, dígitos y _ , empezando por una letra; único en el diálogo.
    • label (string) — Texto que se muestra a la izquierda del widget; un widget con etiqueta empieza su propia fila.
    • visible (boolean; predeterminado true) — Muestra el widget.
    • enabled (boolean; predeterminado true) — Permite que el usuario lo cambie.
    • text (string; predeterminado "") — El texto inicial.
    • focus (boolean; predeterminado false) — Empieza con el foco del teclado aquí.
    • onchange (function(ev)) — Se llama, en el script, cada vez que el usuario cambia el valor, con ev = { id, value }. Una ráfaga de cambios (al arrastrar un control deslizante) puede llegar solo como el último. Todo lo que cambia en el documento es un solo paso de deshacer.

Devuelve (table): El diálogo, para encadenar.

dlg:file(opts?) — pura

Añade un selector de archivo (solo para abrir: el selector de archivos del navegador). dlg.data.<id> es el nombre del archivo elegido; se accede al contenido del archivo mediante ev.file en onchange (y dlg.files.<id>): { name, size, type, text }, donde text solo se establece para archivos de texto pequeños (hasta 256 KiB). Las imágenes y otros archivos binarios no se pueden leer.

  • opts (table, opcional)
    • id (string) — Da nombre al widget: su valor se lee como dlg.data.<id> y es el destino de dlg:modify. Letras, dígitos y _ , empezando por una letra; único en el diálogo.
    • label (string) — Texto que se muestra a la izquierda del widget; un widget con etiqueta empieza su propia fila.
    • visible (boolean; predeterminado true) — Muestra el widget.
    • enabled (boolean; predeterminado true) — Permite que el usuario lo cambie.
    • filename (string) — Un nombre que se muestra antes de elegir un archivo.
    • title (string; predeterminado "Choose file...") — El texto del botón del selector.
    • filetypes (a list of extensions without the dot, e.g. { "png", "gpl" }) — Los archivos que ofrece el selector.
    • onchange (function(ev)) — Se llama, en el script, cada vez que el usuario cambia el valor, con ev = { id, value }. Una ráfaga de cambios (al arrastrar un control deslizante) puede llegar solo como el último. Todo lo que cambia en el documento es un solo paso de deshacer.

Devuelve (table): El diálogo, para encadenar.

dlg:label(opts?) — pura

Añade una línea de texto (varias con \n, hasta 20 líneas).

  • opts (table, opcional)
    • id (string) — Da nombre al widget: su valor se lee como dlg.data.<id> y es el destino de dlg:modify. Letras, dígitos y _ , empezando por una letra; único en el diálogo.
    • label (string) — Texto que se muestra a la izquierda del widget; un widget con etiqueta empieza su propia fila.
    • visible (boolean; predeterminado true) — Muestra el widget.
    • enabled (boolean; predeterminado true) — Permite que el usuario lo cambie.
    • text (string) — El texto.

Devuelve (table): El diálogo, para encadenar.

dlg:modify(opts?) — pura

Cambia un widget (o el título del diálogo) mientras el diálogo está abierto o antes de mostrarlo. Los valores se comprueban y se limitan, y dlg.data los sigue. Asignar dlg.data = { id = value, ... } hace lo mismo para varios valores.

  • opts (table, opcional)
    • id (string) — El widget que se cambia. Sin él, el propio diálogo (solo title).
    • title (string) — El título del diálogo (sin id), o el texto del botón de un widget file.
    • text (string) — Un texto nuevo (el valor de un entry o number; el texto de un label, check, radio o button).
    • value (a number, string or boolean to match the widget) — Un valor nuevo de cualquier widget de valor (el número de un slider, ...).
    • selected (boolean) — Un estado nuevo para un check o radio.
    • option (string) — Una opción nueva para un combobox.
    • options (a list of strings) — Opciones nuevas para un combobox.
    • color (color ("#rgb", "#rrggbb[aa]" or { r, g, b, a })) — Un color nuevo para un widget color.
    • colors (a list of colors) — Muestras nuevas para shades.
    • min (number) — Un nuevo valor mínimo (number, slider).
    • max (number) — Un nuevo valor máximo (number, slider).
    • label (string) — Una etiqueta nueva.
    • visible (boolean) — Muestra u oculta el widget.
    • enabled (boolean) — Activa o desactiva el widget.

Devuelve (table): El diálogo, para encadenar.

dlg:newrow() — pura

Empieza una fila nueva: los widgets que se añadan después van debajo en lugar de junto al anterior.

Devuelve (table): El diálogo, para encadenar.

dlg:number(opts?) — pura

Añade un cuadro numérico. Su valor es dlg.data.<id> (un número).

  • opts (table, opcional)
    • id (string) — Da nombre al widget: su valor se lee como dlg.data.<id> y es el destino de dlg:modify. Letras, dígitos y _ , empezando por una letra; único en el diálogo.
    • label (string) — Texto que se muestra a la izquierda del widget; un widget con etiqueta empieza su propia fila.
    • visible (boolean; predeterminado true) — Muestra el widget.
    • enabled (boolean; predeterminado true) — Permite que el usuario lo cambie.
    • text (number; predeterminado 0) — El valor inicial.
    • min (number) — Valor mínimo.
    • max (number) — Valor máximo.
    • decimals (integer 0–6; predeterminado 0) — Posiciones decimales que se conservan.
    • onchange (function(ev)) — Se llama, en el script, cada vez que el usuario cambia el valor, con ev = { id, value }. Una ráfaga de cambios (al arrastrar un control deslizante) puede llegar solo como el último. Todo lo que cambia en el documento es un solo paso de deshacer.

Devuelve (table): El diálogo, para encadenar.

dlg:radio(opts?) — pura

Añade un botón de opción. Los botones de opción contiguos en una fila forman un grupo en el que uno está seleccionado; el valor de cada uno es dlg.data.<id> (un booleano).

  • opts (table, opcional)
    • id (string) — Da nombre al widget: su valor se lee como dlg.data.<id> y es el destino de dlg:modify. Letras, dígitos y _ , empezando por una letra; único en el diálogo.
    • label (string) — Texto que se muestra a la izquierda del widget; un widget con etiqueta empieza su propia fila.
    • visible (boolean; predeterminado true) — Muestra el widget.
    • enabled (boolean; predeterminado true) — Permite que el usuario lo cambie.
    • text (string) — El texto junto al botón.
    • selected (boolean; predeterminado false) — Empieza seleccionado.
    • onchange (function(ev)) — Se llama, en el script, cada vez que el usuario cambia el valor, con ev = { id, value }. Una ráfaga de cambios (al arrastrar un control deslizante) puede llegar solo como el último. Todo lo que cambia en el documento es un solo paso de deshacer.

Devuelve (table): El diálogo, para encadenar.

dlg:separator(opts?) — pura

Añade una línea horizontal, con texto opcional, en su propia fila.

  • opts (table, opcional)
    • id (string) — Da nombre al widget: su valor se lee como dlg.data.<id> y es el destino de dlg:modify. Letras, dígitos y _ , empezando por una letra; único en el diálogo.
    • label (string) — Texto que se muestra a la izquierda del widget; un widget con etiqueta empieza su propia fila.
    • visible (boolean; predeterminado true) — Muestra el widget.
    • enabled (boolean; predeterminado true) — Permite que el usuario lo cambie.
    • text (string) — Texto que se muestra junto a la línea.

Devuelve (table): El diálogo, para encadenar.

dlg:shades(opts?) — pura

Añade una fila de muestras de color para elegir. Al pulsar una se llama a onclick con ev = { id, color }.

  • opts (table, opcional)
    • id (string) — Da nombre al widget: su valor se lee como dlg.data.<id> y es el destino de dlg:modify. Letras, dígitos y _ , empezando por una letra; único en el diálogo.
    • label (string) — Texto que se muestra a la izquierda del widget; un widget con etiqueta empieza su propia fila.
    • visible (boolean; predeterminado true) — Muestra el widget.
    • enabled (boolean; predeterminado true) — Permite que el usuario lo cambie.
    • colors (a list of colors (max 512)) — Las muestras.
    • onclick (function(ev)) — Se llama, en el script, cuando el usuario lo pulsa, con ev = { id }. Todo lo que cambia en el documento es un solo paso de deshacer.

Devuelve (table): El diálogo, para encadenar.

dlg:show(opts?) — pura

Abre el diálogo. Después ya no se pueden añadir widgets; cámbialos con dlg:modify.

  • opts (table, opcional)
    • wait (boolean; predeterminado true) — true: el diálogo es modal (el estudio se atenúa y se bloquea) y el script se detiene aquí hasta que se cierre; los cambios hechos antes son un paso de deshacer propio, y el resto del script, uno nuevo. false: el diálogo es una ventana flotante; show vuelve de inmediato y el script sigue vivo, inactivo, hasta que se cierra el diálogo.

Devuelve (table): El diálogo, para encadenar.

dlg:slider(opts?) — pura

Añade un control deslizante. Su valor es dlg.data.<id> (un número).

  • opts (table, opcional)
    • id (string) — Da nombre al widget: su valor se lee como dlg.data.<id> y es el destino de dlg:modify. Letras, dígitos y _ , empezando por una letra; único en el diálogo.
    • label (string) — Texto que se muestra a la izquierda del widget; un widget con etiqueta empieza su propia fila.
    • visible (boolean; predeterminado true) — Muestra el widget.
    • enabled (boolean; predeterminado true) — Permite que el usuario lo cambie.
    • min (number; predeterminado 0) — Valor mínimo.
    • max (number; predeterminado 100) — Valor máximo.
    • value (number; predeterminado min) — El valor inicial.
    • onchange (function(ev)) — Se llama, en el script, cada vez que el usuario cambia el valor, con ev = { id, value }. Una ráfaga de cambios (al arrastrar un control deslizante) puede llegar solo como el último. Todo lo que cambia en el documento es un solo paso de deshacer.

Devuelve (table): El diálogo, para encadenar.

plugin:newCommand(opts) — pura

Registra un comando, a la manera de un plugin de Aseprite. Define una función global init(plugin) y llama a esto dentro de ella: function init(plugin) plugin:newCommand{ id = "outline", title = "Thick Outline", group = "edit_fx", onclick = function() ... end } end. Instala el script desde Scripts > Comandos de scripts...: su init se ejecuta una vez, sin acceso al documento, para ver qué registra, y los comandos aparecen entonces en los menús, en la paleta de comandos y en el editor de Atajos de teclado (donde se les puede asignar un atajo). Ejecutar uno inicia el script (su nivel superior se ejecuta de nuevo, luego init y luego el onclick del comando), así que deja en el nivel superior solo definiciones. Hasta 32 comandos por script.

  • opts (table)
    • id (string) — El id del comando dentro del script: una letra, y luego letras, dígitos, _ o - (máx. 48). Su id de acción, usado para los atajos de teclado, es script.<scriptId>.<id>.
    • title (string) — El texto del menú y de la paleta de comandos (máx. 60 caracteres).
    • group (string) — Dónde va el comando en los menús: file, file_import, edit, edit_transform, edit_fx, edit_adjustments, sprite, layer, frame, select o view. Sin grupo, va en Scripts > <nombre del script>. Un comando en un menú integrado se muestra con el nombre del script.
    • onclick (function(ev)) — Se llama, en el script, cuando el comando se ejecuta. Todo lo que cambia en el documento es un solo paso de deshacer.

No devuelve nada.

En Markdown: dialogs.md.