예제 #1
0
        public void SaveSettings()
        {
            var doc = new XmlDocument();

            doc.AppendChild(doc.CreateElement("settings"));
            PropertyXMLTagAttribute.SaveObjectProperties(this, doc.DocumentElement);
            var fileName = ExecutablePath.ExecPath + "\\ChatSettings.xml";

            try
            {
                using (var sw = new StreamWriter(fileName, false, Encoding.Unicode))
                {
                    using (var xw = new XmlTextWriter(sw)
                    {
                        Formatting = Formatting.Indented
                    })
                    {
                        doc.Save(xw);
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.ErrorFormat("Ошибка сохранения документа настроек \"{0}\": {1}", fileName, ex);
            }
        }
        public void ReadRobotsSettings(string xmlPath)
        {
            if (!File.Exists(xmlPath))
            {
                return;
            }

            gridRobot.rows.Clear();
            try
            {
                var doc = new XmlDocument();
                doc.Load(xmlPath);
                var node  = doc.SelectSingleNode("RobotsPortfolio");
                var nodes = node.SelectNodes("robot");

                var robots = new List <RobotGridItem>();
                foreach (XmlElement item in nodes)
                {
                    var inodes = item.SelectNodes("Robot.TypeName");
                    var inode  = (XmlElement)inodes[0];
                    var title  = inode.Attributes["value"].Value;
                    var robot  = RobotCollection.MakeRobot(title);
                    PropertyXMLTagAttribute.InitObjectProperties(robot, item, false);
                    robots.Add(new RobotGridItem(robot, true));
                }
                gridRobot.DataBind(robots);
            }
            catch (Exception ex)
            {
                Logger.Error("Ошибка чтения файла настроек портфеля роботов: ", ex);
            }
        }
예제 #3
0
        public static List <BaseRobot> LoadRobots()
        {
            var listRobots = new List <BaseRobot>();
            var fileName   = string.Format("{0}\\{1}", ExecutablePath.ExecPath, RobotFileName);

            if (!File.Exists(fileName))
            {
                return(listRobots);
            }

            try
            {
                var doc = new XmlDocument();
                doc.Load(fileName);
                var node  = doc.SelectSingleNode("RobotsPortfolio");
                var nodes = node.SelectNodes("robot");

                foreach (XmlElement item in nodes)
                {
                    var inodes = item.SelectNodes("Robot.TypeName");
                    var inode  = (XmlElement)inodes[0];
                    var title  = inode.Attributes["value"].Value;
                    var robot  = RobotCollection.MakeRobot(title);
                    PropertyXMLTagAttribute.InitObjectProperties(robot, item);
                    listRobots.Add(robot);
                }
            }
            catch (Exception ex)
            {
                Logger.ErrorFormat("Ошибка чтения файла \"{0}\": {1}", fileName, ex);
            }
            return(listRobots);
        }
예제 #4
0
        public void LoadSettings()
        {
            var doc = new XmlDocument();

            doc.Load(string.Format("{0}\\settings.xml", ExecutablePath.ExecPath));
            PropertyXMLTagAttribute.InitObjectProperties(this, doc.DocumentElement);
        }
예제 #5
0
        private void LoadSettings()
        {
            var fileName = ExecutablePath.ExecPath + "\\ChatSettings.xml";

            if (!File.Exists(fileName))
            {
                return;
            }
            var doc = new XmlDocument();

            try
            {
                doc.Load(fileName);
                if (doc.DocumentElement == null)
                {
                    return;
                }
            }
            catch (Exception ex)
            {
                Logger.ErrorFormat("Ошибка загрузки документа настроек \"{0}\": {1}", fileName, ex);
                return;
            }
            try
            {
                PropertyXMLTagAttribute.InitObjectProperties(this, doc.DocumentElement);
            }
            catch (Exception ex)
            {
                Logger.ErrorFormat("Ошибка применения документа настроек \"{0}\": {1}", fileName, ex);
            }
        }
예제 #6
0
        public void SaveSettings()
        {
            var doc = new XmlDocument();

            doc.AppendChild(doc.CreateElement("settings"));
            PropertyXMLTagAttribute.SaveObjectProperties(this, doc.DocumentElement);
            doc.Save(string.Format("{0}\\settings.xml", ExecutablePath.ExecPath));
        }
예제 #7
0
        public void SaveSettings()
        {
            var doc = new XmlDocument();

            doc.AppendChild(doc.CreateElement("settings"));
            PropertyXMLTagAttribute.SaveObjectProperties(this, doc.DocumentElement);
            doc.Save(fileName);
        }
예제 #8
0
 public void GetTabSettings(XmlElement tabNode)
 {
     try
     {
         PropertyXMLTagAttribute.SaveObjectProperties(this, tabNode);
     }
     catch (Exception ex)
     {
         Logger.ErrorFormat("Ошибка сохранения конфигурации вкладки", ex);
     }
 }
예제 #9
0
        public virtual XmlElement SaveInXml(XmlElement parent)
        {
            var node = (XmlElement)parent.AppendChild(parent.OwnerDocument.CreateElement("script"));

            node.Attributes.Append(parent.OwnerDocument.CreateAttribute("name")).Value  = ScriptName;
            node.Attributes.Append(parent.OwnerDocument.CreateAttribute("title")).Value = Title;
            if (Trigger != null)
            {
                Trigger.SaveInXml(node);
            }

            PropertyXMLTagAttribute.SaveObjectProperties(this, node);
            return(node);
        }
예제 #10
0
        public void SaveSettings()
        {
            var doc = new XmlDocument();

            doc.AppendChild(doc.CreateElement("settings"));
            PropertyXMLTagAttribute.SaveObjectProperties(this, doc.DocumentElement);
            using (var sw = new StreamWriterLog(fileName, false, Encoding.Unicode))
            {
                using (var xw = new XmlTextWriter(sw)
                {
                    Formatting = Formatting.Indented
                })
                {
                    doc.Save(xw);
                }
            }
        }
예제 #11
0
 public void SaveRobots(XmlElement rootNode)
 {
     foreach (var robot in Robots)
     {
         // ReSharper disable PossibleNullReferenceException
         var robotNode = (XmlElement)rootNode.AppendChild(rootNode.OwnerDocument.CreateElement("robot"));
         // ReSharper restore PossibleNullReferenceException
         try
         {
             PropertyXMLTagAttribute.SaveObjectProperties(robot, robotNode);
         }
         catch (Exception ex)
         {
             Logger.Error("Ошибка сохранения робота " + robot.GetUniqueName() + ": " + ex);
         }
     }
 }
        /// <summary>
        /// сохранить настройки серий (см LoadSeriesSettingsFromXml)
        /// </summary>
        public static void SaveSeriesSettingsInXml(XmlElement nodeRoot)
        {
            var seriesTypes = InteractiveObjectSeries.GetObjectSeriesTypes();

            foreach (var series in seriesTypes)
            {
                var nodeSeries = nodeRoot.OwnerDocument.CreateElement(series.Name);
                if (!PropertyXMLTagAttribute.SaveStaticProperties(series, nodeSeries, false))
                {
                    continue;
                }
                if (nodeSeries.ChildNodes.Count == 0)
                {
                    continue;
                }
                nodeRoot.AppendChild(nodeSeries);
            }
        }
예제 #13
0
 protected virtual TerminalScript LoadScriptFromXml(XmlElement node)
 {
     try
     {
         PropertyXMLTagAttribute.InitObjectProperties(this, node);
         var triggers = node.GetElementsByTagName("trigger");
         if (triggers.Count > 0)
         {
             Trigger = TerminalScriptTrigger.LoadFromXml((XmlElement)triggers[0]);
         }
     }
     catch (Exception ex)
     {
         Logger.ErrorFormat("Error while LoadScriptFromXml() for \"{0}\": {1}",
                            ScriptName, ex);
         return(null);
     }
     return(this);
 }
예제 #14
0
        public void LoadSettings()
        {
            var doc = new XmlDocument();

            if (!File.Exists(fileName))
            {
                SaveSettings();
                return;
            }

            try
            {
                doc.Load(fileName);
                PropertyXMLTagAttribute.InitObjectProperties(this, doc.DocumentElement);
            }
            catch (Exception ex)
            {
                Logger.Error("LoadSettings()", ex);
            }
        }
예제 #15
0
        public bool SaveSettings(XmlDocument doc)
        {
            var docNode = (XmlElement)doc.AppendChild(doc.CreateElement("farm"));

            try
            {
                PropertyXMLTagAttribute.SaveObjectProperties(this, docNode);
            }
            catch (Exception ex)
            {
                Logger.Error("RobotFarm.SaveSettings() - ошибка применения настроек к документу " + ex);
                return(false);
            }

            try
            {
                foreach (var acc in Accounts)
                {
                    // сохранить роботов
                    var accItem = (XmlElement)doc.SelectSingleNode("farm/Account/AccountId[@value='" + acc.AccountId + "']");
                    if (accItem == null)
                    {
                        continue;
                    }
                    acc.SaveRobots((XmlElement)accItem.ParentNode);
                }
            }
            catch (Exception ex)
            {
                Logger.Error("RobotFarm.SaveSettings() - ошибка сохранения роботов " + ex);
                return(false);
            }

            // настройки авто-торговли
            if (portfolioTradeSettings != null)
            {
                portfolioTradeSettings.SaveTradeSettings(docNode, TradeSettingsNodeName);
            }

            return(true);
        }
예제 #16
0
        public void SaveSettings()
        {
            var doc     = new XmlDocument();
            var docNode = (XmlElement)doc.AppendChild(doc.CreateElement("settings"));

            try
            {
                lock (this)
                {
                    PropertyXMLTagAttribute.SaveObjectProperties(this, docNode);
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Ошибка преобразования настроек в формат XML", ex);
                return;
            }

            try
            {
                using (var sw = new StreamWriterLog(filePath, false, Encoding.Unicode))
                {
                    using (var xw = new XmlTextWriter(sw)
                    {
                        Formatting = Formatting.Indented
                    })
                    {
                        lock (this)
                        {
                            doc.Save(xw);
                            Logger.Info("Файл настроек сохранен (" + filePath + ")");
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.ErrorFormat("Ошибка сохранения файла настроек {0}: {1}",
                                   filePath, ex);
            }
        }
예제 #17
0
        public static void SaveRobots(List <BaseRobot> robots, string path)
        {
            var doc     = new XmlDocument();
            var xmlNode = (XmlElement)doc.AppendChild(doc.CreateElement("RobotsPortfolio"));

            foreach (var robot in robots)
            {
                var xmlChild = (XmlElement)xmlNode.AppendChild(doc.CreateElement("robot"));
                PropertyXMLTagAttribute.SaveObjectProperties(robot, xmlChild);
            }
            using (var sw = new StreamWriterLog(path, false))
            {
                using (var xw = new XmlTextWriter(sw)
                {
                    Formatting = Formatting.Indented
                })
                {
                    doc.Save(xw);
                }
            }
        }
        /// <summary>
        /// загрузить настройки серий
        /// (размер шрифта, цветовая схема по-умолчанию и т.п.)
        /// </summary>
        public static void LoadSeriesSettingsFromXml(XmlElement nodeRoot)
        {
            if (nodeRoot == null)
            {
                return;
            }
            var seriesTypes = InteractiveObjectSeries.GetObjectSeriesTypes();

            foreach (XmlElement node in nodeRoot)
            {
                var seriesName = node.Name;
                // найти серию
                var series = seriesTypes.FirstOrDefault(s => s.Name == seriesName);
                if (series == null)
                {
                    continue;
                }
                // инициализировать статические параметры серии
                PropertyXMLTagAttribute.InitStaticProperties(series, node, false);
            }
        }
예제 #19
0
        /// <summary>
        /// закрытый конструктор - читает настройки из файла
        /// </summary>
        private SiteSettings()
        {
            // прочитать файл настроек
            if (!File.Exists(filePath))
            {
                return;
            }

            var doc = new XmlDocument();

            try
            {
                lock (this)
                {
                    doc.Load(filePath);
                }
            }
            catch (Exception ex)
            {
                Logger.ErrorFormat("Ошибка чтения файла настроек {0} - невозможно загрузить документ: {1}",
                                   filePath, ex);
                return;
            }

            if (doc.DocumentElement == null)
            {
                return;
            }
            try
            {
                lock (this)
                {
                    PropertyXMLTagAttribute.InitObjectProperties(this, doc.DocumentElement);
                }
            }
            catch (Exception ex)
            {
                Logger.Error("Ошибка применения настроек из файла", ex);
            }
        }
예제 #20
0
        public void LoadProperties()
        {
            // прочитать файл
            var fileName = ExecutablePath.ExecPath + TerminalEnvironment.UserSettingsFileName;

            if (!File.Exists(fileName))
            {
                return;
            }
            var doc = new XmlDocument();

            try
            {
                doc.Load(fileName);
            }
            catch
            {
                return;
            }
            // загрузить из документа
            PropertyXMLTagAttribute.InitObjectProperties(this, doc.DocumentElement);
            LoadLoginPassword(doc);
        }
예제 #21
0
        public static ServiceMap LoadSettings()
        {
            var sets = new ServiceMap();

            // прочитать файл
            if (!File.Exists(fileName))
            {
                return(sets);
            }
            var doc = new XmlDocument();

            try
            {
                doc.Load(fileName);
            }
            catch
            {
                return(sets);
            }

            PropertyXMLTagAttribute.InitObjectProperties(sets, doc.DocumentElement);
            return(sets);
        }
예제 #22
0
        private static List <BaseRobot> MakeRobots(XmlElement accountNode)
        {
            var robots = new List <BaseRobot>();

            try
            {
                foreach (XmlElement robotNode in accountNode.GetElementsByTagName("robot"))
                {
                    var inodes = robotNode.SelectNodes("Robot.TypeName");
                    var inode  = (XmlElement)inodes[0];
                    var title  = inode.Attributes["value"].Value;
                    var robot  = RobotCollection.MakeRobot(title);
                    PropertyXMLTagAttribute.InitObjectProperties(robot, robotNode, false);
                    robots.Add(robot);
                }
                return(robots);
            }
            catch (Exception ex)
            {
                Logger.Error("Error in MakeRobots()", ex);
                throw;
            }
        }
예제 #23
0
 public int LoadRobots(XmlElement node)
 {
     robots.Clear();
     try
     {
         var nodes = node.SelectNodes("robot");
         // ReSharper disable PossibleNullReferenceException
         foreach (XmlElement item in nodes)
         {
             var inodes = item.SelectNodes("Robot.TypeName");
             var inode  = (XmlElement)inodes[0];
             // ReSharper restore PossibleNullReferenceException
             var title = inode.Attributes["value"].Value;
             var robot = RobotCollection.MakeRobot(title);
             PropertyXMLTagAttribute.InitObjectProperties(robot, item, false);
             robots.Add(robot);
         }
     }
     catch (Exception ex)
     {
         Logger.Error("Ошибка чтения файла настроек портфеля роботов: ", ex);
     }
     return(robots.Count);
 }
예제 #24
0
        /// <summary>
        /// загрузить из XML-файла конфигурации настройки "фермы" -
        /// счета
        /// </summary>
        public void LoadSettings()
        {
            if (!File.Exists(configFilePath))
            {
                return;
            }
            var doc = new XmlDocument();

            try
            {
                using (var sr = new StreamReader(configFilePath, Encoding.UTF8))
                    doc.Load(sr);
            }
            catch (Exception ex)
            {
                var msgError = "RobotFarm.LoadSettings() - ошибка чтения файла настроек " + configFilePath +
                               ", " + ex;
                Logger.Error(msgError);
                AppendLogMessage(msgError);
                return;
            }
            if (doc.DocumentElement == null)
            {
                return;
            }

            // настройки авто-торговли
            var nodeTradeSets =
                doc.DocumentElement.ChildNodes.Cast <XmlNode>().FirstOrDefault(n => n.Name == TradeSettingsNodeName);

            if (nodeTradeSets != null)
            {
                portfolioTradeSettings.LoadTradeSettings((XmlElement)nodeTradeSets);
                Logger.InfoFormat("Настройки портфеля: торговать={0}, %плеча={1:f0}, макс. плечо={2:f1}",
                                  portfolioTradeSettings.TradeAuto, portfolioTradeSettings.PercentLeverage,
                                  portfolioTradeSettings.MaxLeverage ?? 0);
            }

            try
            {
                PropertyXMLTagAttribute.InitObjectProperties(this, doc.DocumentElement);
                // подгрузить роботов
                foreach (XmlElement nodeAcc in doc.DocumentElement.ChildNodes)
                {
                    var acIdNode = (XmlElement)nodeAcc.SelectSingleNode("AccountId");
                    if (acIdNode == null)
                    {
                        continue;
                    }
                    var acId = acIdNode.Attributes["value"] == null
                                   ? -1
                                   : (acIdNode.Attributes["value"].Value.ToIntSafe() ?? -1);
                    var account = Accounts.FirstOrDefault(a => a.AccountId == acId);
                    if (account != null)
                    {
                        account.LoadRobots(nodeAcc);
                    }
                }
            }
            catch (Exception ex)
            {
                var msgError = "RobotFarm.LoadSettings() - ошибка применения настроек " + ex;
                Logger.Error(msgError);
                AppendLogMessage(msgError);
            }
            var accsLoaded = Accounts;
            var msg        = string.Format("Настройки успешно применены, загружено {0} счетов, {1} роботов",
                                           accsLoaded.Count, accsLoaded.Sum(a => a.Robots.Count));

            Logger.InfoFormat(msg);
            AppendLogMessage(msg);
        }
예제 #25
0
 public void LoadProperties(XmlElement tabNode)
 {
     PropertyXMLTagAttribute.InitObjectProperties(this, tabNode);
 }