Objetivo: Seleccionar desde el cursor hasta el principio del párrafo y mostrar diversas opciones con el texto seleccionado
set copiaSeguridadPpples to (the clipboard as text)
set the clipboard to ""
set opcion to display dialog "Se seleccionó y copió desde la posición del cursor hasta el principio del párrafo…" with title "¿Quieres hacer algo más con la selección…?" buttons {"Cortar o Borrar", "Sustituirla por el Ppples", "Finalizar"} default button "Finalizar"
tell application "System Events" to set nAplic to (name of first application process whose frontmost is true)
tell application nAplic to activate
tell application "System Events" to tell process nAplic
key code 126 using {option down, shift down} -- > [selecciona desde la posición del cursor hasta el principio del párrafo]
delay 0.05
keystroke "c" using command down
delay 0.1
set nuevoPpples to (the clipboard as text)
-- Si resultado es ninguna selección…
if (the clipboard as text) is "" then
display dialog "Ninguna selección. Script finalizado" with title "Error"
error number -128
end if
try
** --### Se intenta hacer un anidamiento de display dialog (otro display dialog dentro de una opción de otro display dialog)
--### Se pretende desdoblar la opción "Cortar o Borrar" en "Cortar" y "Borrar" mediante un display dialog dentro de una opción de otro display dialog. Una especie de "anidamiento"
--### No logro hacer que funcione y no sé cuál es el motivo
--### ¿No están permitidos los "anidamientos" de "display dialog" o he cometido un error en algún punto en el script?
--### Si uso directamente la opción "Cortar o Borrar", sin intentar desdoblarla, funciona sin problemas**
--###################
if button returned of opcion is "Cortar o Borrar" then -- ### CORTAR / BORRAR
set cortarBorrar to display dialog "¿Quieres cortar o borrar la selección?" with title "¿Qué hacer con la selección?" with icon some item of {0, 1, 2} buttons {"Cortarla", "Borrarla"} default button "Borrarla"
if button returned of cortarBorrar is "Cortarla" then
keystroke "x" using command down -- → Cortar
delay 0.1
else if button returned of cortarBorrar is "Borrarla" then
key code 51 -- → Borrar
delay 0.1
set the clipboard to copiaSeguridadPpples
end if
--#####################
else if button returned of opcion is "Sustituirla por el Ppples" then -- ### SUSTITUIRLA POR EL PORTAPAPELES"
set the clipboard to copiaSeguridadPpples
keystroke "v" using command down
delay 0.1
set pples to display dialog "¿Quieres conservar el contenido del portapapeles o sustituirlo por la selección?" with title "¿Qué hacer con el portapapeles?" with icon some item of {0, 1, 2} buttons {"Conservarlo", "Sustituirlo"} default button "Conservarlo"
if button returned of pples is "Sustituirlo" then set the clipboard to nuevoPpples -- recuperamos el texto de la selección para el portapapeles
delay 0.1
else if button returned of opcion is "Finalizar" then -- ### FINALIZAR
say "Seleccionado y copiado" -- TEST
delay 0.1
else
display dialog "Ocurrió algo no previsto… → " with title "¿Qué habrá pasado?" with icon some item of {0, 1, 2} giving up after 2
set (the clipboard) to copiaSeguridadPpples -- ### Se repone el contenido inicial del portapapeles
error number -128
end if
on error
display dialog "Ocurrió algo no previsto… → " with title "¿Qué habrá pasado?" with icon some item of {0, 1, 2} giving up after 2
set the clipboard to copiaSeguridadPpples -- Devolver el contenido inicial al portapapeles.
error number -128
end try
end tell