Cuando uno usa el default answer
parámetro in display dialog
en AppleScript, cualquier texto que se establezca default answer
se resalta automáticamente al mostrar el cuadro de diálogo.
¿Es posible especificar una respuesta predeterminada sin resaltar la respuesta?
Idealmente, me gustaría que el cursor se colocara después del último carácter de la respuesta predeterminada, de modo que el usuario pueda agregar texto a esta respuesta sin presionar primero la tecla (o, peor aún, →sobrescribir accidentalmente la respuesta predeterminada).
Me lo imaginé.
Si se presiona la tecla de flecha hacia la derecha solo milisegundos antes de que se muestre el cuadro de diálogo, default answer
no se seleccionará y el cursor parpadeante se colocará después del texto predeterminado.
Puede realizar esta acción en AppleScript así:
-- 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 pulsación de la tecla debería comenzar y completarse antes de que display dialog
se inicie el comando. Pero, este método funciona, por la razón que sea.
Nota: este método no funcionará si inserta key code 124
antes del primer cuadro de diálogo de su archivo AppleScript. En este caso, mi código anterior no se comportará como se desea y el default answer
texto permanecerá seleccionado. (Puede parecer engañoso que funciona 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, en Terminal.app osascript
o cualquier otro método).
Sin embargo, si el display dialog
cuadro de diálogo en cuestión es el segundo, tercero o quincuagésimo 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 necesite tener una extensión default answer
.
Una solución, si su cuadro de diálogo inicial debe tener una default answer
que no está seleccionada, es insertar un cuadro de diálogo que continúe 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 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 que 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.
key code
evento debería terminar antes que el display dialog
. Probablemente variará en cada sistema probado y, en mi opinión, es una casualidad, es confiable para usted. Además, confiable es cuando funciona siempre para cualquiera que lo pruebe.display dialog
diálogo en cuestión no es el diálogo inicial de un AppleScript (y cuando en realidad está ejecutando el archivo .scpt fuera de un entorno como Script Editor.app o Automator.app)?osascript
.
klanomath
esfera de rubik
default answer
esté seleccionada, para que el usuario pueda agregar texto inmediatamente sin tener que presionar primero la tecla de flecha hacia la derecha). Emplear undefault answer
es la forma más eficiente para mí de ofrecer todas estas opciones al alcance de la mano del usuario.