/// ------------------------------------------------------------------------------------ /// <summary> /// Because of a bug in version 3.3.0 to 3.3.2, the feature overrides file may contain /// phones whose overridden features are the same as the phone's default features. /// This method will clean out the feature overrides file of phones whose features /// really aren't overridden. /// </summary> /// ------------------------------------------------------------------------------------ private static void RemoveFeatureOverridesThatAreNotOverridden(PaProject project) { var newOverrideList = new List <FeatureOverride>(); foreach (var phoneInfo in project.PhoneCache.Values) { var foverride = project.FeatureOverrides.GetOverridesForPhone(phoneInfo.Phone); if (foverride == null) { continue; } if (!phoneInfo.HasAFeatureOverrides && foverride.AFeatureNames.Count() > 0) { foverride.AFeatureNames = new List <string>(0); } if (!phoneInfo.HasBFeatureOverrides && foverride.BFeatureNames.Count() > 0) { foverride.BFeatureNames = new List <string>(0); } if (foverride.AFeatureNames.Count() > 0 || foverride.BFeatureNames.Count() > 0) { newOverrideList.Add(foverride); } } var filePath = FeatureOverrides.GetFileForProject(project.ProjectPathFilePrefix); FeatureOverrides.BuildXmlForOverrides(newOverrideList, project.DistinctiveFeatureSet).Save(filePath); project.LoadFeatureOverrides(); }
/// ------------------------------------------------------------------------------------ private void MigrateFeatureOverrides(string filePath) { var root = XElement.Load(filePath); if (!root.HasElements) { return; } var newOverrideList = new List <FeatureOverride>(); var phoneElements = from e in root.Elements("PhoneInfo") where (string)e.Attribute("articulatoryFeaturesChanged") == "true" || (string)e.Attribute("binaryFeaturesChanged") == "true" select e; foreach (var element in phoneElements) { var foverride = new FeatureOverride { Phone = element.Attribute("Phone").Value }; if ((string)element.Attribute("articulatoryFeaturesChanged") == "true") { foverride.AFeatureNames = GetFeatureNamesForType(element, "articulatoryFeatures", _defaultDescriptiveFeatures); } if ((string)element.Attribute("binaryFeaturesChanged") == "true") { foverride.BFeatureNames = GetFeatureNamesForType(element, "binaryFeatures", _defaultDistinctiveFeatures); } if (foverride.AFeatureNames.Count() > 0 || foverride.BFeatureNames.Count() > 0) { newOverrideList.Add(foverride); } } FeatureOverrides.BuildXmlForOverrides(newOverrideList, BFeatureCache.DefaultFeatureSetName).Save(filePath); }