/// <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."); } }
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; }
/// <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; }
/// <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); }
/// <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); }
/// <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); }