Example #1
0
        public void Save(ChartThemeFolder folder, string directory)
        {
            foreach (ChartThemeFolder subFolder in folder.Folders)
            {
                Save(subFolder, Path.Combine(directory, ST.EscapeFileName(subFolder.Name)));
            }

            foreach (ChartTheme theme in folder.Themes)
            {
                string filename = Path.Combine(directory, GetThemeFilename(theme.Name));

                if (!string.IsNullOrEmpty(theme.Filename) && !StringComparer.OrdinalIgnoreCase.Equals(filename, theme.Filename))
                {
                    try
                    {
                        File.Delete(theme.Filename);
                    }
                    catch (System.Exception ex)
                    {
                        Helper.WriteLog(ex);
                    }
                }

                SaveTheme(theme, filename);
            }
        }
Example #2
0
        static void LoadFromXml(XmlElement xmlElement, ChartThemeFolder folder)
        {
            // folder
            XmlNodeList foldNodes = xmlElement.SelectNodes("folder");

            foreach (XmlElement foldNode in foldNodes)
            {
                ChartThemeFolder subFolder = new ChartThemeFolder();
                subFolder.Name = foldNode.GetAttribute("name");
                LoadFromXml(foldNode, subFolder);
                if (subFolder.Themes.Count > 0 || subFolder.Folders.Count > 0)
                {
                    folder.Folders.Add(subFolder);
                }
            }

            // theme
            XmlNodeList nodes = xmlElement.SelectNodes("theme");

            if (nodes.Count > 0)
            {
                foreach (XmlNode node in nodes)
                {
                    if (node is XmlElement)
                    {
                        ChartTheme theme = DeserializeTheme(node as XmlElement);
                        if (theme != null)
                        {
                            theme.SetIsInternal(true);
                            folder.Themes.Add(theme);
                        }
                    }
                }
            }
        }
Example #3
0
        private static ChartThemeFolder LoadThemesFromReg()
        {
            RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Appearance\Schemes", false);

            if (key == null)
            {
                return(null);
            }

            ChartThemeFolder folder = new ChartThemeFolder("Windows Color Schemes");

            string[] schemes = key.GetValueNames();
            foreach (string scheme in schemes)
            {
                int si = scheme.IndexOf('(');
                if (si > -1 && folder.HasTheme(scheme.Substring(0, si).Trim()))
                {
                    continue;
                }

                ChartTheme theme = new ChartTheme(scheme);
                LoadWindowScheme(theme, (byte[])key.GetValue(scheme));
                folder.Themes.Add(theme);
            }

            return(folder);
        }
Example #4
0
        public void Refresh()
        {
            // Load Internal Themes
            Internals = LoadInternal();

            // Load Extersion Themes
            Extensions = new ChartThemeFolder("Extension");
            LoadExtersionThemes(ThemesDirectory, Extensions);

            //
            if (Options.Current.Contains(OptionNames.Charts.DefaultChartTheme))
            {
                var dct = Options.Current.GetString(OptionNames.Charts.DefaultChartTheme);
                DefaultTheme = AllThemes.Find(t => StringComparer.OrdinalIgnoreCase.Equals(t.Name, dct));
            }
        }
Example #5
0
        internal static ChartThemeFolder LoadFromXml(string text)
        {
            XmlDocument dom = new XmlDocument();

            dom.LoadXml(text);

            if (dom.DocumentElement.Name != "themes")
            {
                return(null);
            }

            ChartThemeFolder folder = new ChartThemeFolder();

            folder.Name = dom.DocumentElement.GetAttribute("name");

            LoadFromXml(dom.DocumentElement, folder);

            return(folder);
        }
Example #6
0
        private void LoadExtersionThemes(string direcotry, ChartThemeFolder parentFolder)
        {
            if (!Directory.Exists(direcotry))
            {
                return;
            }

            string[] dirs = Directory.GetDirectories(direcotry);
            foreach (string dir in dirs)
            {
                ChartThemeFolder folder = new ChartThemeFolder(Path.GetFileName(dir));
                LoadExtersionThemes(dir, folder);
                if (folder.Folders.Count > 0 || folder.Themes.Count > 0)
                {
                    parentFolder.Folders.Add(folder);
                }
            }

            string[] files = Directory.GetFiles(direcotry, "*.xml");
            foreach (string filename in files)
            {
                try
                {
                    ChartTheme theme = LoadTheme(filename);
                    if (theme != null)
                    {
                        parentFolder.Themes.Add(theme);
                    }
                }
                catch (System.Exception ex)
                {
                    Helper.WriteLog(ex);
                }
            }

            //if (folder.Themes.Count > 0 || folder.Folders.Count > 0)
            //{
            //    parentFolder.Folders.Add(folder);
            //}
        }