Example #1
0
        private Theme GetTheme(ThemeCategory category)
        {
            string key;

            if (category == ThemeCategory.App)
            {
                key = "AppsUseLightTheme";
            }
            else // (category == ThemeCategory.System)
            {
                key = "SystemUsesLightTheme";
            }
            try
            {
                RegistryKey registryKey = Registry.Users;
                RegistryKey subKey      = registryKey.CreateSubKey(wmiRegistryPath);
                int         result      = (int)subKey.GetValue(key);
                return((Theme)result);
            }
            catch (Exception e)
            {
                Console.WriteLine("Error reading key!");
                Console.WriteLine(e);
                return(Theme.Dark);
            }
        }
Example #2
0
        private void SetRegistryTheme(ThemeCategory category, Theme theme)
        {
            String key;

            if (category == ThemeCategory.System)
            {
                key = "SystemUsesLightTheme";
            }
            else if (category == ThemeCategory.App)
            {
                key = "AppsUseLightTheme";
            }
            else
            {
                throw new Exception("Invalid theme category!");
            }
            try
            {
                RegistryKey registryKey = Registry.Users;
                RegistryKey subKey      = registryKey.CreateSubKey(wmiRegistryPath);
                subKey.SetValue(key, (int)theme);
            }
            catch (Exception e)
            {
                Console.WriteLine("Error writing key!");
                Console.WriteLine(e);
            }
        }
Example #3
0
        public PanelBase CreatePanel(ThemeCategory category)
        {
            switch (category)
            {
            case ThemeCategory.Themes:
                Controller.Part = ThemePart.Category;
                return(AddUIComponent <SelectThemePanel>());

            case ThemeCategory.Terrain:
                return(AddUIComponent <CategoryPanels.TerrainPanel>());

            case ThemeCategory.Water:
                return(AddUIComponent <CategoryPanels.WaterPanel>());

            case ThemeCategory.Structures:
                return(AddUIComponent <StructuresPanel>());

            case ThemeCategory.Weather:
                return(AddUIComponent <WeatherPanel>());

            case ThemeCategory.Atmosphere:
                return(AddUIComponent <AtmospherePanel>());

            case ThemeCategory.Mixes:
                return(AddUIComponent <MixesPanel>());

            case ThemeCategory.None:
                return(AddUIComponent <LutsPanel>());

            default: return(null);
            }
        }
Example #4
0
 public ListItem(string id, string displayName, string author, bool isFavourite, bool isBlacklisted, ThemeCategory category)
 {
     ID            = id;
     DisplayName   = displayName;
     Author        = author;
     IsFavourite   = isFavourite;
     IsBlacklisted = isBlacklisted;
     Category      = category;
 }
Example #5
0
 public void changeCateogry(ThemeCategory category)
 {
     if (category == ThemeCategory.transitions)
     {
         comboBoxCategory.SelectedIndex = 0;
     }
     if (category == ThemeCategory.precursors)
     {
         comboBoxCategory.SelectedIndex = 1;
     }
 }
Example #6
0
        public static string GetCategoryAndPartLabel(ThemeCategory category, ThemePart part)
        {
            string prefix = string.Concat(Translation.Instance.GetTranslation(TranslationID.LABEL_SELECT), " ");
            string text   = string.Empty;

            switch (category)
            {
            case ThemeCategory.Themes:
                text = Translation.Instance.GetTranslation(TranslationID.LABEL_THEME);
                break;

            case ThemeCategory.Terrain:
                text = Translation.Instance.GetTranslation(TranslationID.LABEL_TERRAIN);
                break;

            case ThemeCategory.Water:
                text = Translation.Instance.GetTranslation(TranslationID.LABEL_WATER);
                break;

            case ThemeCategory.Structures:
                text = Translation.Instance.GetTranslation(TranslationID.LABEL_STRUCTURES);
                break;

            case ThemeCategory.Atmosphere:
                text = Translation.Instance.GetTranslation(TranslationID.LABEL_ATMOSPHERE);
                break;

            case ThemeCategory.Weather:
                text = Translation.Instance.GetTranslation(TranslationID.LABEL_WEATHER);
                break;
            }
            string postFix = string.Empty;

            switch (part)
            {
            case ThemePart.Texture:
                postFix = string.Concat(" ", Translation.Instance.GetTranslation(TranslationID.LABEL_TEXTURE));
                break;

            case ThemePart.Color:
                postFix = string.Concat(" ", Translation.Instance.GetTranslation(TranslationID.LABEL_COLOR));
                break;

            case ThemePart.Offset:
                postFix = string.Concat(" ", Translation.Instance.GetTranslation(TranslationID.LABEL_OFFSET));
                break;

            case ThemePart.Value:
                postFix = string.Concat(" ", Translation.Instance.GetTranslation(TranslationID.LABEL_VALUE));
                break;
            }
            return(string.Concat(prefix, text, postFix));
        }
