Partage
  • Partager sur Facebook
  • Partager sur Twitter

[C]EsayBloc ==> Mon éditeur de texte

    26 décembre 2007 à 12:20:16

    Salut à tous

    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.
    Image utilisateur

    (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'.
    Image utilisateur
    *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 :
    1. Imprimante = fopen ( "lpt1", "w" );
    2. Fichier = fopen ( "test.txt", "r" );
    3. fgets (Fichier, ..);
    4. 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.

    Les tableaux :

    A faire.






    Voilà, vous savez tous...

    Qu'en pensez-vous?Remarques positives, remarques negatives...

    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.
    • Partager sur Facebook
    • Partager sur Twitter

    [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.
    • Editeur
    • Markdown