/// <summary> /// Обновление свойства Name какого либо тега chartTemplate /// </summary> /// <param name="oldName">текущее значение свойства</param> /// <param name="newName">новое значение имени</param> /// <returns>Был ли в списке элемент с именем указаным</returns> public static bool UpdateChartTemplateName(string oldName, string newName) { var rootNodeTemplates = ToolSettingsStorageFile.LoadOrCreateNode(ToolSettingsStorageFile.NodeNameChartTemplates, false); var doc = rootNodeTemplates.OwnerDocument; var exist = false; // Вытаскиваем изменяемый элемент var item = rootNodeTemplates.ChildNodes.Cast <XmlNode>().FirstOrDefault(x => x.Attributes[AttributeName].Value == oldName); if (item != null) { // Вытаскиваем все имена var templateNames = rootNodeTemplates.ChildNodes.Cast <XmlNode>().Where(node => node.Attributes != null && node.Attributes[AttributeName] != null). Select(x => x.Attributes[AttributeName].Value).ToArray(); if (templateNames.Contains(newName)) { var existItem = rootNodeTemplates.ChildNodes.Cast <XmlNode>().FirstOrDefault(x => x.Attributes[AttributeName].Value == newName); if (existItem != null) { rootNodeTemplates.RemoveChild(existItem); } exist = true; } item.Attributes[AttributeName].Value = newName; ToolSettingsStorageFile.SaveXml(doc); } return(exist); }
/// <summary> /// Получить все xml узелы с описаниями шаблонов графиков /// </summary> /// <returns>xml описание шаблонов</returns> internal static IEnumerable <XmlNode> GetChartAllTemplates() { var rootNodeTemplates = ToolSettingsStorageFile.LoadOrCreateNode(ToolSettingsStorageFile.NodeNameChartTemplates, false); var result = rootNodeTemplates.ChildNodes.Cast <XmlNode>(); return(result); }
public void SaveSettings() { var nodeToolBtnSets = ToolSettingsStorageFile.LoadOrCreateNode(ToolSettingsStorageFile.NodeNameToolButtons); var doc = nodeToolBtnSets.OwnerDocument; var groupsNode = (XmlElement)nodeToolBtnSets.AppendChild(doc.CreateElement("groups")); foreach (var group in groups) { group.SaveInXml(groupsNode); } // todo: simplify to one tag-container "buttons" var buttonsNode = (XmlElement)nodeToolBtnSets.AppendChild(doc.CreateElement("buttons")); foreach (var btn in selButtons) { btn.SaveInXml(buttonsNode); } var sysButtonsNode = (XmlElement)nodeToolBtnSets.AppendChild(doc.CreateElement("systembuttons")); foreach (var btn in selSystemButtons) { btn.SaveInXml(sysButtonsNode); } ToolSettingsStorageFile.SaveXml(doc); }
/// <summary> /// Заполнение значениями массива имён доступны шаблонов (из xml). Вытаскиваем только те у которых атрибуты Name и Symbol есть в наличии /// </summary> private static void FillTemplatesNames() { var rootNodeTemplates = ToolSettingsStorageFile.LoadOrCreateNode(ToolSettingsStorageFile.NodeNameChartTemplates, false); templates = rootNodeTemplates.ChildNodes.Cast <XmlNode>().Where(node => node.Attributes != null && node.Attributes[AttributeSymbol] != null && node.Attributes[AttributeName] != null).ToArray(); }
/// <summary> /// Получить xml узел с описанием шаблона графика, имя которого указано в templateName /// </summary> /// <param name="templateName">имя шаблона, xml описание которого нужно получить</param> /// <returns>xml описание шаблона</returns> internal static XmlNode GetChartTemplate(string templateName) { var rootNodeTemplates = ToolSettingsStorageFile.LoadOrCreateNode(ToolSettingsStorageFile.NodeNameChartTemplates, false); var result = rootNodeTemplates.ChildNodes.Cast <XmlNode>().FirstOrDefault(template => template.Attributes != null && template.Attributes[AttributeName] != null && template.Attributes[AttributeName].Value == templateName); return(result); }
/// <summary> /// Удаляет шаблон с указатым имением /// </summary> /// <param name="templateName">имя шаблона, который следует удалить</param> internal static void DellChartTemplate(string templateName) { var rootNodeTemplates = ToolSettingsStorageFile.LoadOrCreateNode(ToolSettingsStorageFile.NodeNameChartTemplates, false); var doc = rootNodeTemplates.OwnerDocument; var item = rootNodeTemplates.ChildNodes.Cast <XmlNode>() .FirstOrDefault(x => x.Attributes[AttributeName].Value == templateName); if (item != null) { rootNodeTemplates.RemoveChild(item); } ToolSettingsStorageFile.SaveXml(doc); }
private bool LoadSettings() { groups.Clear(); selButtons.Clear(); selSystemButtons.Clear(); var nodeToolSets = ToolSettingsStorageFile.LoadNode(ToolSettingsStorageFile.NodeNameToolButtons); if (nodeToolSets == null) { return(false); } var nodeGroups = nodeToolSets.ChildNodes.Cast <XmlNode>().FirstOrDefault(n => n.Name == "groups"); if (nodeGroups != null) { foreach (XmlElement node in nodeGroups.ChildNodes) { var group = ToolButtonGroup.LoadFromXml(node); if (group != null) { groups.Add(group); } } } // todo: simplify to one tag-container "buttons" // кнопки графика var nodeIndex = 0; // 4 log var nodeButtons = nodeToolSets.ChildNodes.Cast <XmlNode>().FirstOrDefault(n => n.Name == "buttons"); if (nodeButtons == null) { return(false); } foreach (XmlElement node in nodeButtons.ChildNodes) { nodeIndex++; try { var btn = ChartToolButtonSettings.LoadFromXml(node, groups, ChartToolButtonSettings.ToolButtonType.Chart); if (btn == null) { continue; } // поддержка старых версий файлов (установка функции кнупки по названию) if (btn.ButtonType == ChartToolButtonSettings.ToolButtonType.Chart && btn.Tool == CandleChartControl.ChartTool.None) { var toolButton = allButtons.FirstOrDefault(b => b.ButtonType == ChartToolButtonSettings.ToolButtonType.Chart && b.Title == btn.Title); if (toolButton != null) { btn.Tool = toolButton.Tool; } } selButtons.Add(btn); } catch (Exception ex) { Logger.ErrorFormat("Ошибка загрузки кнопки графика {0}: {1}", nodeIndex, ex); } } // кнопки терминала nodeIndex = 0; nodeButtons = nodeToolSets.ChildNodes.Cast <XmlNode>().FirstOrDefault(n => n.Name == "systembuttons"); if (nodeButtons == null) { return(false); } foreach (XmlElement node in nodeButtons.ChildNodes) { nodeIndex++; try { var btn = ChartToolButtonSettings.LoadFromXml(node, groups, ChartToolButtonSettings.ToolButtonType.System); if (btn == null) { continue; } // поддержка старых версий файлов (установка функции кнупки по названию) if (btn.ButtonType == ChartToolButtonSettings.ToolButtonType.Chart && btn.Tool == CandleChartControl.ChartTool.None) { var toolButton = allButtons.FirstOrDefault(b => b.ButtonType == ChartToolButtonSettings.ToolButtonType.System && b.Title == btn.Title); if (toolButton != null) { btn.SystemTool = toolButton.SystemTool; } } selSystemButtons.Add(btn); } catch (Exception ex) { Logger.ErrorFormat("Ошибка загрузки терминальной кнопки {0}: {1}", nodeIndex, ex); } } // set localized title var buttons = new List <ChartToolButtonSettings>(); buttons.AddRange(selButtons); buttons.AddRange(selSystemButtons); foreach (var btn in buttons) { var storageButton = allButtons.FirstOrDefault( b => b.ButtonType == btn.ButtonType && b.Tool == btn.Tool && b.SystemTool == btn.SystemTool); if (storageButton != null) { btn.Title = storageButton.Title; } } return(true); }