예제 #1
0
        /// ------------------------------------------------------------------------------------
        /// <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();
        }
예제 #2
0
        /// ------------------------------------------------------------------------------------
        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);
        }