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.