public static ToolButtonGroup LoadFromXml(XmlElement node) { if (node.Attributes["title"] == null || node.Attributes["imageIndex"] == null) { return(null); } var group = new ToolButtonGroup { Title = node.Attributes["title"].Value, ImageIndex = node.Attributes["imageIndex"].Value.ToInt() }; var buttonTypeAttr = node.Attributes["buttonType"]; if (buttonTypeAttr != null) { group.ButtonType = (ChartToolButtonSettings.ToolButtonType) Enum.Parse(typeof(ChartToolButtonSettings.ToolButtonType), buttonTypeAttr.Value); } return(group); }
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); }