next up previous contents
Next: 3.8.3 El borrado de Up: 3.8 El comportamiento del Previous: 3.8.1 Activación del editor

3.8.2 La inserción de caracteres en un componente léxico

 

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:

  1. 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éxicogif. 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 editorgif. Para realizar esta comprobación es preciso realizar el siguiente conjunto de operaciones:
    1. 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:
      1. Borrar el salto de línea.
      2. 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.
      3. Si es una posición válida, entonces se inserta realmente el salto de línea.
    2. Si el parámetro command es diferente de te-interactive-line-break, es que se está inentando insertar un carácter ordinariogif. En este caso se procede como sigue:
      1. 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.
      2. Comprobar que dicha posición se encuentra dentro de los límites impuestos por el texto del componente léxico.
      3. Si es así, se retorna el cursor a su posición original.
      4. 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.
  2. 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 up previous contents
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