dimanche 27 juillet 2014

Réalisation d'un éditeur de texte en utilisant les listes chaînées(suite)

III- Analyse détaillée:

3.1 - Présentation et justification de la structure :

Afin de stocker le texte en mémoire, on a utilisé deux structures représentant respectivement les caractères et les lignes:
Les caractères :


Les lignes : 







    Différentes structures de données auraient pu être utilisées mais la plus simple s’est avérée être deux listes doublement chaînées, permettant d’accéder à tous les caractères stockés via un compteur tout en restant liés aux caractères précédents et suivants.

3.2 – Présentation et justification des fichiers :

Les fichiers que peut ouvrir cet éditeur n’obéissent à aucun format particulier. Il est cependant logique d’ouvrir des fichiers ASCII, qui contiennent du texte brut. Cependant nous n’avons pas fixé de barrières : avec ou sans extension, d’un *.txt à un *.c ou *.exe, tous les fichiers peuvent être chargés. Il suffit d’en indiquer le nom complet accompagné de l’extension éventuelle.

3.3 – Architecture détaillée :

On a séparé le code source du projet en plusieurs modules, réunis autour d’une fonction principale « main ». On va ici vous présenter l’architecture de ce découpage modulaire :



3.4  – Description des modules :

a.      main :

Le rôle de la fonction main est axé essentiellement sur l’initialisation des différents modules composant cet éditeur, en plus de l’ouverture du fichier directement à partir du système d’exploitation ou le chargement du fichier si on l’ouvre à partir de l’application proprement dite.

b.      Structure de donnée :

Ce module comporte les structures qui mettent en place les listes doublement chaînées déjà citées.

c.     Opérations élémentaires   :

Ce module assure la gestion élémentaire de l’éditeur du texte, ceci via la gestion du fichier et celle des structures

·         Gestion du fichier : Cette opération consiste au chargement du fichier et l’enregistrement des caractères dans la structure d’une part. Et, lors d’une opération de sauvegarde, enregistrer les caractères dans le fichier à partir de la structure, d’autre part.

·         Gestion des structures : Ce fichier comprend :
o    une fonction qui assure l’ajout des lignes ajouterLigne(ptr_ligne *ligneEnCour),

o    une autre fonction qui assure leur surpression supprimerLigne(ptr_ligne *ligneEncour )
o   Une troisième qui permet l’insertion du caractère avant le caractère en cours ajouterCaractere(ptr_ligne *LigneEnCour, ptr_charLigne *charEncour,long val),
o    une qui  libère l’espace du caractère en cour de la structure et renvoi au caractère suivant supprimerCaractere(ptr_ligne *premiereLigne, ptr_ligne *LigneEnCour, ptr_charLigne *charEncour) ;
 o   Une fonction qui effectue la recherche d’un mot depuis le 1er caractère jusqu’au dernier, rechercherMot(ptr_charLigne *charDebut, ptr_charLigne charFin, ptr_ligne *r *mot),
o   Et une dernière qui permet de remplacer un mot donné par l’utilisateur par un autre au choix, remplacerMot(ptr_ligne *premierLigne,ptr_ligne *ligneEnCour, ptr_charLigne *CharEnCour, char *mot, char *mot2,ptr_charLigne dernierChar,ptr_buffer *lebuffer).

d.      Module pleine page :
En plus du sous modèle qui permet de gérer le curseur en fonction des flèches et autres, Ce module comprend :
·         Module pleine page : qui contient 4 fonctions qui gèrent les actions propres aux touches:
o   ‘ del’ qui permet de supprimer le caractère où est basé le curseur ;
o   ‘retour’ ou ‘ß’ qui permet de supprimer le caractère à gauche du curseur avec le même principe de la touche ‘del’ seulement avec des conditions différentes ;
o   ‘ajouter caractère’ qui permet d’ajouter le caractère saisie su r l’emplacement de celui-ci tout en le déplaçant vers la droite ;
o   ‘entrée’ qui permet de créer une nouvelle ligne et de faire passer les caractères après le curseur à la ligne.


e.        Module commande :
Ce module permet de gérer les fonctionnalité basées sur un jeu de commandes (relatées dans le help), et ceci grâce au :
·         Menu commande  qui comprend une fonction Menucommande( ) qui permet, après récupération de la commande , d’assurer sa traduction, avant de passer à l’exécution en cas d’absence d’une erreur de syntaxe.
·         Module commande :qui contient les différentes fonctions traitant chaque commande à part. dont voici la liste :



Ce module joue un rôle essentiel quand à la sauvegarde temporaire de la saisie avant que l’utilisateur décide d’enregistrer lui-même. En effet, on a représenté ce buffer sous forme d’une structure de pile :



h.      Module Conio :
Ce module, comporte les différentes fonctions assurant des fonctionnalités techniques dont on a eu besoin pour la bonne exécution de notre éditeur ;
Exemple: la fonction gotoxy( ).



Categories: