Voilà déjà quelques temps que j'ai un projet dans la tête, réaliser un éditeur de texte en C.
Et il y à environ une semaine je me suis dit : Aller c'est partie on ce lance!!!
Alors j'ai commencer à rédiger mon cahier des charges, avec l'aide de Toupi (je le remercie VRAIMENT du temps qu'il me consacre!).
Et j'ai décidé de vous en faire part pour que vous m'aidiez à l'améliorer.
Je n'ai pas encore commencer à coder, j'ai juste finit le cahier des charges, et je viens de commencer à voir comment j'allais organiser mes fichiers, mes fonctions...
Ah au fait les images sont faite avec 'paint'.
Bon arrêtons le Blabla, passons on congrès, voilà mon cahier des charges :
EasyBloc
</span></span> I/ EasyBloc en gros :</span>
*Dès que EasyBloc sera ouvert on demande tous de suite à l'utilisateur s'il veut créer un fichier ou en ouvrir un.
(Une petite image c’est mieux que du Blabla)
=>Si il veut ouvrir on lui demande le chemin et on ouvre.
==>Comme ça par example : C:\Documents and Settings\Aurélien\Bureau\test.txt
=>Sinon on affiche un nouvel 'feuille blanche'. *On le laisse taper ce qu'il veut.
*Dés qu'il appui sur la touche 'Esc', ou F5 on lui demande si il veut quitter, si ‘oui’:
-Si il veut enregistrer :
--Si oui :
=>où.
=>Le nom du fichier.
==> On ferme.
-Si il ne veut pas enregistrer :
=>On ferme.
Voilà en se qui se passera lorsqu’on utilisera EasyBloc...
II/ Les touches:
SUPPR = efface le caractère juste avant le curseur, si il y en a plus => rien faire. BACKSPACE = efface le dernier caractère, si il y en a plus => rien faire. HOME = Place le curseur au début de la ligne courante. FIN = place le curseur en fin de ligne courante. Flèche Gauche = Le curseur se décale de 1 vers la gauche, si il est au début d'une ligne, il vient se placer à la fin de celle juste avant. Flèche Droite = Le curseur se décale de 1 vers la droite, si il est à la fin d'une ligne, il vient se placer au début de celle juste avant. Flèche Haut = Le curseur monte d'une ligne (+1y si on été dans un graphique), si il est sur la première ligne du texte, rien ne ce passe. Flèche Bas = Le curseur descend d'une ligne (-1y si on été dans un graphique), si il est sur la dernière ligne du texte, il crée une nouvelle ligne. F1 = Lorsque l’utilisateur appuiera sur F1, il y aura une message lui demandant s’il veut enregistrer (si oui : où…), puis on effacera tous le texte pour laisser place à une nouvelle page. F2 = * ==>Si le fichier existe déjà, pas de problème ça enregistre.
* ==>Si le fichier n’existe pas alors on demande le nom du fichier avec l’extension, puis l’adresse du répertoire dans lequel le répertoire où doit être enregistrer le fichier. F3 = On demande le nom du fichier avec l’extension, puis l’adresse du répertoire dans lequel le répertoire où doit être enregistrer le fichier. F4 = On demande à l’utilisateur d’enregistrer, dès qu’il a enregistrer on imprime avec ça :
Imprimante = fopen ("lpt1", "w");
Fichier = fopen ("test.txt", "r");
fgets (Fichier, ..);
fputs (Imprimante, ..);
Si il ne veut pas enregistrer, on affiche un message disant qu’il ne peut pas imprimer sans enregistrer. F5 et Esc = on lui demande si il veut enregistrer, si ‘oui’:
=>où.
=>Le nom du fichier.
==> On ferme.
-Si il ne veut pas enregistrer :
=>On ferme. F6 = On affiche l’aide.
III/ Quelques précisions :
*Je pense utiliser deux tableaux : un pour le texte, un pour la commande.
*Le tableau pour le texte aura une taille maximum de 75 lignes et 150 colonnes.
*Lorsque l’utilisateur arrivera au bout, qu’il ne pourra plus écrire, il y aura un bip sonore.
*En faite je compte travailler dans deux tableaux bien distincts, comme ci c’était deux programmes différents.
*Pour l’instant je pense réaliser ce programme uniquement pour les utilisateurs de Windows, et ensuite on verra pour Linux et autre.
*Il y aura deux tableaux qui contiendront le même texte:
Un buffer, en une seule dimension, très grand, qui contiendra seulement le texte brut, comme il a été tapé.
Un tableau en 2D dans lequel on copiera le texte formaté: il copiera les mots un par un en vérifiant que ça rentre bien dans la ligne, sinon il le copiera à la ligne suivante.
*A chaque fois que l'utilisateur appuiera sur une touche, il faudra:
identifier la touche
mettre à jour le buffer si besoin: ajout d'une lettre, suppression, tout ce qui modifie le texte, en fait
mettre à jour l'affichage si besoin: s'il y a eu modification du buffer ou demande de coloration du texte, par exemple.
De plus j'ai oublié de préciser, je compte utiliser la fonction 'fread()', parcequ'elle est portable, elle n'arréte pas la saisie à l'appuie de la touche enter, et elle met en mémoire les touches précés par l'utilisateur.
Merci d'avance.
[C]EsayBloc ==> Mon éditeur de texte
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.