Cómo reaccionar a la selección de una lista de elementos en AppleScript

En un artículo anterior vimos cómo permitir al usuario seleccionar un elemento de una lista a través de un cuadro de diálogo. En este artículo veremos cómo reaccionar a la selección del usuario.

Partiremos de nuestro ejemplo de selección de un tipo de comida para pedir a domicilio:


choose from list {"Vegetariana", "Mejicana", "China", "Japonesa", "Mediterranea", "Italiana"} with title "Selección de tipo de comida" with prompt "Selecciona el tipo de comida que más te apetezca" OK button name "Pide ahora!" cancel button name "No tengo hambre" default items {"Mejicana"} multiple selections allowed false empty selection allowed false

Almacenando el resultado

Para gestionar algunas respuestas es necesario que almacenemos los resultados en una variable. Este es el caso del comando choose from list.

En nuestro ejemplo almacenaremos el resultado en la variable resultadoDeDialogo.


set resultadoDeDialogo to choose from list {"Vegetariana", "Mejicana", "China", "Japonesa", "Mediterranea", "Italiana"} with title "Selección de tipo de comida" with prompt "Selecciona el tipo de comida que más te apetezca" OK button name "Pide ahora!" cancel button name "No tengo hambre" default items {"Mejicana"} without multiple selections allowed and empty selection allowed

Reaccionando dependiendo del resultado

Para realizar una u otra operación dependiendo del valor de una variable debemos usar estructuras condicionales en AppleScript para poder codificar todas las posibles acciones que el usuario haga con el cuadro de diálogo.

En nuestro ejemplo el usuario puede realizar las siguientes operaciones:

  • Pulsar el botón de cancelar
  • Seleccionar un elemento y pulsar el botón de aceptar

Gracias a que hemos indicado en el comando choose from list que el usuario no puede seleccionar más de un valor y que el botón de aceptar sólo estará disponible si se ha seleccionado un valor de la lista no tenemos que preocuparnos por otras posibles respuestas por parte del usuario.

Cancelar como resultado

Si el usuario pulsa el botón de cancelar el resultado que obtendremos en la variable resultadoDeDialogo será false. Sabiendo esto podemos codificar qué hacer si el usuario pulsa el botón cancelar.

En nuestro ejemplo mostraremos un mensaje invitando al usuario que vuelva a ejecutar nuestra aplicación cuando tenga hambre.


set resultadoDeDialogo to choose from list {"Vegetariana", "Mejicana", "China", "Japonesa", "Mediterranea", "Italiana"} with title "Selección de tipo de comida" with prompt "Selecciona el tipo de comida que más te apetezca" OK button name "Pide ahora!" cancel button name "No tengo hambre" default items {"Mejicana"} without multiple selections allowed and empty selection allowed

if resultadoDeDialogo = false then
display alert "Vuelve cuando tengas hambre"
end if

Una lista como resultado

Si el usuario pulsa el botón de aceptar el resultado obtenido será una lista de AppleScript con todos los valores seleccionados.

Si hubiesemos permitido al usuario pulsar el botón aceptar sin seleccionar nada obtendríamos como resultado una lista vacía.

Para nuestro ejemplo mostraremos un mensaje indicando que a nosotros nos apetece también ese tipo de comida excepto si es comida vegetariana ya que mostraremos otro mensaje.


set resultadoDeDialogo to choose from list {"Vegetariana", "Mejicana", "China", "Japonesa", "Mediterranea", "Italiana"} with title "Selección de tipo de comida" with prompt "Selecciona el tipo de comida que más te apetezca" OK button name "Pide ahora!" cancel button name "No tengo hambre" default items {"Mejicana"} without multiple selections allowed and empty selection allowed

if resultadoDeDialogo = false then
display alert "Vuelve cuando tengas hambre"
else
set tipoComida to get text 1 of resultadoDeDialogo
if tipoComida = "Vegetariana" then
display alert "No me apetece mucho comida vegetariana ahora. Que aproveche."
else
set cadenaResultado to "A mi también me apetece comer comida " & tipoComida & ". Pide un poco para mi también, por favor."
display alert cadenaResultado
end if
end if

Con todo esto ya podemos crear scripts de AppleScript más complejos en los que el usuario puede controlar cómo reaccionará nuestro programa.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.