Next: Aplicaciones de AÏDA
Up: AÏDA
Previous: C.2.1 Los constructores de
Las aplicaciones son instancias de #:image:rectangle:application,
abreviadamente {application}. Esto quiere
decir que una aplicación es también una imagen de tipo rectángulo, lo cual implica
que por sí misma no es visible en pantalla, tan sólo delimita una región
de ésta. Sin embargo, la estructura {application} contiene un campo llamado
image que almacena una imagen. Es el contenido de este campo lo que se
muestra en pantalla cuando se visualiza una aplicación.
Como consecuencia de lo anterior, ya que una aplicación es una imagen, el campo
image puede a su vez contener una aplicación, la cual a su vez puede
contener aplicaciones hasta cualquier nivel de profundidad.
Desde un punto de vista práctico, podemos ver una aplicación como una imagen
a la cual se le asocia un comportamiento, esto es, un conjunto de
acciones que tiene lugar como reacción de la aplicación ante operaciones
llevadas a cabo con el ratón o el teclado. Los diferentes subtipos de aplicaciones
presentan diferentes comportamientos ante esas operaciones. Es incluso posible
especificar el comportamiento concreto de cada instancia de un determinado tipo
de aplicación.
Como cualquier otra imagen, las aplicaciones se crean utilizando un constructor
de imágenes, en este caso llamado application, que devuelve una instancia
de la estructura {application}, la cual además del campo image
también posee un campo window que almacena la ventana
asociada a la
aplicación
y un campo {properties}
que contiene una lista de asociación de propiedades.
Las aplicaciones reaccionan a los siguientes mensajes que modifican su imagen:
- El mensaje grow produce una modificación del tamaño de la ventana
asociada a la aplicación. Para ello se envía resursivamente un método
grow a las imágenes contenidas en la aplicación.
- El mensaje translate provoca un traslado de la ventana de la aplicación
que no afecta a la imagen. Este método, como el anterior, puede ser
llamado explícitamente por el programador o puede ser activado
como consecuencia de una modificación de las características de la
ventana que contiene la aplicación provocadas por acciones del usuario
valiéndose del gestor de ventanas.
- El mensaje fit-to-contents indica a la aplicación que ajuste su tamaño
para que sea consistente con el de la imagen que contiene. Este método
debe ser enviado antes de que la aplicación esté activa en la pantalla,
ya que de lo contrario no surtirá efecto.
- El mensaje fit-to-window hace que la imagen de una aplicación adapte su tamaño
al de la ventana.
- El mensaje redisplay indica a la aplicación que debe redibujar una región
de la imagen. Puede ser activado por el programador o por el gestor
de ventanas.
- El mensaje full-redisplay borra la ventana asociada con una aplicación e
inmediatamente la redibuja enviando un mensaje redisplay.
- El mensaje new-image cambia la imagen de una aplicación, modificando el campo image,
pero sin redibujarla en pantalla.
- El mensaje set-image cambia la imagen de una aplicación y la redibuja en pantalla.
- El mensaje add-image añade un componente a la imagen de la aplicación, que debe ser una
fila, columna o superposición.
- El mensaje remove-image elimina un componente de la imagen.
- El mensaje insert-image inserta un componente en la imagen de la aplicación
asignándole una posición en el rango de imágenes que la componen.
- Los mensajes add-to-left y add-to-right añaden componentes a la izquierda y
derecha de la imagen, respectivamente.
- Los mensajes add-to-top y add-to-botton añaden componentes sobre la imagen o al
fondo de la misma.
Los métodos display, redisplay y grow no se deben redefinidir
para subtipos de {application}, ya que su comportamiento no sería correcto.
Si se necesita redefinirlos, la solución consiste en crear un nuevo subtipo
de {image} que represente la imagen de la aplicación y redefinir los
métodos mencionados para la nueva imagen.
- activatedp es un predicado que indica si una aplicación está activa en la pantalla.
- {application}:father devuelve la aplicación padre de una dada, es decir,
aquella en la que está contenida.
- set-action es probabalemente la función más usada con aplicaciones
ya que establece la función que se realizará cuando se dispare
la aplicación. Cada tipo de aplicación se dispara ante determinados eventos;
por ejemplo, un botón se dispara cuando es pulsado con el ratón.
- set-shortcut-action permite asociar una segunda acción con una aplicación.
Algunas aplicaciones realizan una segunda acción en respuesta a
ciertos actos del usuario. Por ejemplo, en una lista de selección
la shortcut-action tiene lugar cuando el usuario hace click
con el ratón sobre una de las imágenes seleccionables.
- add-application activa una aplicación y sus subaplicaciones. El
efecto que se ve en la pantalla es la aparición de una nueva ventana
con la imagen asociada. Si el argumento que se le pasa a esta función
es una imagen en lugar de una aplicación, entonces crea una instancia
de {application} con dicha imagen como valor del campo image
y la activa en pantalla.
- remove-application termina una aplicación y todas sus subaplicaciones,
eliminándolas de la pantalla.
- prompt-application actúa como add-application excepto que no
devuelve el control hasta que no se ha terminado la aplicación. Se
usa principlamente para construir ventanas de confirmación.
- grab-application actúa como prompt-application excepto que impide
al usuario interactuar con otras aplicaciones hasta que termine la aplicación
lanzada. Se usa para construir ventanas de confirmación de acciones muy
relevantes.
- inhibit-application impide que una aplicación reaccione a los eventos del
ratón o del teclado. Mediante authorize-application se puede hacer
que dicha aplicación retorne a un comportamiento normal.
- {application}:set-title establece el título de la ventana
que contiene la aplicación, si el gestor de ventanas lo permite.
Como ya se mencionó anteriormente, la imagen de una aplicación puede contener
a su vez otras aplicaciones, las cuales se consideran subaplicaciones de la primera.
De este modo es posible establecer una jerarquía de aplicaciones de múltiples niveles.
Para permitir una adecuada comunicación entre la aplicación principal y sus subaplicaciones
y de éstas entre sí, AÏDA dispone de un mecanismo basado en la
idea de dar nombre a los componentes.
Para ello basta con definir una subaplicación presente en la imagen de otra como
un componente de esta última, asignándole un nombre. Esto se hace mediante la
función add-component. Una vez establecido, un componente puede cambiarse
mediante la utilización de set-component, o eliminarse mediante una llamada a
remove-component. Para acceder a una subaplicación componente de otra desde
cualquier componente de esta última se usa la función component. Mediante
una llamada a all-componentes se obtiene una lista de los componentes
definidos al mismo nivel, o a uno superior, de la aplicación pasada como argumento.
Next: Aplicaciones de AÏDA
Up: AÏDA
Previous: C.2.1 Los constructores de
Miguel A. Alonso Pardo
Thu Nov 20 16:47:01 CET 1997