Пример #1
0
        /// <summary>
        /// Colorizes the syllabes in syls, according to the <c>Config</c> used at creation time.
        /// </summary>
        /// <param name="conf"> The <c>Config to use for the colorization task.</c></param>
        public void ColorizeSyls(Config conf)
        {
            logger.ConditionalDebug("ColorizeSyls");
            if (syls != null)
            {
                // Mettre les syllabes en couleur
                foreach (SylInW s in syls)
                {
                    s.PutColor(conf);
                }

                // s'il le faut, marquer par-dessus les phonemes muets.
                if (theConf.sylConf.marquerMuettes)
                {
                    foreach (PhonInW piw in phons)
                    {
                        if (piw.EstMuet())
                        {
                            piw.PutColor(conf, PhonConfType.muettes);
                        }
                    }
                }
            }
            else
            {
                logger.Error("ColorizeSyls called when syls is null.");
            }
        }
Пример #2
0
        public static void Initialize()
        {
            logger.ConditionalDebug("Initialize");
            List <string> errMsgs = new List <string>();

            TheText.Init(errMsgs);
            foreach (string errMsg in errMsgs)
            {
                MessageBox.Show(errMsg, ConfigBase.ColorizationName, MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            ConfigControl.Init();
            HilightForm.hiliColors = hilightColors;
        }
Пример #3
0
        /// <summary>
        /// Crée un <c>TextEl</c> qui correspond à une partie du texte <c>inT</c>. Ne
        /// peut pas être vide!
        /// </summary>
        /// <param name="tt">Le texte dont le <c>TextEl</c> est une partie. Ne peut pas
        /// être vide, ni <c>null</c>! </param>
        /// <param name="inFirst">La position du premier caractère dans <c>inT</c>. Doit
        /// être plus grand ou égal à 0. </param>
        /// <param name="inLast">La position du dernier caractère dans <c>inT</c>. S'il est plus
        /// petit que <c>inFirst</c>, l'élément est considéré comme vide.</param>
        /// <exception cref="ArgumentNullException"> si <paramref name="tt"/> est <c>null</c>
        /// </exception>
        public TextEl(TheText tt, int inFirst, int inLast)
        {
            if (tt == null)
            {
                const string Message = "On ne peut pas créer un TextEl sur un TheText null.";
                logger.Error(Message);
                throw new ArgumentNullException(nameof(tt), Message);
            }
            if (inFirst < 0 || inLast >= tt.S.Length)
            {
                string Message = String.Format
                                     ("TextEl: inFirst: {0} trop petir ou inLast {1} trop grand. tt: {2}",
                                     inFirst, inLast, tt.S);
                logger.Error("TextEl: inFirst: {0} trop petir ou inLast {1} trop grand. tt: {2}",
                             inFirst, inLast, tt.S);
                throw new ArgumentException("TextEl: inFirst trop petit ou inLast trop grand");
            }
#if DEBUG
            if (inLast < inFirst)
            {
                // L'élément est vide...
                logger.ConditionalDebug("TextEl vide créé.");
            }
#endif
            T     = tt;
            First = inFirst;
            Last  = inLast;
        }
Пример #4
0
 /// <summary>
 /// Indique que le le boouton <paramref name="butNr"/> (commence à 0) doit être formatté avec
 /// <paramref name="inCol"/>.
 /// La fonction <c>updateArcButton</c> est appelée pour le bouton <paramref name="butNr"/> (l'événement
 /// correspondant est généré...)
 /// </summary>
 /// <param name="butNr">Le numéro du bouton dont il faut changer le formatage.</param>
 /// <param name="inCol">Le nouveau formatage.</param>
 public void SetArcButtonCol(int butNr, RGB inCol)
 {
     logger.ConditionalDebug("SetArcButtonCol butNr: {0}, Col: {1}", butNr, inCol);
     if (butNr > nrSetArcButtons)
     {
         logger.Fatal("Modification d'un bouton d'arc non actif butNr: {0}", butNr);
         throw new ArgumentException("Modification d'un bouton d'arc non actif.", nameof(butNr));
     }
     UndoFactory.ExceutingAction(new ArcAction("Couleur bouton arcs", this, butNr,
                                               nrSetArcButtons, arcButtons[butNr].cf.arcColor, inCol));
     arcButtons[butNr].cf = new CharFormatting(true, inCol);
     if (butNr == nrSetArcButtons)
     {
         nrSetArcButtons++;
         if (nrSetArcButtons < NrArcButtons)
         {
             arcButtons[nrSetArcButtons].buttonClickable = true;
             OnArcButtonModified(nrSetArcButtons);
         }
     }
     OnArcButtonModified(butNr);
 }
Пример #5
0
        /// <summary>
        /// Cherche les diérèses dans le texte <c>tt</c>. Les syllabes des mots concernés sont
        /// modifiées en conséquence.
        /// </summary>
        /// <param name="tt">Le texte du poème. Non <c>null</c>.</param>
        /// <param name="pwL">La liste des <c>PhonWord</c> du poème. Les syllabes ont déjà été
        /// calculées.</param>
        /// <param name="nbrPieds">Le nombre de pieds des vers du poème. 0 si on se contente de la
        /// détection automatique du nombre de peids voulu.</param>
        /// <returns>La liste des <see cref="ZonePoeme"/> du poème. Peut être utile en cas de test.
        /// </returns>
        public static List <ZonePoeme> ChercheDierese(TheText tt, List <PhonWord> pwL, int nbrPieds)
        {
            logger.ConditionalDebug("ChercheDierese, nbrPieds: {0}", nbrPieds);
            if (tt == null)
            {
                const string Message = "ChercheDierese: tt ne peut pas être null";
                logger.Fatal(Message);
                throw new ArgumentNullException(nameof(tt), Message);
            }
            // créer les zones
            List <ZonePoeme> zL         = new List <ZonePoeme>();
            ZonePoeme        zpCourante = new ZonePoeme(tt);

            zL.Add(zpCourante);
            int pos = 0;

            while (pos < tt.S.Length)
            {
                Vers v = new Vers(tt, pos, pwL);
                if (!zpCourante.AddVers(v))
                {
                    zpCourante = new ZonePoeme(tt);
                    zL.Add(zpCourante);
                    if (!zpCourante.AddVers(v))
                    {
                        logger.Error("Une zone ne doit pas refuser le premier vers! {0}", v.ToString());
                        throw new InvalidOperationException("Une zone ne doit pas refuser le premier vers!");
                    }
                }
                pos = v.Last + 2; // on saute le caractère de fin de ligne
            }

            // chercher d'éventuelles diérèses
            foreach (ZonePoeme zp in zL)
            {
                zp.ChercheDierese(nbrPieds);
            }
            return(zL);
        }
Пример #6
0
 /// <summary>
 /// Indique que le le boouton <paramref name="butNr"/> (commence à 0) doit être formatté avec
 /// <paramref name="inCf"/>.
 /// La fonction <c>updateSylButton</c> est appelée pour le bouton <paramref name="butNr"/> (l'événement
 /// correspondant est généré...)
 /// </summary>
 /// <param name="butNr">Le numéro du bouton dont il faut changer le formatage.</param>
 /// <param name="inCf">Le nouveau formatage.</param>
 public void SetSylButtonCF(int butNr, CharFormatting inCf)
 {
     logger.ConditionalDebug("SylButtonModified butNr: {0}", butNr);
     if (butNr > nrSetButtons)
     {
         logger.Fatal("Modification d'un bouton non actif butNr: {0}", butNr);
         throw new ArgumentException("Modification d'un bouton non actif.", nameof(butNr));
     }
     UndoFactory.ExceutingAction(new SylAction("Formatage bout. syll.", this, butNr,
                                               nrSetButtons, sylButtons[butNr].cf, inCf));
     sylButtons[butNr].cf = inCf;
     if (butNr == nrSetButtons)
     {
         nrSetButtons++;
         if (nrSetButtons < NrButtons)
         {
             sylButtons[nrSetButtons].buttonClickable = true;
             OnSylButtonModified(nrSetButtons);
         }
         if (inCf.changeColor == false)
         {
             // c'est un problème. Il faut une couleur, sinon l'expérience utilisateur n'est pas consistante.
             // mettons le bouton à noir.
             sylButtons[butNr].cf = new CharFormatting(inCf, ColConfWin.predefinedColors[(int)PredefCol.black]);
         }
     }
     OnSylButtonModified(butNr);
 }