예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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);
        }
예제 #4
0
        /// <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();
        }
예제 #5
0
        /// <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);
        }
예제 #6
0
        /// <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);
        }