Next: 3.8.3 El borrado de
Up: 3.8 El comportamiento del
Previous: 3.8.1 Activación del editor
Para tratar correctamente la inserción de nuevos caracteres en el
texto de un componente léxico es preciso capturar los eventos producidos por
la pulsación de alguna tecla en el teclado.
Cuando se produce uno de tales eventos se invoca a la función
select-inserted-text. Esta función toma como argumento la instancia
de {textedit} almacenada como componente TEXTEDITOR en
la jerarquía de aplicaciones de ICEeditor y un símbolo que
indentifica el tipo de modificación que se ha realizado sobre el
editor de texto.
La función select-inserted-text realiza las siguientes
acciones:
- Comprobar que el carácter que se va insertar se encuentra en
una posición válida, entendiéndose como válidas todas las
posiciones comprendidas entre el primer carácter del texto
actual del componente léxico y el último carácter del texto actual del
componente léxico
. Este control es necesario puesto que
textedit no proporciona ninguna manera de capturar los movimientos de
las teclas del cursor. Tan sólo se pueden capturar los eventos del
teclado cuando se modifica el texto del editor
.
Para realizar esta comprobación es preciso realizar el
siguiente conjunto de operaciones:
- Si el parámetro command tiene como valor el
símbolo te-interactive-
line-break, entonces es que se
está tratando de insertar un caracter de salto de
línea. En tal caso se realizan las operaciones siguientes:
- Borrar el salto de línea.
- Comprobar que la posición en la cual se está intentando
insertar el carácter de salto de línea es una posición
válida dentro del componente léxico. Esto se hace situando un cursor al comienzo
del texto del componente léxico y desplazándolo a la derecha un número de
posiciones igual al número de caracteres actuales del componente léxico.
- Si es una posición válida, entonces se inserta realmente el
salto de línea.
- Si el parámetro command es diferente de
te-interactive-line-break, es que se está inentando insertar un
carácter ordinario
. En este caso se procede como
sigue:
- Se mueve el cursor de inserción una posición
a la izquierda, para de este modo quedar situado en la posición en
la que ralmente se insertó el carácter.
- Comprobar que dicha posición se encuentra dentro de los
límites impuestos por el texto del componente léxico.
- Si es así, se retorna el cursor a su posición original.
- Si la posición no es válida, entonces se borra el carácter
introducido, con lo cual el texto retorna al estado en que se
encontraba antes de insertar el carácter. Se emite una señal
audible para advertir al usuario de que la
acción realizada no es válida.
- Extender la selección para incluir el carácter insertado, si
éste está en una posición válida, para que se integre
consistentemennte con el aspecto gráfico de los demás caracteres
involucrados en operaciones del mismo tipo.
Next: 3.8.3 El borrado de
Up: 3.8 El comportamiento del
Previous: 3.8.1 Activación del editor
Miguel A. Alonso Pardo
Thu Nov 20 16:47:01 CET 1997