Example #7
0
        public ToolbarButton(ThemeCategory part, UIComponent parent)
        {
            Category = part;
            string icon;
            string locale;

            switch (part)
            {
            case ThemeCategory.Themes:
                icon   = UISprites.ThemesIcon;
                locale = TranslationID.TOOLTIP_THEMES;
                break;

            case ThemeCategory.Terrain:
                icon   = UISprites.TerrainIcon;
                locale = TranslationID.TOOLTIP_TERRAIN;
                break;

            case ThemeCategory.Water:
                icon   = UISprites.WaterIcon;
                locale = TranslationID.TOOLTIP_WATER;
                break;

            case ThemeCategory.Structures:
                icon   = UISprites.StructuresIcon;
                locale = TranslationID.TOOLTIP_STRUCTURES;
                break;

            case ThemeCategory.Atmosphere:
                icon   = UISprites.AtmosphereIcon;
                locale = TranslationID.TOOLTIP_ATMOSPHERE;
                break;

            case ThemeCategory.Weather:
                icon   = UISprites.WeatherIcon;
                locale = TranslationID.TOOLTIP_WEATHER;
                break;

            case ThemeCategory.Mixes:
                icon   = UISprites.SettingsIcon;
                locale = TranslationID.TOOLTIP_MIXES;
                break;

            default:
                icon   = UISprites.LutIcon;
                locale = TranslationID.TOOLTIP_LUTS;
                break;
            }
            Button = UIUtils.CreateButton(parent, ButtonSize, foregroundSprite: UISprites.IconBorder, backgroundSprite: icon, atlas: UISprites.Atlas, isFocusable: true, tooltip: Translation.Instance.GetTranslation(locale));
            Button.eventClicked += OnButtonClicked;
        }
Example #8
0
 private void UpdateThemeIfNecessary(ThemeCategory category, Theme theme)
 {
     if (category == ThemeCategory.App && theme != currentAppTheme)
     {
         currentAppTheme = theme;
         UpdateDisplayTheme();
         SetRegistryTheme(ThemeCategory.App, theme);
     }
     if (category == ThemeCategory.System && theme != currentSystemTheme)
     {
         currentSystemTheme = theme;
         UpdateDisplayTheme();
         SetRegistryTheme(ThemeCategory.System, theme);
     }
 }
Example #9
0
 private void HandleQuickSwitchCategoryCheckbox(ThemeCategory category)
 {
     if (category == ThemeCategory.System)
     {
         bool currentValue = systemChangeQuickSwitch.Checked;
         Settings.Default.QuickSwitchChangesSystem = !currentValue;
         systemChangeQuickSwitch.Checked           = !currentValue;
     }
     else if (category == ThemeCategory.App)
     {
         bool currentValue = appChangeQuickSwitch.Checked;
         Settings.Default.QuickSwitchChangesApp = !currentValue;
         appChangeQuickSwitch.Checked           = !currentValue;
     }
     Settings.Default.Save();
     QuickSwitchTheme(currentDisplayTheme);
     EvaluateQuickSwitchEligibility();
 }
