/// <summary> /// Удалить имя файла библиотеки плагина из списка /// </summary> public void RemovePluginFileName(string fileName) { if (!string.IsNullOrEmpty(fileName)) { int ind = PluginFileNames.BinarySearch(fileName); if (ind >= 0) { PluginFileNames.RemoveAt(ind); } } }
/// <summary> /// Добавить имя файла библиотеки плагина в список /// </summary> public void AddPluginFileName(string fileName) { if (!string.IsNullOrEmpty(fileName)) { int ind = PluginFileNames.BinarySearch(fileName); if (ind < 0) { PluginFileNames.Insert(~ind, fileName); } } }
/// <summary> /// Установить значения настроек по умолчанию /// </summary> protected void SetToDefault() { Culture = ""; DataRefrRate = 1000; ArcRefrRate = 10000; DispEventCnt = 100; ChartGap = 90; StartPage = ""; CmdEnabled = true; CmdPassword = true; RemEnabled = false; ViewsFromBase = true; ShareStats = true; CommSettings.SetToDefault(); ScriptPaths.SetToDefault(); PluginFileNames.Clear(); CustomOptions.Clear(); }
/// <summary> /// Загрузить настройки из файла /// </summary> public bool LoadFromFile(string fileName, out string errMsg) { // установка значений по умолчанию SetToDefault(); // загрузка настроек try { if (!File.Exists(fileName)) { throw new FileNotFoundException(string.Format(CommonPhrases.NamedFileNotFound, fileName)); } XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(fileName); XmlElement rootElem = xmlDoc.DocumentElement; // загрузка настроек соединения с сервером if (rootElem.SelectSingleNode("CommSettings") is XmlNode commSettingsNode) { CommSettings.LoadFromXml(commSettingsNode); } // загрузка общих параметров if (rootElem.SelectSingleNode("CommonParams") is XmlNode commonParamsNode) { foreach (XmlElement paramElem in commonParamsNode.SelectNodes("Param")) { string name = paramElem.GetAttribute("name").Trim(); string nameL = name.ToLowerInvariant(); string val = paramElem.GetAttribute("value"); try { if (nameL == "culture") { Culture = val; } else if (nameL == "datarefrrate") { DataRefrRate = Math.Max(MinDataRefrRate, int.Parse(val)); } else if (nameL == "arcrefrrate") { ArcRefrRate = Math.Max(MinDataRefrRate, int.Parse(val)); } else if (nameL == "dispeventcnt") { DispEventCnt = int.Parse(val); } else if (nameL == "chartgap") { ChartGap = int.Parse(val); } else if (nameL == "cmdenabled") { CmdEnabled = bool.Parse(val); } else if (nameL == "cmdpassword") { CmdPassword = bool.Parse(val); } else if (nameL == "remenabled") { RemEnabled = bool.Parse(val); } else if (nameL == "startpage") { StartPage = val; } else if (nameL == "viewsfrombase") { ViewsFromBase = bool.Parse(val); } else if (nameL == "sharestats") { ShareStats = bool.Parse(val); } } catch { throw new ScadaException(string.Format(CommonPhrases.IncorrectXmlParamVal, name)); } } } // загрузка путей к скриптам if (rootElem.SelectSingleNode("ScriptPaths") is XmlNode scriptPathsNode) { foreach (XmlElement scriptElem in scriptPathsNode.SelectNodes("Script")) { string name = scriptElem.GetAttribute("name").Trim(); string nameL = name.ToLowerInvariant(); string path = scriptElem.GetAttribute("path"); if (nameL == "chartscript") { ScriptPaths.ChartScriptPath = path; } else if (nameL == "cmdscript") { ScriptPaths.CmdScriptPath = path; } else if (nameL == "eventackscript") { ScriptPaths.EventAckScriptPath = path; } } } // загрузка имён файлов модулей if (rootElem.SelectSingleNode("Plugins") is XmlNode pluginsNode) { foreach (XmlElement moduleElem in pluginsNode.SelectNodes("Plugin")) { PluginFileNames.Add(moduleElem.GetAttribute("fileName")); } } PluginFileNames.Sort(); // custom options if (rootElem.SelectSingleNode("CustomOptions") is XmlNode customOptionsNode) { foreach (XmlElement optionGroupElem in customOptionsNode.SelectNodes("OptionGroup")) { OptionList optionList = new OptionList(); optionList.LoadFromXml(optionGroupElem); CustomOptions[optionGroupElem.GetAttrAsString("name")] = optionList; } } errMsg = ""; return(true); } catch (Exception ex) { errMsg = WebPhrases.LoadWebSettingsError + ": " + ex.Message; return(false); } }