/// ------------------------------------------------------------------------------------ /// <summary> /// Removes all ignored diacritics and suprasegmentals from the specifiec string of /// diacritics that were stripped from a phone and that are not in the pattern's /// diacritics. /// </summary> /// ------------------------------------------------------------------------------------ private static string RemoveIgnoredDiacritics(string patternDiacritics, string phonesDiacritics) { if (phonesDiacritics == null) { return(string.Empty); } // If non suprasegmental diacritics are ignored, then first remove them from the // phone's diacritics if they are not found in the pattern's diacritics. if (SearchEngine.IgnoreDiacritics) { for (int i = 0; i < phonesDiacritics.Length; i++) { if (patternDiacritics.IndexOf(phonesDiacritics[i]) < 0) { IPASymbol charInfo = App.IPASymbolCache[phonesDiacritics[i]]; if (charInfo != null && charInfo.Type == IPASymbolType.diacritic) { phonesDiacritics = phonesDiacritics.Replace(phonesDiacritics[i], App.kOrc); } } } phonesDiacritics = phonesDiacritics.Replace(App.kOrc.ToString(CultureInfo.InvariantCulture), string.Empty); } // Now remove all ignored, non base char. suprasegmentals // that are not explicitly in the pattern's diacritics. foreach (char sseg in SearchEngine.IgnoredChars) { if (patternDiacritics.IndexOf(sseg) < 0) { phonesDiacritics = phonesDiacritics.Replace(sseg.ToString(CultureInfo.InvariantCulture), string.Empty); } if (phonesDiacritics.Length == 0) { break; } } return(phonesDiacritics); }
/// ------------------------------------------------------------------------------------ /// <summary> /// Constructs a tooltip for the specified character. /// </summary> /// ------------------------------------------------------------------------------------ private static string GetCharsToolTipText(IPASymbol charInfo) { string fmt; if (string.IsNullOrEmpty(charInfo.Description)) { fmt = LocalizationManager.GetString("Views.CommonToMultipleViews.CharacterPicker.ShortToolTip", "{0}", "Used to format the tooltip string for items in an IPA character picker control when the character has no description (argument is the character name)."); } else { fmt = LocalizationManager.GetString("Views.CommonToMultipleViews.CharacterPicker.LongToolTip", "{0},\n{1}", "Used to format the tooltip string for items in an IPA character picker control (1st argument is the character name, and the 2rd argument is for the description)"); } string tooltip = string.Format(fmt, charInfo.Name, charInfo.Description); return(Utils.ConvertLiteralNewLines(tooltip)); }
/// ------------------------------------------------------------------------------------ private static string GetDisplayableChar(IPASymbol ci) { return((ci.DisplayWithDottedCircle ? App.DottedCircle : string.Empty) + ci.Literal); }
/// ------------------------------------------------------------------------------------ private void SortList(IPASymbol symbolToReturnTo) { foreach (DataGridViewColumn col in Grid.Columns) { col.HeaderCell.SortGlyphDirection = (col.Name != m_sortField ? SortOrder.None : m_sortDirection); } switch (m_sortField) { case kHexadecimal: m_symbols = (m_sortDirection == SortOrder.Ascending ? m_symbols.OrderBy(x => x.Hexadecimal) : m_symbols.OrderByDescending(x => x.Hexadecimal)).ToList(); break; case kLiteral: m_symbols = (m_sortDirection == SortOrder.Ascending ? m_symbols.OrderBy(x => x.Literal) : m_symbols.OrderByDescending(x => x.Literal)).ToList(); break; case kName: m_symbols = (m_sortDirection == SortOrder.Ascending ? m_symbols.OrderBy(x => x.Name) : m_symbols.OrderByDescending(x => x.Name)).ToList(); break; case kDescription: m_symbols = (m_sortDirection == SortOrder.Ascending ? m_symbols.OrderBy(x => x.Description) : m_symbols.OrderByDescending(x => x.Description)).ToList(); break; case kType: m_symbols = (m_sortDirection == SortOrder.Ascending ? m_symbols.OrderBy(x => x.Type.ToString()) : m_symbols.OrderByDescending(x => x.Type.ToString())).ToList(); break; case kSubType: m_symbols = (m_sortDirection == SortOrder.Ascending ? m_symbols.OrderBy(x => x.SubType.ToString()) : m_symbols.OrderByDescending(x => x.SubType.ToString())).ToList(); break; case kIgnoreType: m_symbols = (m_sortDirection == SortOrder.Ascending ? m_symbols.OrderBy(x => x.IgnoreType.ToString()) : m_symbols.OrderByDescending(x => x.IgnoreType.ToString())).ToList(); break; case kIsBase: m_symbols = (m_sortDirection == SortOrder.Ascending ? m_symbols.OrderBy(x => x.IsBase) : m_symbols.OrderByDescending(x => x.IsBase)).ToList(); break; case kCanPrecedeBase: m_symbols = (m_sortDirection == SortOrder.Ascending ? m_symbols.OrderBy(x => x.CanPrecedeBase) : m_symbols.OrderByDescending(x => x.CanPrecedeBase)).ToList(); break; case kDisplayWithDottedCircle: m_symbols = (m_sortDirection == SortOrder.Ascending ? m_symbols.OrderBy(x => x.DisplayWithDottedCircle) : m_symbols.OrderByDescending(x => x.DisplayWithDottedCircle)).ToList(); break; case kAFeatures: m_symbols = (m_sortDirection == SortOrder.Ascending ? m_symbols.OrderBy(x => App.AFeatureCache.GetFeaturesText(x.AMask)) : m_symbols.OrderByDescending(x => App.AFeatureCache.GetFeaturesText(x.AMask))).ToList(); break; case kBFeatures: m_symbols = (m_sortDirection == SortOrder.Ascending ? m_symbols.OrderBy(x => App.BFeatureCache.GetFeaturesText(x.BMask)) : m_symbols.OrderByDescending(x => App.BFeatureCache.GetFeaturesText(x.BMask))).ToList(); break; } int c = Grid.CurrentCellAddress.X; int r = m_symbols.IndexOf(symbolToReturnTo); Grid.Refresh(); Grid.CurrentCell = Grid[c, r]; Grid.FirstDisplayedScrollingRowIndex = r; }
/// ------------------------------------------------------------------------------------ /// <summary> /// AddCharacterDlg Constructor. /// </summary> /// ------------------------------------------------------------------------------------ public AddCharacterDlg(IPASymbol symbol) { InitializeComponent(); lblChar.Font = App.PhoneticFont; cboMoa.Font = App.PhoneticFont; cboPoa.Font = App.PhoneticFont; lblChar.Top = lblCharLable.Top - ((lblChar.Height - lblCharLable.Height) / 2); // Load the Type combo boxes with readable strings foreach (string type in Enum.GetNames(typeof(IPASymbolType))) { cboType.Items.Add(SeperateWordsWithSpace(type)); } foreach (string type in Enum.GetNames(typeof(IPASymbolSubType))) { cboSubType.Items.Add(SeperateWordsWithSpace(type)); } foreach (string type in Enum.GetNames(typeof(IPASymbolIgnoreType))) { cboIgnoreType.Items.Add(SeperateWordsWithSpace(type)); } cboType.SelectedIndex = 0; cboSubType.SelectedIndex = 0; cboIgnoreType.SelectedIndex = 0; m_addingSymbol = (symbol == null); if (m_addingSymbol) { Symbol = new IPASymbol(); m_origSymbol = Symbol; lblUnicodeValue.Visible = false; } else { m_origSymbol = symbol; Symbol = symbol.Copy(); // Identity txtHexValue.Visible = false; lblUnicodeValue.Text = Symbol.Hexadecimal; lblChar.Text = Symbol.Literal; txtCharName.Text = Symbol.Name; txtCharDesc.Text = Symbol.Description; // Types cboType.SelectedItem = SeperateWordsWithSpace(Symbol.Type.ToString()); cboSubType.SelectedItem = SeperateWordsWithSpace(Symbol.SubType.ToString()); cboIgnoreType.SelectedItem = SeperateWordsWithSpace(Symbol.IgnoreType.ToString()); // Base Character chkIsBase.Checked = Symbol.IsBase; chkPreceedBaseChar.Checked = Symbol.CanPrecedeBase; chkDottedCircle.Checked = Symbol.DisplayWithDottedCircle; } _featuresTab.SetCurrentInfo(Symbol); // LoadMoaPoaComboBoxes(pciEditor.Grid); CreateDirtyStateHandlers(); m_dirty = false; Settings.Default.AddCharacterDlg = App.InitializeForm(this, Settings.Default.MainWindow); }