Example #10
0
        public void LoadCategory(ThemeCategory category, string themeID)
        {
            switch (category)
            {
            case ThemeCategory.Themes: CurrentMix = new ThemeMix(themeID); break;

            case ThemeCategory.Terrain: CurrentMix.Terrain.Load(themeID); break;

            case ThemeCategory.Water: CurrentMix.Water.Load(themeID); break;

            case ThemeCategory.Structures: CurrentMix.Structures.Load(themeID); break;

            case ThemeCategory.Atmosphere: CurrentMix.Atmosphere.Load(themeID); break;

            case ThemeCategory.Weather: CurrentMix.Weather.Load(themeID); break;
            }
            SaveLocalMix();
            EventUIDirty?.Invoke(this, new UIDirtyEventArgs(CurrentMix));
        }
Example #11
0
        public bool IsSelected(string themeID, ThemeCategory category)
        {
            switch (category)
            {
            case ThemeCategory.Themes: return(CurrentMix.IsSelected(themeID));

            case ThemeCategory.Atmosphere: return(CurrentMix.Atmosphere.IsSelected(themeID));

            case ThemeCategory.Structures: return(CurrentMix.Structures.IsSelected(themeID));

            case ThemeCategory.Terrain: return(CurrentMix.Terrain.IsSelected(themeID));

            case ThemeCategory.Water: return(CurrentMix.Water.IsSelected(themeID));

            case ThemeCategory.Weather: return(CurrentMix.Weather.IsSelected(themeID));

            default: return(false);
            }
        }
Example #12
0
        private void HandleSunsetCategoryCheckbox(ThemeCategory category)
        {
            bool checkRemoved = false;

            if (category == ThemeCategory.System)
            {
                bool currentValue = systemChangeSunset.Checked;
                Settings.Default.SunsetChangesSystem = !currentValue;
                systemChangeSunset.Checked           = !currentValue;
                checkRemoved = currentValue;
            }
            else if (category == ThemeCategory.App)
            {
                bool currentValue = appChangeSunset.Checked;
                Settings.Default.SunsetChangesApp = !currentValue;
                appChangeSunset.Checked           = !currentValue;
                checkRemoved = currentValue;
            }
            Settings.Default.Save();
            if (!checkRemoved)
            {
                UpdateThemeIfNecessary(category, lastSunState ? Theme.Light : Theme.Dark);
            }
        }
Example #13
0
            internal static bool ScaleIsApplicable(double scale, ThemeCategory cat)
            {
                bool bApplicable = false;

                bool bHasMin = !string.IsNullOrEmpty(cat.MinScale);
                bool bHasMax = !string.IsNullOrEmpty(cat.MaxScale);

                if (bHasMin)
                {
                    double minVal = double.Parse(cat.MinScale, CultureInfo.InvariantCulture);
                    if (bHasMax) //bHasMin = true, bHasMax = true
                    {
                        double maxVal = double.Parse(cat.MaxScale, CultureInfo.InvariantCulture);
                        if (scale >= minVal && scale < maxVal)
                            bApplicable = true;
                    }
                    else         //bHasMin = true, bHasMax = false
                    {
                        if (scale >= minVal)
                            bApplicable = true;
                    }
                }
                else
                {
                    if (bHasMax) //bHasMin = false, bHasMax = true
                    {
                        double maxVal = double.Parse(cat.MaxScale, CultureInfo.InvariantCulture);
                        if (scale < maxVal)
                            bApplicable = true;
                    }
                    else         //bHasMin = false, bHasMax = false
                    {
                        bApplicable = true;
                    }
                }
                return bApplicable;
            }
Example #14
0
 public ThemeSelectedEventArgs(string themeID, ThemeCategory category, ThemePart part)
 {
     ThemeID  = themeID;
     Category = category;
     Part     = part;
 }
Example #15
0
 public ThemesPanelClosingEventArgs(ThemeCategory category, ThemePart part)
 {
     Category = category;
     Part     = part;
 }
Example #16
0
 private TreeNode CreateCompressedThemeNode(LayerNodeMetadata layer, ThemeCategory cat, int count)
 {
     TreeNode node = new TreeNode();
     node.Text = (count + " other styles");
     node.ImageKey = node.SelectedImageKey = IMG_OTHER;
     var meta = new LayerThemeNodeMetadata(true, Properties.Resources.icon_etc, node.Text);
     node.Tag = meta;
     layer.AddThemeNode(cat, meta);
     return node;
 }
