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); } }
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); } } } } }
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); }
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)); } }
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); }
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); //} }