/// <summary> /// Gets the template dictionary from the common properties or creates it. /// </summary> private Dictionary <string, DeviceTemplate> GetTemplateDictionary() { Dictionary <string, DeviceTemplate> templateDict = CommonProps.ContainsKey(TemplateDictKey) ? CommonProps[TemplateDictKey] as Dictionary <string, DeviceTemplate> : null; if (templateDict == null) { templateDict = new TemplateDict(); CommonProps.Add(TemplateDictKey, templateDict); } return(templateDict); }
/// <summary> /// Gets or creates the template dictionary from the common line properties. /// </summary> private TemplateDict GetTemplateDictionary() { TemplateDict templateDict = CommonProps.ContainsKey(TemplateDictKey) ? CommonProps[TemplateDictKey] as TemplateDict : null; if (templateDict == null) { templateDict = new TemplateDict(); CommonProps.Add(TemplateDictKey, templateDict); } return(templateDict); }
/// <summary> /// Получить из общих свойств линии связи или создать словарь шаблонов устройств /// </summary> private Dictionary <string, DeviceTemplate> GetTemplates() { Dictionary <string, DeviceTemplate> templates = CommonProps.ContainsKey("Templates") ? CommonProps["Templates"] as Dictionary <string, DeviceTemplate> : null; if (templates == null) { templates = new TemplateDict(); CommonProps.Add("Templates", templates); } return(templates); }
/// <summary> /// Gets a template dictionary from the shared data of the communication line, or creates a new one. /// </summary> protected virtual TemplateDict GetTemplateDict() { TemplateDict templateDict = LineContext.SharedData.ContainsKey(TemplateDictKey) ? LineContext.SharedData[TemplateDictKey] as TemplateDict : null; if (templateDict == null) { templateDict = new TemplateDict(); LineContext.SharedData.Add(TemplateDictKey, templateDict); } return(templateDict); }
public DataTemplate SelectTemplate(object item, DependencyObject container) { var key = KeySelector == null ? _defaultKeySelector.Invoke(item) : KeySelector.Invoke(item); if (TemplateDict.ContainsKey(key)) { return(TemplateDict[key]); } return(null); }
/// <summary> /// Gets existing or create a new device template. /// </summary> private void PrepareTemplate(string fileName) { deviceTemplate = null; if (string.IsNullOrEmpty(fileName)) { WriteToLog(string.Format(Localization.UseRussian ? "{0} Ошибка: Не задан шаблон устройства для {1}" : "{0} Error: Template is undefined for the {1}", CommUtils.GetNowDT(), Caption)); } else { TemplateDict templateDict = GetTemplateDictionary(); if (templateDict.TryGetValue(fileName, out DeviceTemplate existingTemplate)) { if (existingTemplate != null) { deviceTemplate = GetTemplateFactory().CreateDeviceTemplate(); deviceTemplate.CopyFrom(existingTemplate); } } else { DeviceTemplate newTemplate = GetTemplateFactory().CreateDeviceTemplate(); WriteToLog(string.Format(Localization.UseRussian ? "{0} Загрузка шаблона устройства из файла {1}" : "{0} Load device template from file {1}", CommUtils.GetNowDT(), fileName)); string filePath = Path.IsPathRooted(fileName) ? fileName : Path.Combine(AppDirs.ConfigDir, fileName); if (newTemplate.Load(filePath, out string errMsg)) { deviceTemplate = newTemplate; } else { WriteToLog(errMsg); } templateDict.Add(fileName, deviceTemplate); } } }
/// <summary> /// Gets the device template from the shared dictionary. /// </summary> protected virtual DeviceTemplate GetDeviceTemplate() { DeviceTemplate deviceTemplate = null; string fileName = PollingOptions.CmdLine.Trim(); if (string.IsNullOrEmpty(fileName)) { Log.WriteLine(string.Format(Locale.IsRussian ? "Ошибка: Не задан шаблон устройства для {0}" : "Error: Device template is undefined for {0}", Title)); } else { TemplateDict templateDict = GetTemplateDict(); if (templateDict.TryGetValue(fileName, out DeviceTemplate existingTemplate)) { deviceTemplate = existingTemplate; } else { Log.WriteLine(string.Format(Locale.IsRussian ? "Загрузка шаблона устройства из файла {0}" : "Load device template from file {0}", fileName)); DeviceTemplate newTemplate = CreateDeviceTemplate(); templateDict.Add(fileName, newTemplate); if (newTemplate.Load(Storage, fileName, out string errMsg)) { deviceTemplate = newTemplate; } else { Log.WriteLine(errMsg); } } } return(deviceTemplate); }