AppleScript: ¿Es posible tener una "respuesta predeterminada" no seleccionada en un cuadro de diálogo de entrada?

2

Cuando se usa el parámetro default answer en display dialog en AppleScript, cualquier texto que se establezca en default answer se resalta automáticamente al mostrar el cuadro de diálogo.

¿Es posible especificar una respuesta predeterminada sin la respuesta resaltada?

Lo ideal sería que el cursor se coloque después del último carácter de la respuesta predeterminada, para que el usuario pueda agregar texto a esta respuesta sin presionar primero la tecla (o, peor aún, accidentalmente sobrescribiendo la respuesta por defecto).

    
pregunta rubik's sphere 03.03.2017 - 19:51

1 respuesta

2

Lo descubrí.

Si se presiona la tecla de flecha derecha solo milisegundos antes se muestra el cuadro de diálogo, no se seleccionará default answer y el cursor parpadeante se colocará después del texto predeterminado.

Puede realizar esta acción en AppleScript de la siguiente manera:

-- Unselect the “default answer” in an input dialog:
tell application "System Events"
        key code 124 -- right arrow key
end tell

display dialog "Enter a keyword:" default answer "I do not want this text to be highlighted. "

En teoría, la solución anterior no debería funcionar. En teoría, la presión de la tecla debe comenzar y completarse antes de que se inicie el comando display dialog . Pero, este método funciona, por cualquier razón.

Nota: este método no funcionará si inserta key code 124 antes del muy primer cuadro de diálogo de su archivo AppleScript. En este caso, mi código anterior no se comportará como se desea y el texto default answer permanecerá seleccionado. (Puede parecer engañoso que funcione correctamente si simplemente está ejecutando el código AppleScript desde Script Editor.app o Automator.app, pero no funcionará correctamente si ejecuta el archivo .scpt a través de Fast Scripts, osascript en Terminal). aplicación, o cualquier otro método.)

Sin embargo, si el display dialog en cuestión es el segundo, tercer o quincuagésimo diálogo en un archivo AppleScript, mi solución funciona correctamente. No me preguntes por qué no funcionará en el primer diálogo (porque no lo sé).

Por lo tanto, no tiene más remedio que reorganizar los cuadros de diálogo del archivo AppleScript para que el primer cuadro de diálogo no tenga que tener un default answer .

Una solución alternativa, si su diálogo inicial debe tener un default answer que no esté seleccionado, es insertar un diálogo que proceda automáticamente después de que haya transcurrido un breve período de tiempo. Este cuadro de diálogo debe insertarse inmediatamente antes del bloque indicador anterior. No es una solución elegante, pero aquí hay un código que funcionará:

display alert "Please wait..." message "..." buttons ("") giving up after 1
-- I think that "1" is the minimum for "giving up after." I tried "0.5" and the dialog completely stalled.

Siempre y cuando no preceda al diálogo inicial de un script, personalmente he encontrado que mi método es confiable; funciona el 100% del tiempo en mi computadora.

    
respondido por el rubik's sphere 07.03.2017 - 20:40

Lea otras preguntas en las etiquetas