Example #1
0
        public static void Import(XDocument settings, IEnumerable <ClassificationGridItem> items)
        {
            ThreadHelper.ThrowIfNotOnUIThread();

            var classificationsByCategoryId = items.GroupBy(item => item.Category)
                                              .ToDictionary(group => group.Key, group => group.ToDictionary(item => item.DefinitionName));

            var allCategories = settings.Descendants("Category");

            var fontsAndColorsCategory = allCategories
                                         .SingleOrDefault(category => FontsAndColorsCategoryId.Equals(category.Attribute("Category")?.Value, StringComparison.OrdinalIgnoreCase));

            if (fontsAndColorsCategory is null)
            {
                return;
            }

            var fontsAndColorsNode = fontsAndColorsCategory.Descendants("FontsAndColors").SingleOrDefault();

            if (fontsAndColorsNode?.Attribute("Version")?.Value != "2.0")
            {
                return;
            }

            FontsAndColorsHelper.ResetAllClassificationItems();

            var categories = fontsAndColorsNode.Descendants("Category");

            foreach (var category in categories)
            {
                // Check guid
                var guid = category.Attribute("GUID")?.Value;
                if (guid is null)
                {
                    continue;
                }

                if (TextEditorCategoryId.Equals(guid, StringComparison.OrdinalIgnoreCase))
                {
                    ImportTextEditorCategory(category, classificationsByCategoryId);
                }

                if (classificationsByCategoryId.TryGetValue(new Guid(guid), out var classificationsByName))
                {
                    ImportCategory(category, classificationsByName);
                }
            }
        }
Example #2
0
        public static void Import(XDocument settings, IEnumerable <ClassificationGridItem> items)
        {
            var classificationsByCategoryId = items.GroupBy(item => item.Category)
                                              .ToDictionary(group => group.Key, group => group.ToDictionary(item => item.DefinitionName));

            var allCategories = settings.Descendants("Category");

            var fontsAndColorsCategory = allCategories
                                         .SingleOrDefault(category => category.Attribute("Category")?.Value == FontsAndColorsCategoryId);

            if (fontsAndColorsCategory is null)
            {
                return;
            }

            var fontsAndColorsNode = fontsAndColorsCategory.Descendants("FontsAndColors").SingleOrDefault();

            if (fontsAndColorsNode?.Attribute("Version")?.Value != "2.0")
            {
                return;
            }

            FontsAndColorsHelper.ResetAllClassificationItems();

            var categories = fontsAndColorsNode.Descendants("Category");

            foreach (var category in categories)
            {
                // Check guid
                var guid = category.Attribute("GUID")?.Value;
                if (guid is null ||
                    !classificationsByCategoryId.TryGetValue(new Guid(guid), out var classificationsByName))
                {
                    continue;
                }

                foreach (var item in category.Descendants("Item"))
                {
                    // Check name
                    var name = item.Attribute("Name")?.Value;
                    if (name is null ||
                        !classificationsByName.TryGetValue(name, out var classificationItem))
                    {
                        continue;
                    }

                    var foreground = item.Attribute("Foreground")?.Value;
                    if (classificationItem.IsForegroundEditable &&
                        foreground is not null &&
                        uint.TryParse(foreground.Substring(2), NumberStyles.HexNumber, provider: null, out var foregroundColorRef))
                    {
                        classificationItem.ForegroundColorRef = foregroundColorRef;
                    }

                    var background = item.Attribute("Background")?.Value;
                    if (classificationItem.IsBackgroundEditable &&
                        background is not null &&
                        uint.TryParse(background.Substring(2), NumberStyles.HexNumber, provider: null, out var backgroundColorRef))
                    {
                        classificationItem.BackgroundColorRef = backgroundColorRef;
                    }

                    var boldFont = item.Attribute("BoldFont")?.Value;
                    if (classificationItem.IsBoldEditable &&
                        boldFont is not null)
                    {
                        classificationItem.IsBold = boldFont.Equals("Yes", StringComparison.OrdinalIgnoreCase);
                    }
                }
            }
        }