/// ------------------------------------------------------------------------------------
        /// <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;
        }
Exemple #5
0
        /// ------------------------------------------------------------------------------------
        /// <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);
        }