Example #17
0
 public ThemeDirtyEventArgs(ThemeCategory category, ThemePart part, IMixable loadable = null)
 {
     Loadable = loadable;
     Category = category;
     Part     = part;
 }
Example #18
0
        private TreeNode CreateLayerNode(RuntimeMapLayer layer)
        {
            var node = new TreeNode();
            node.Name = layer.ObjectId;
            node.Text = layer.LegendLabel;
            node.Checked = layer.Visible;
            //node.ContextMenuStrip = _legend.LayerContextMenu;
            var lt = layer.Type;
            var fsId = layer.FeatureSourceID;

            LayerNodeMetadata layerMeta = null;
            if (fsId.EndsWith("DrawingSource"))
            {
                node.SelectedImageKey = node.ImageKey = IMG_DWF;
                bool bInitiallySelectable = layer.Selectable;
                if (_layers.ContainsKey(layer.ObjectId))
                {
                    layerMeta = _layers[layer.ObjectId];
                    bInitiallySelectable = layerMeta.WasInitiallySelectable;
                }
                else //If not in the dictionary, assume it is a dynamically added layer
                {
                    RuntimeMapGroup group = null;
                    if (!string.IsNullOrEmpty(layer.Group))
                        group = _map.Groups[layer.Group];
                    layerMeta = new LayerNodeMetadata(layer, bInitiallySelectable);
                    _layers[layer.ObjectId] = layerMeta;
                }
                node.Tag = layerMeta;
                node.ToolTipText = string.Format(Properties.Resources.DrawingLayerTooltip, Environment.NewLine, layer.Name, layer.FeatureSourceID);
            }
            else //Vector or Grid layer
            {
                var ldfId = layer.LayerDefinitionID;
                if (_layers.ContainsKey(layer.ObjectId))
                {
                    layerMeta = _layers[layer.ObjectId];
                }
                else
                {
                    RuntimeMapGroup group = null;
                    if (!string.IsNullOrEmpty(layer.Group))
                        group = _map.Groups[layer.Group];
                    layerMeta = new LayerNodeMetadata(layer, layer.Selectable);
                    _layers[layer.ObjectId] = layerMeta;
                }
                if (string.IsNullOrEmpty(layerMeta.LayerDefinitionContent))
                    return null;

                node.Tag = layerMeta;

                const int LAYER_VECTOR = 0;
                const int LAYER_RASTER = 1;
                const int LAYER_DWF = 2;

                XmlDocument doc = new XmlDocument();
                doc.LoadXml(layerMeta.LayerDefinitionContent);
                int type = LAYER_VECTOR;
                XmlNodeList scaleRanges = doc.GetElementsByTagName("VectorScaleRange");
                if (scaleRanges.Count == 0)
                {
                    scaleRanges = doc.GetElementsByTagName("GridScaleRange");
                    if (scaleRanges.Count == 0)
                    {
                        scaleRanges = doc.GetElementsByTagName("DrawingLayerDefinition");
                        if (scaleRanges.Count == 0)
                            return null;
                        type = LAYER_DWF;
                    }
                    else
                        type = LAYER_RASTER;
                }

                String[] typeStyles = new String[] { "PointTypeStyle", "LineTypeStyle", "AreaTypeStyle", "CompositeTypeStyle" };
                String[] ruleNames = new String[] { "PointRule", "LineRule", "AreaRule", "CompositeRule" };

                node.ToolTipText = string.Format(Properties.Resources.DefaultLayerTooltip, Environment.NewLine, layer.Name, layer.FeatureSourceID, layer.QualifiedClassName);
                //Do this if not cached already from a previous run
                if (!layerMeta.HasTheme() || !layerMeta.HasDefaultIcons())
                {
                    for (int sc = 0; sc < scaleRanges.Count; sc++)
                    {
                        XmlElement scaleRange = (XmlElement)scaleRanges[sc];
                        XmlNodeList minElt = scaleRange.GetElementsByTagName("MinScale");
                        XmlNodeList maxElt = scaleRange.GetElementsByTagName("MaxScale");
                        String minScale, maxScale;
                        minScale = "0";
                        maxScale = "1000000000000.0";   // as MDF's VectorScaleRange::MAX_MAP_SCALE
                        if (minElt.Count > 0)
                            minScale = minElt[0].ChildNodes[0].Value;
                        if (maxElt.Count > 0)
                            maxScale = maxElt[0].ChildNodes[0].Value;

                        if (type != LAYER_VECTOR)
                            break;

                        bool bComposite = false;

                        //Check TS count. Give precedence to composite type styles
                        List<XmlNode> typeStyleCol = new List<XmlNode>();
                        XmlNodeList styleNodes = scaleRange.GetElementsByTagName(typeStyles[3]);
                        List<RuleData> rules = new List<RuleData>();
                        if (styleNodes.Count > 0)
                        {
                            foreach (XmlNode n in styleNodes)
                            {
                                // We will check if this typestyle is going to be shown in the legend
                                XmlNodeList showInLegend = ((XmlElement)n).GetElementsByTagName("ShowInLegend"); //NOXLATE
                                if (showInLegend.Count > 0)
                                    if (!bool.Parse(showInLegend[0].ChildNodes[0].Value))
                                        continue;   // This typestyle does not need to be shown in the legend

                                typeStyleCol.Add(n);

                                var ruleData = new RuleData();
                                ruleData.GeomType = 3;
                                ruleData.RuleNodes = ((XmlElement)n).GetElementsByTagName(ruleNames[3]);
                                if (ruleData.RuleNodes.Count > 0)
                                    rules.Add(ruleData);
                            }

                            bComposite = true;
                        }
                        else
                        {
                            for (int t = 0; t < 3; t++)
                            {
                                styleNodes = scaleRange.GetElementsByTagName(typeStyles[t]);
                                foreach (XmlNode n in styleNodes)
                                {
                                    // We will check if this typestyle is going to be shown in the legend
                                    XmlNodeList showInLegend = ((XmlElement)n).GetElementsByTagName("ShowInLegend"); //NOXLATE
                                    if (showInLegend.Count > 0)
                                        if (!bool.Parse(showInLegend[0].ChildNodes[0].Value))
                                            continue;   // This typestyle does not need to be shown in the legend

                                    typeStyleCol.Add(n);

                                    var ruleData = new RuleData();
                                    ruleData.GeomType = t;
                                    ruleData.RuleNodes = ((XmlElement)n).GetElementsByTagName(ruleNames[t]);
                                    if (ruleData.RuleNodes.Count > 0)
                                        rules.Add(ruleData);
                                }
                            }
                        }

                        //No type styles. Skip
                        if (typeStyleCol.Count == 0)
                            continue;

                        //Determine if this is themed or not
                        int nTotalRules = 0;
                        foreach (RuleData r in rules)
                        {
                            nTotalRules += r.RuleNodes.Count;
                        }
                        bool bThemed = nTotalRules > 1;
                        if (bThemed)
                        {
                            int catIndex = 0;
                            for (int i = 0; i < rules.Count; i++)
                            {
                                RuleData theRule = rules[i];
                                ThemeCategory themeCat = new ThemeCategory()
                                {
                                    MinScale = minScale,
                                    MaxScale = maxScale,
                                    GeometryType = theRule.GeomType
                                };

                                //Non-composite styles must be processed once
                                if (layerMeta.CategoryExists(themeCat) && theRule.GeomType != 3)
                                    continue;

                                layerMeta.SetDefaultIcon(themeCat, Properties.Resources.lc_theme);
                                node.ToolTipText = string.Format(Properties.Resources.ThemedLayerTooltip, Environment.NewLine, layer.Name, layer.FeatureSourceID, layer.QualifiedClassName, nTotalRules);

                                if (_legend.ThemeCompressionLimit > 0 && theRule.RuleNodes.Count > _legend.ThemeCompressionLimit)
                                {
                                    AddThemeRuleNode(layerMeta, themeCat, node, theRule.GeomType, catIndex, theRule.RuleNodes, 0);
                                    node.Nodes.Add(CreateCompressedThemeNode(layerMeta, themeCat, theRule.RuleNodes.Count - 2));
                                    AddThemeRuleNode(layerMeta, themeCat, node, theRule.GeomType, (catIndex + (theRule.RuleNodes.Count - 1)), theRule.RuleNodes, theRule.RuleNodes.Count - 1);
                                }
                                else
                                {
                                    for (int r = 0; r < theRule.RuleNodes.Count; r++)
                                    {
                                        AddThemeRuleNode(layerMeta, themeCat, node, theRule.GeomType, (catIndex + r), theRule.RuleNodes, r);
                                    }
                                }
                                //Only bump catIndex if composite, as category indexes for composite styles are handled differently
                                if (bComposite)
                                    catIndex += theRule.RuleNodes.Count;
                            }
                        }
                        else
                        {
                            Trace.Assert(rules.Count == 1);
                            Trace.Assert(rules[0].RuleNodes.Count == 1);
                            RuleData theRule = rules[0];

                            ThemeCategory themeCat = new ThemeCategory()
                            {
                                MinScale = minScale,
                                MaxScale = maxScale,
                                GeometryType = theRule.GeomType
                            };

                            if (layerMeta.CategoryExists(themeCat))
                                continue;

                            if (LayerNodeMetadata.ScaleIsApplicable(_map.ViewScale, themeCat))
                            {
                                if (!layerMeta.HasDefaultIconsAt(_map.ViewScale))
                                {
                                    try
                                    {
                                        var img = _map.GetLegendImage(layer.LayerDefinitionID,
                                                                                _map.ViewScale,
                                                                                16,
                                                                                16,
                                                                                "PNG",
                                                                                (theRule.GeomType + 1),
                                                                                -1);
                                        legendCallCount++;
                                        layerMeta.SetDefaultIcon(themeCat, img);
                                        node.ToolTipText = string.Format(Properties.Resources.DefaultLayerTooltip, Environment.NewLine, layer.Name, layer.FeatureSourceID, layer.QualifiedClassName);
                                    }
                                    catch
                                    {
                                        //layerMeta.SetDefaultIcon(themeCat, Properties.Resources.lc_broken);
                                    }
                                }
                            }
                        }

                        //for (int geomType = 0; geomType < typeStyles.Length; geomType++)
                        //{
                        //    ThemeCategory themeCat = new ThemeCategory()
                        //    {
                        //        MinScale = minScale,
                        //        MaxScale = maxScale,
                        //        GeometryType = geomType
                        //    };

                        //    if (layerMeta.CategoryExists(themeCat))
                        //        continue;

                        //    int catIndex = 0;
                        //    XmlNodeList typeStyle = scaleRange.GetElementsByTagName(typeStyles[geomType]);
                        //    for (int st = 0; st < typeStyle.Count; st++)
                        //    {
                        //        // We will check if this typestyle is going to be shown in the legend
                        //        XmlNodeList showInLegend = ((XmlElement)typeStyle[st]).GetElementsByTagName("ShowInLegend");
                        //        if (showInLegend.Count > 0)
                        //            if (!bool.Parse(showInLegend[0].ChildNodes[0].Value))
                        //                continue;   // This typestyle does not need to be shown in the legend

                        //        XmlNodeList rules = ((XmlElement)typeStyle[st]).GetElementsByTagName(ruleNames[geomType]);
                        //        if (rules.Count > 1)
                        //        {
                        //            layerMeta.SetDefaultIcon(themeCat, Properties.Resources.lc_theme);
                        //            node.ToolTipText = string.Format(Properties.Resources.ThemedLayerTooltip, Environment.NewLine, layer.Name, layer.FeatureSourceID, layer.QualifiedClassName, rules.Count);

                        //            if (_legend.ThemeCompressionLimit > 0 && rules.Count > _legend.ThemeCompressionLimit)
                        //            {
                        //                AddThemeRuleNode(layerMeta, themeCat, node, geomType, 0, rules, 0);
                        //                node.Nodes.Add(CreateCompressedThemeNode(layerMeta, themeCat, rules.Count - 2));
                        //                AddThemeRuleNode(layerMeta, themeCat, node, geomType, rules.Count - 1, rules, rules.Count - 1);
                        //            }
                        //            else
                        //            {
                        //                for (int r = 0; r < rules.Count; r++)
                        //                {
                        //                    AddThemeRuleNode(layerMeta, themeCat, node, geomType, catIndex++, rules, r);
                        //                }
                        //            }
                        //        }
                        //        else
                        //        {
                        //            if (LayerNodeMetadata.ScaleIsApplicable(_map.ViewScale, themeCat))
                        //            {
                        //                if (!layerMeta.HasDefaultIconsAt(_map.ViewScale))
                        //                {
                        //                    try
                        //                    {
                        //                        var img = _map.GetLegendImage(layer.LayerDefinitionID,
                        //                                                                _map.ViewScale,
                        //                                                                16,
                        //                                                                16,
                        //                                                                "PNG",
                        //                                                                -1,
                        //                                                                -1);
                        //                        legendCallCount++;
                        //                        layerMeta.SetDefaultIcon(themeCat, img);
                        //                        node.ToolTipText = string.Format(Properties.Resources.DefaultLayerTooltip, Environment.NewLine, layer.Name, layer.FeatureSourceID, layer.QualifiedClassName);
                        //                    }
                        //                    catch
                        //                    {
                        //                        //layerMeta.SetDefaultIcon(themeCat, Properties.Resources.lc_broken);
                        //                    }
                        //                }
                        //            }
                        //        }
                        //    }
                        //}
                    }
                }
                else //Already cached
                {
                    Trace.TraceInformation("Icons already cached for: " + layer.Name);
                    node.Nodes.AddRange(layerMeta.CreateThemeNodesFromCachedMetadata(_map.ViewScale));
                }
            }

            return node;
        }
