Example #1
0
        private void PopulateVariantCombo(bool fPreserve)
        {
            m_variantName.TextChanged -= m_variantName_TextChanged;             // don't modify the WS while fixing up the combo.
            m_variantName.BeginUpdate();
            VariantSubtag orig = VariantSubtag;

            m_variantName.ClearItems();
            m_variantName.Items.AddRange((from subtag in LangTagUtils.VariantSubtags
                                          where subtag.IsVariantOf(m_ws.Id)
                                          select subtag).ToArray());
            if (orig != null && fPreserve)
            {
                VariantSubtag = orig;
            }
            m_variantName.EndUpdate();
            m_variantName.TextChanged += m_variantName_TextChanged;
        }
Example #2
0
        /// <summary>
        /// Load the controls from the writing system, if it is not null. If it is null, clear all controls.
        /// If the combo boxes are not populated, do nothing...the method will get called again
        /// when the form loads.
        /// </summary>
        private void LoadControlsFromWritingSystem()
        {
            m_enableLangTagSideEffects = false;
            if (m_ws == null)
            {
                return;                 // Probably in design mode; can't populate.
            }
            m_origVariantSubtag = m_ws.VariantSubtag;
            m_origRegionSubtag  = m_ws.RegionSubtag;
            m_origScriptSubtag  = m_ws.ScriptSubtag;
            m_scriptName.ClearItems();
            m_scriptName.Items.AddRange(LangTagUtils.ScriptSubtags.ToArray());
            ScriptSubtag = m_origScriptSubtag;

            m_regionName.ClearItems();
            m_regionName.Items.AddRange(LangTagUtils.RegionSubtags.ToArray());
            RegionSubtag = m_origRegionSubtag;

            PopulateVariantCombo(false);
            VariantSubtag = m_origVariantSubtag;
            m_enableLangTagSideEffects = true;
        }
		public void GetVariantCodes_VariantsSet_ReturnsString()
		{
			IEnumerable<VariantSubtag> variantSubtags = new VariantSubtag[] { "fonipa", "etic" };
			Assert.That(IetfLanguageTag.GetVariantCodes(variantSubtags), Is.EqualTo("fonipa-x-etic"));
		}
		public void GetVariantCodes_EmptyVariants_ReturnsEmpty()
		{
			IEnumerable<VariantSubtag> variantSubtags = new VariantSubtag[] {};
			Assert.That(IetfLanguageTag.GetVariantCodes(variantSubtags), Is.Null);
			
		}
Example #5
0
        public bool CheckValid()
        {
            CheckDisposed();

            string caption = FwCoreDlgControls.kstidError;

            ScriptSubtag scriptSubtag = ScriptSubtag;

            // Can't allow a script name without an abbreviation.
            if (scriptSubtag == null && !string.IsNullOrEmpty(m_scriptName.Text.Trim()))
            {
                MessageBox.Show(FindForm(), FwCoreDlgControls.kstidMissingScrAbbr, caption);
                return(false);
            }
            if (scriptSubtag != null && scriptSubtag.IsPrivateUse)
            {
                if (!LangTagUtils.GetScriptSubtag(scriptSubtag.Code).IsPrivateUse)
                {
                    MessageBox.Show(FindForm(), FwCoreDlgControls.kstidDupScrAbbr, caption);
                    return(false);
                }
                if (!scriptSubtag.IsValid)
                {
                    MessageBox.Show(FindForm(), FwCoreDlgControls.kstidInvalidScrAbbr, caption);
                    return(false);
                }
            }

            RegionSubtag regionSubtag = RegionSubtag;

            // Can't allow a country name without an abbreviation.
            if (regionSubtag == null && !string.IsNullOrEmpty(m_regionName.Text.Trim()))
            {
                MessageBox.Show(FindForm(), FwCoreDlgControls.kstidMissingRgnAbbr, caption);
                return(false);
            }
            if (regionSubtag != null && regionSubtag.IsPrivateUse)
            {
                if (!LangTagUtils.GetRegionSubtag(regionSubtag.Code).IsPrivateUse)
                {
                    MessageBox.Show(FindForm(), FwCoreDlgControls.kstidDupRgnAbbr, caption);
                    return(false);
                }
                if (!regionSubtag.IsValid)
                {
                    MessageBox.Show(FindForm(), FwCoreDlgControls.kstidInvalidRgnAbbr, caption);
                    return(false);
                }
            }

            VariantSubtag variantSubtag = VariantSubtag;

            // Can't allow a variant name without an abbreviation.
            if (variantSubtag == null && !string.IsNullOrEmpty(m_variantName.Text.Trim()))
            {
                MessageBox.Show(FindForm(), FwCoreDlgControls.kstidMissingVarAbbr, caption);
                return(false);
            }
            if (variantSubtag != null && variantSubtag.IsPrivateUse)
            {
                if (!LangTagUtils.GetVariantSubtag(variantSubtag.Code).IsPrivateUse)
                {
                    MessageBox.Show(FindForm(), FwCoreDlgControls.kstidDupVarAbbr, caption);
                    return(false);
                }
                if (!variantSubtag.IsValid)
                {
                    MessageBox.Show(FindForm(), FwCoreDlgControls.kstidInvalidVarAbbr, caption);
                    return(false);
                }
            }
            if (variantSubtag != null)
            {
                var parts = variantSubtag.Code.Split('-').ToList();
                // If these subtags are private use, the first element of each must also be distinct.
                if (m_ws.LanguageSubtag.IsPrivateUse)
                {
                    parts.Add(m_ws.LanguageSubtag.Code.Split('-').First());
                }
                if (scriptSubtag != null && scriptSubtag.IsPrivateUse)
                {
                    parts.Add(scriptSubtag.Code.Split('-').First());
                }
                if (regionSubtag != null && regionSubtag.IsPrivateUse)
                {
                    parts.Add(regionSubtag.Code.Split('-').First());
                }
                var uniqueParts = new HashSet <string>(StringComparer.OrdinalIgnoreCase);
                foreach (var part in parts)
                {
                    if (uniqueParts.Contains(part))
                    {
                        MessageBox.Show(FindForm(), String.Format(FwCoreDlgControls.kstidDuplicateParts, part), caption);
                        return(false);
                    }
                    uniqueParts.Add(part);
                }
            }

            return(true);
        }
