public ParameterTemplateViewModel(GKParameterTemplate parameterTemplate) { ParameterTemplate = parameterTemplate; DeviceParameterTemplates = new List<DeviceParameterTemplateViewModel>(); foreach (var deviceParameterTemplate in parameterTemplate.DeviceParameterTemplates) { var deviceParameterTemplateViewModel = new DeviceParameterTemplateViewModel(deviceParameterTemplate); DeviceParameterTemplates.Add(deviceParameterTemplateViewModel); } SelectedDeviceParameterTemplate = DeviceParameterTemplates.FirstOrDefault(); }
void OnAdd() { var maxNo = GKManager.ParameterTemplates.Max(x => x.No); var parameterTemplate = new GKParameterTemplate() { Name = "Шаблон " + (maxNo + 1).ToString(), No = maxNo + 1 }; GKManager.ParameterTemplates.Add(parameterTemplate); Invalidate(); var parameterTemplateViewModel = new ParameterTemplateViewModel(parameterTemplate); ParameterTemplates.Add(parameterTemplateViewModel); SelectedParameterTemplate = parameterTemplateViewModel; ServiceFactory.SaveService.GKChanged = true; }
static void CopyParametersFromTemplate(GKParameterTemplate parameterTemplate, GKDevice device) { var deviceParameterTemplate = parameterTemplate.DeviceParameterTemplates.FirstOrDefault(x => x.GKDevice.DriverUID == device.Driver.UID); if (deviceParameterTemplate != null) { foreach (var property in deviceParameterTemplate.GKDevice.Properties) { var deviceProperty = device.Properties.FirstOrDefault(x => x.Name == property.Name); if (deviceProperty != null) { deviceProperty.Value = property.Value; } } } }
void Invalidate() { if (GKManager.ParameterTemplates.Count == 0) { var parameterTemplate = new GKParameterTemplate() { Name = "По умолчанию" }; GKManager.ParameterTemplates.Add(parameterTemplate); } foreach (var parameterTemplate in GKManager.ParameterTemplates) { foreach (var deviceParameterTemplate in parameterTemplate.DeviceParameterTemplates) { deviceParameterTemplate.GKDevice.Driver = GKManager.Drivers.FirstOrDefault(x => x.UID == deviceParameterTemplate.GKDevice.DriverUID); } parameterTemplate.DeviceParameterTemplates.RemoveAll(x => x.GKDevice.Driver == null); foreach (var driver in GKManager.Drivers) { if (driver.IsReal && driver.Properties.Any(x => x.IsAUParameter)) { var deviceParameterTemplate = parameterTemplate.DeviceParameterTemplates.FirstOrDefault(x => x.GKDevice.DriverUID == driver.UID); if (deviceParameterTemplate == null) { deviceParameterTemplate = new GKDeviceParameterTemplate() { GKDevice = new GKDevice() { DriverUID = driver.UID, Driver = driver } }; parameterTemplate.DeviceParameterTemplates.Add(deviceParameterTemplate); } var properties = new List<GKProperty>(); foreach (var driverProperty in driver.Properties) { if (driverProperty.IsAUParameter) { var property = deviceParameterTemplate.GKDevice.Properties.FirstOrDefault(x => x.Name == driverProperty.Name); if (property == null || parameterTemplate.Name == "По умолчанию") { property = new GKProperty() { Name = driverProperty.Name, Value = driverProperty.Default, DriverProperty = driverProperty }; deviceParameterTemplate.GKDevice.Properties.Add(property); } property.DriverProperty = driverProperty; properties.Add(property); } } deviceParameterTemplate.GKDevice.Properties = properties; } } } }