Example #19
0
        private TreeNode CreateThemeRuleNode(LayerNodeMetadata layer, ThemeCategory themeCat, double viewScale, string labelText, int geomType, int categoryIndex)
        {
            var lyr = layer.Layer;
            TreeNode node = new TreeNode();
            node.Text = labelText;

            Image icon = _map.GetLegendImage(lyr.LayerDefinitionID,
                                             viewScale,
                                             16,
                                             16,
                                             "PNG",
                                             geomType,
                                             categoryIndex);
            legendCallCount++;

            var tag = new LayerThemeNodeMetadata(false, icon, labelText);
            layer.AddThemeNode(themeCat, tag);
            node.Tag = tag;

            return node;
        }
Example #20
0
        private void AddThemeRuleNode(LayerNodeMetadata layerMeta, ThemeCategory themeCat, TreeNode node, int geomType, int catIndex, XmlNodeList rules, int ruleOffset)
        {
            XmlElement rule = (XmlElement)rules[ruleOffset];
            XmlNodeList label = rule.GetElementsByTagName("LegendLabel");
            XmlNodeList filter = rule.GetElementsByTagName("Filter");

            String labelText = "";
            if (label != null && label.Count > 0 && label[0].ChildNodes.Count > 0)
                labelText = label[0].ChildNodes[0].Value;
            //String filterText = "";
            //if (filter != null && filter.Count > 0 && filter[0].ChildNodes.Count > 0)
            //    filterText = filter[0].ChildNodes[0].Value;

            if (LayerNodeMetadata.ScaleIsApplicable(_map.ViewScale, themeCat))
            {
                var child = CreateThemeRuleNode(layerMeta, themeCat, _map.ViewScale, labelText, (geomType + 1), catIndex);
                node.Nodes.Add(child);
            }
            else
            {

            }
        }
Example #21
0
 public void SetDefaultIcon(ThemeCategory cat, Image image)
 {
     _defaultIcons[cat] = image;
 }
Example #22
0
 public List<LayerThemeNodeMetadata> GetThemeNodes(ThemeCategory category)
 {
     if (_themeNodes.ContainsKey(category))
         return _themeNodes[category];
     return null;
 }
Example #23
0
            public void AddThemeNode(ThemeCategory category, LayerThemeNodeMetadata themeMeta)
            {
                if (!_themeNodes.ContainsKey(category))
                    _themeNodes[category] = new List<LayerThemeNodeMetadata>();

                _themeNodes[category].Add(themeMeta);
            }
Example #24
0
 internal bool CategoryExists(ThemeCategory themeCat)
 {
     return _themeNodes.ContainsKey(themeCat);
 }