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; }
/// <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); }
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); }
/// <summary/> public VariantListItem(VariantSubtag variant) { _variant = variant; }
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); }
/// <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); }
/// <summary></summary> public IWritingSystem Create(LanguageSubtag languageSubtag, ScriptSubtag scriptSubtag, RegionSubtag regionSubtag, VariantSubtag variantSubtag) { throw new NotImplementedException(); }