private void EditBoxCurrentMarkerTrans_TextChanged(object sender, EventArgs e) { if (_editMutex) { return; } _editMutex = true; if (EditBoxCurrentMarkerTrans.Text.Length >= 2) { if ((EditBoxCurrentMarkerTrans.SelectionLength == 0) && (EditBoxCurrentMarkerTrans.SelectionStart >= 2)) { string followingText = EditBoxCurrentMarkerTrans.Text.Substring(EditBoxCurrentMarkerTrans.SelectionStart); string s = EditBoxCurrentMarkerTrans.Text.Substring(0, EditBoxCurrentMarkerTrans.SelectionStart); char[] lastCharStr = s.ToCharArray(s.Length - 2, 2); char srcChar = lastCharStr[0]; char augChar = lastCharStr[1]; Devanagari.AugmentType augType = Devanagari.AugmentType.None; if (augChar == '_') { augType |= Devanagari.AugmentType.Macron; } else if (augChar == '\'') { augType |= Devanagari.AugmentType.Acute; } else if (augChar == '<') { augType |= Devanagari.AugmentType.Lodot; } else if (augChar == '>') { augType |= Devanagari.AugmentType.Updot; } else if (augChar == '~') { augType |= Devanagari.AugmentType.Tilde; } char desiredChar = Devanagari.AugmentChar(srcChar, augType); if (desiredChar != srcChar) { s = s.Substring(0, s.Length - 2); s += desiredChar; EditBoxCurrentMarkerTrans.Text = s + followingText; EditBoxCurrentMarkerTrans.SelectionStart = s.Length; EditBoxCurrentMarkerTrans.ScrollToCaret(); } } } _editMutex = false; }
public void AugmentTest() { string OmNamahShivaya = "oṃ namaḥ śivāya"; string OmNamahShivayaManual = "o" + Devanagari.AugmentChar('m', Devanagari.AugmentType.Lodot) + " nama" + Devanagari.AugmentChar('h', Devanagari.AugmentType.Lodot) + " " + Devanagari.AugmentChar('s', Devanagari.AugmentType.Acute) + "iv" + Devanagari.AugmentChar('a', Devanagari.AugmentType.Macron) + "ya"; Assert.AreEqual(OmNamahShivaya, OmNamahShivayaManual); }