Abstraction Concrète : Module Editexte


Le module de gestion de zones d'édition de textes utilise le module ecran de gestion d'écran en mode texte, le module fenetres de gestion de fenetres, et le module clavier de gestion des touches, préalablement définis.

Deux nouveaux types sont introduits :

Le type val_edition avec ses trois valeurs DebutLigne, FinDeLigne et ColonneCourante. Le type fenetre_texte comprend un champ nommé ftxt pour préciser la fenêtre associée à la zone de texte, un champ mutable modifie qui indique si une modification a été effectuée sur le texte édité, un champ mutable ligne de type vecteur de chaînes de caractères, pour enregistrer les lignes du texte en édition, un champ cur qui mémorise la position du curseur d'édition et un champ base pour repérer la position de la zone éditée à l'écran par rapport au texte entier enregistré dans le champ ligne. La valeur de base.X donne la position de la première colonne affichée dans le texte, et la valeur de base.Y donne la position de la première ligne affichée. L'étendue du texte affiché est délimitée par la largeur ftxt.ext.L - 2 et la hauteur ftxt.ext.H - 2 de la fenêtre associée.

Les fonctions de déplacement

La fonction page_precedente z affiche la page précédente du texte en édition dans la fenetre_texte z, en remontant de ftxt.y - 2 lignes dans le texte, et en déplaçant le curseur d'édition à la nouvelle position.
La fonction page_suivante z affiche la page suivante du texte en édition dans la fenetre_texte z, en descendant de ftxt.y - 2 lignes dans le texte, et en déplaçant le curseur d'édition à la nouvelle position.
La fonction ligne_precedente z déplace le curseur d'édition à la ligne précédente du texte en édition dans la fenetre_texte z.
La fonction ligne_suivante z déplace le curseur d'édition à la ligne suivante du texte en édition dans la fenetre_texte z.
La fonction caractere_precedent z déplace le curseur d'édition au caractère précédent du texte en édition dans la fenetre_texte z.
La fonction caractere_suivant z déplace le curseur d'édition au caractère suivant du texte en édition dans la fenetre_texte z.
La fonction debut_de_ligne z déplace le curseur d'édition au début de la ligne courante du texte en édition dans la fenetre_texte z.
La fonction fin_de_ligne z déplace le curseur d'édition à la fin de la ligne courante du texte en édition dans la fenetre_texte z.
La fonction debut_de_document z déplace le curseur d'édition au début du texte en édition dans la fenetre_texte z.
La fonction fin_de_document z déplace le curseur d'édition à la fin du texte en édition dans la fenetre_texte z.

Les fonctions d'édition du texte

La fonction inserer_caractere z c insère le caractère c à la position courante du curseur d'édition dans le texte en édition de la fenetre_texte z, et déplace le curseur à la position suivante.
La fonction inserer_nouvelle_ligne z insère une nouvelle ligne à la position courante du curseur d'édition dans le texte en édition de la fenetre_texte z, et déplace le curseur à la position suivante (au début de la nouvelle ligne).
La fonction supprimer_a_gauche z supprime le caractère qui précède la position courante du curseur d'édition dans le texte en édition de la fenetre_texte z, et déplace le curseur à la position précédante, celle du caractère supprimé.
La fonction supprimer_a_droite z supprime le caractère à la position courante du curseur d'édition dans le texte en édition de la fenetre_texte z, sans déplacer le curseur d'édition.

Les fonctions d'installation du texte en édition

La fonction initialise_fenetre f associe une zone d'édition de texte à la simple fenêtre f et retourne une fenêtre d'édition de texte.
La fonction installe_texte z liste_de_lignes remplit la zone d'édition de texte de la fenetre_texte z, avec les lignes de texte de la liste liste_de_lignes.
La fonction reaffichage_fenetre z régénère l'affichage de la zone d'édition de texte de la fenetre_texte z.
La fonction curseur z régénère la position du curseur d'édition de la fenetre_texte z.

Les fonctions outils de traitement de chaînes de caractères

La fonction just_droite s index long retourne une chaîne de longueur long justifiée à droite et construite avec la chaîne s à partir de la position index. Si la chaîne s est trop longue, elle est tronquée à droite à la longueur long, sinon la chaîne renvoyée par la fonction est complétée à gauche par des espaces, jusqu'à la longueur long.
La fonction just_gauche s index long retourne une chaine de longueur long justifiée à gauche et construite avec la chaîne s à partir de la position index. Si la chaîne s est trop longue, elle est tronquée à droite à la longueur long, sinon la chaîne renvoyée par la fonction est complétée à droite par des espaces, jusqu'à la longueur long.