{"id":563,"date":"2018-07-20T16:19:43","date_gmt":"2018-07-20T15:19:43","guid":{"rendered":"http:\/\/www.programaraciegas.net\/?p=563"},"modified":"2018-07-20T16:19:43","modified_gmt":"2018-07-20T15:19:43","slug":"eventos-de-ejecucion-en-aplicaciones-creadas-con-applescript","status":"publish","type":"post","link":"https:\/\/programaraciegas.net\/?p=563","title":{"rendered":"Eventos de ejecuci\u00f3n en aplicaciones creadas con AppleScript"},"content":{"rendered":"<p>En el art&iacute;culo <a href=\"http:\/\/www.programaraciegas.net\/?p=490\">Convertir un AppleScript en una aplicaci\u00f3n para MacOS<\/a> aprendimos c&oacute;mo convertir nuestro script de AppleScript en una aplicaci&oacute;n. Esto, entre otras ventajas, nos permite poder ejecutar m&aacute;s rapidamente nuestro script. Pero adem&aacute;s podremos acceder a ciertos eventos que se dan en las aplicaciones.<\/p>\n<h2>Evento run<\/h2>\n<p>El evento <strong>run<\/strong> se ejecuta al arrancar la aplicaci&oacute;n. Ya hemos visto c&oacute;digo que utiliza este evento ya que la funci&oacute;n <strong>on run<\/strong> se da tanto en aplicaciones como scripts de AppleScript.<\/p>\n<p>Este evento suele utilizarse para inicializar valores para variables, preparar o cargar los recursos necesarios para ejecutar correctamente la aplicaci&oacute;n o mostrar la interfaz de bienvenida al usuario.<\/p>\n<h2>Evento quit<\/h2>\n<p>El evento <strong>quit<\/strong> se produce cuando la aplicaci&oacute;n va a terminar de ejecutarse y antes de cerrarse dispara el evento <strong>quit<\/strong> y ejecuta el c&oacute;digo que hayamos codificado para &eacute;l.<\/p>\n<p>Este evento s&oacute;lo est&aacute; disponible cuando convertimos nuestro script en aplicaci&oacute;n. Por ejemplo, veamos el siguiente c&oacute;digo:<\/p>\n<p><code><br \/>\non quit<br \/>\n\tdisplay alert \"Adios a todos!\"<br \/>\nend quit<\/p>\n<p>on run<br \/>\n\tdisplay alert \"Hola a todos!\"<br \/>\nend run<br \/>\n<\/code><\/p>\n<p>Si ejecutamos el c&oacute;digo en el editor de AppleScript s&oacute;lo se mostrar&aacute; el mensaje de saludo pero nunca la despedida. Para poder ver la despedida deberemos convertir nuestro script de AppleScript en una aplicaci&oacute;n de MacOS y ejecutarla como una app m&aacute;s. Entonces veremos el mensaje de despedida tras el mensaje de saludo.<\/p>\n<h2>Evento idle<\/h2>\n<p>El evento <strong>idle<\/strong> nos permite ejecutar un c&oacute;digo de script cada X segundos. Con esto podemos crear aplicaciones que repitan un script cada cierto tiempo.<\/p>\n<p>Este evento s&oacute;lo est&aacute; disponible cuando convertimos nuestro script en aplicaci&oacute;n.<\/p>\n<p>Otro requisito de este evento es que requiere m&aacute;s tiempo de ejecuci&oacute;n que una aplicaci&oacute;n habitual de AppleScript por lo que es recomendable que cuando vayamos a exportar nuestro script para convertirlo en aplicaci&oacute;n verifiquemos la casilla <em>Permanecer abierto tras el gestor de ejecuci\u00f3n<\/em> asegur&aacute;ndonos que nuestra ventana de aplicaci&oacute;n permanece abierta ejecutando el evento idle hasta que decidamos cerrar la ventana de la aplicaci&oacute;n de forma manual.<\/p>\n<p>Al codificar el evento <strong>idle<\/strong> debemos finalizar su codificaci&oacute;n devolviendo un n&uacute;mero que representar&aacute; el n&uacute;mero de segundos necesarios para volver a ejecutar el evento <strong>idle<\/strong>. Por ejemplo, el valor 60 se referir&aacute; a un minuto y el valor 3600 a una hora. Para devolver ese valor usamos el comando <strong>return<\/strong> que nos permite devolver un resultado cuando ejecutamos una funci&oacute;n de AppleScript.<\/p>\n<p>Veamos un ejemplo muy sencillo. Vamos a crear una aplicaci&oacute;n que reproducir&aacute; un sonido cada minuto.<\/p>\n<p><code><br \/>\non idle<br \/>\n\tdo shell script \"afplay \/System\/Library\/Sounds\/Blow.aiff\"<br \/>\n\treturn 60<br \/>\nend idle<br \/>\n<\/code><\/p>\n<h2>Ejemplo completo<\/h2>\n<p>Nuestro ejemplo deber&aacute; realizar las siguientes tareas:<\/p>\n<ol>\n<li>Saludar al inicio<\/li>\n<li>Reproducir un sonido cada 30 segundos<\/li>\n<li>Despedirse al cerrar la ventana de la aplicaci&oacute;n<\/li>\n<\/ol>\n<p>el c&oacute;digo ser&iacute;a algo como lo siguiente:<\/p>\n<p><code><br \/>\non run<br \/>\n\tdisplay alert \"Hola a todos!\"<br \/>\nend run<\/p>\n<p>on quit<br \/>\n\tdisplay alert \"Adios a todos!\"<br \/>\nend quit<\/p>\n<p>on idle<br \/>\n\tdo shell script \"afplay \/System\/Library\/Sounds\/Blow.aiff\"<br \/>\n\treturn 30<br \/>\nend idle<br \/>\n<\/code><\/p>\n<p>Recuerda verificar la casilla <em>Permanecer abierto tras el gestor de ejecuci\u00f3n<\/em> al exportar tu script para convertirlo en aplicaci&oacute;n.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En el art&iacute;culo Convertir un AppleScript en una aplicaci\u00f3n para MacOS aprendimos c&oacute;mo convertir nuestro script de AppleScript en una aplicaci&oacute;n. Esto, entre otras ventajas, nos permite poder ejecutar m&aacute;s rapidamente nuestro script. Pero adem&aacute;s podremos acceder a ciertos eventos que se dan en las aplicaciones. Evento run El evento run se ejecuta al arrancar &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/programaraciegas.net\/?p=563\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \u00abEventos de ejecuci\u00f3n en aplicaciones creadas con AppleScript\u00bb<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[80,6],"tags":[297,83,298,296,293,294,295],"class_list":["post-563","post","type-post","status-publish","format-standard","hentry","category-applescript","category-programacion","tag-aplicaciones","tag-applescript-2","tag-apps","tag-eventos","tag-idle","tag-quit","tag-run"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/563","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=563"}],"version-history":[{"count":0,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/563\/revisions"}],"wp:attachment":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=563"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=563"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}