Example #6
0
 /// <summary/>
 public VariantListItem(VariantSubtag variant)
 {
     _variant = variant;
 }
Example #7
0
        public void GetVariantCodes_VariantsSet_ReturnsString()
        {
            IEnumerable <VariantSubtag> variantSubtags = new VariantSubtag[] { "fonipa", "etic" };

            Assert.That(IetfLanguageTag.GetVariantCodes(variantSubtags), Is.EqualTo("fonipa-x-etic"));
        }
Example #8
0
        public void GetVariantCodes_EmptyVariants_ReturnsEmpty()
        {
            IEnumerable <VariantSubtag> variantSubtags = new VariantSubtag[] {};

            Assert.That(IetfLanguageTag.GetVariantCodes(variantSubtags), Is.Null);
        }
Example #9
0
        /// <summary>
        /// Creates a new writing system.
        /// </summary>
        /// <param name="languageSubtag">The language subtag.</param>
        /// <param name="scriptSubtag">The script subtag.</param>
        /// <param name="regionSubtag">The region subtag.</param>
        /// <param name="variantSubtag">The variant subtag.</param>
        /// <returns></returns>
        public IWritingSystem Create(LanguageSubtag languageSubtag, ScriptSubtag scriptSubtag, RegionSubtag regionSubtag, VariantSubtag variantSubtag)
        {
            if (!languageSubtag.IsValid)
            {
                throw new ArgumentException("Can not create a new writing system with an invalid language tag.");
            }
            PalasoWritingSystem ws;

            lock (m_syncRoot)
                ws = (PalasoWritingSystem)m_localStore.CreateNew();

            ws.LanguageSubtag = languageSubtag;
            ws.ScriptSubtag   = scriptSubtag;
            ws.RegionSubtag   = regionSubtag;
            ws.VariantSubtag  = variantSubtag;
            if (!string.IsNullOrEmpty(languageSubtag.Name))
            {
                ws.Abbreviation = languageSubtag.Name.Length > 3 ? languageSubtag.Name.Substring(0, 3) : languageSubtag.Name;
            }
            else
            {
                ws.Abbreviation = ws.Id;
            }

            CultureInfo ci = MiscUtils.GetCultureForWs(ws.Id);

            if (ci != null)
            {
                ws.SortUsing = WritingSystemDefinition.SortRulesType.OtherLanguage;
                ws.SortRules = ci.Name;
            }

            ws.Modified = false;
            return(ws);
        }
Example #10
0
 /// <summary></summary>
 public IWritingSystem Create(LanguageSubtag languageSubtag, ScriptSubtag scriptSubtag, RegionSubtag regionSubtag, VariantSubtag variantSubtag)
 {
     throw new NotImplementedException();
 }