private Profile CreateIntroProfile() { try { // Load the intro profile from JSON into a ProfileEntity string json = File.ReadAllText(Path.Combine(Constants.ApplicationFolder, "Resources", "intro-profile.json")); ProfileEntity profileEntity = CoreJson.DeserializeObject <ProfileEntity>(json) !; // Inject every LED on the surface into each layer foreach (LayerEntity profileEntityLayer in profileEntity.Layers) { profileEntityLayer.Leds.AddRange(_devices.SelectMany(d => d.Leds).Select(l => new LedEntity { DeviceIdentifier = l.Device.Identifier, LedName = l.RgbLed.Id.ToString() })); } Profile profile = new(new DummyModule(), profileEntity); profile.Activate(_devices); _profileService.InstantiateProfile(profile); return(profile); } catch (Exception e) { _logger.Warning(e, "Failed to load intro profile"); } return(new Profile(new DummyModule(), "Intro")); }
internal void Initialize() { ConditionOperatorStore.ConditionOperatorAdded += ConditionOperatorStoreOnConditionOperatorAdded; ConditionOperatorStore.ConditionOperatorRemoved += ConditionOperatorStoreOnConditionOperatorRemoved; InitializeLeftPath(); // Operator if (Entity.OperatorPluginGuid != null) { BaseConditionOperator?conditionOperator = ConditionOperatorStore.Get(Entity.OperatorPluginGuid.Value, Entity.OperatorType)?.ConditionOperator; if (conditionOperator != null) { UpdateOperator(conditionOperator); } } // Right side dynamic if (PredicateType == ProfileRightSideType.Dynamic) { InitializeRightPath(); } // Right side static else if (PredicateType == ProfileRightSideType.Static && Entity.RightStaticValue != null) { try { if (LeftPath != null && LeftPath.IsValid) { // Use the left side type so JSON.NET has a better idea what to do Type leftSideType = LeftPath.GetPropertyType() !; object?rightSideValue; try { rightSideValue = CoreJson.DeserializeObject(Entity.RightStaticValue, leftSideType); } // If deserialization fails, use the type's default catch (JsonSerializationException e) { DeserializationLogger.LogPredicateDeserializationFailure(this, e); rightSideValue = Activator.CreateInstance(leftSideType); } UpdateRightSideStatic(rightSideValue); } else { // Hope for the best... UpdateRightSideStatic(CoreJson.DeserializeObject(Entity.RightStaticValue)); } } catch (JsonReaderException e) { DeserializationLogger.LogPredicateDeserializationFailure(this, e); } } }
internal PluginSetting(Plugin plugin, IPluginRepository pluginRepository, PluginSettingEntity pluginSettingEntity) { _plugin = plugin; _pluginRepository = pluginRepository; _pluginSettingEntity = pluginSettingEntity; Name = pluginSettingEntity.Name; try { _value = CoreJson.DeserializeObject <T>(pluginSettingEntity.Value) !; } catch (JsonReaderException) { _value = default !;
/// <summary> /// Creates a deep copy of the folder /// </summary> /// <returns>The newly created copy</returns> public Folder CreateCopy() { if (Parent == null) { throw new ArtemisCoreException("Cannot create a copy of a folder without a parent"); } FolderEntity entityCopy = CoreJson.DeserializeObject <FolderEntity>(CoreJson.SerializeObject(FolderEntity, true), true) !; entityCopy.Id = Guid.NewGuid(); entityCopy.Name += " - Copy"; // TODO Children return(new Folder(Profile, Parent, entityCopy)); }
private void Initialize() { DataBindingModifierTypeStore.DataBindingModifierAdded += DataBindingModifierTypeStoreOnDataBindingModifierAdded; DataBindingModifierTypeStore.DataBindingModifierRemoved += DataBindingModifierTypeStoreOnDataBindingModifierRemoved; // Modifier type if (Entity.ModifierTypePluginGuid != null && ModifierType == null) { BaseDataBindingModifierType?modifierType = DataBindingModifierTypeStore.Get(Entity.ModifierTypePluginGuid.Value, Entity.ModifierType)?.DataBindingModifierType; if (modifierType != null) { UpdateModifierType(modifierType); } } // Dynamic parameter if (ParameterType == ProfileRightSideType.Dynamic && Entity.ParameterPath != null) { ParameterPath = new DataModelPath(null, Entity.ParameterPath); } // Static parameter else if (ParameterType == ProfileRightSideType.Static && Entity.ParameterStaticValue != null) { // Use the target type so JSON.NET has a better idea what to do Type? parameterType = ModifierType?.ParameterType ?? DirectDataBinding.DataBinding.GetTargetType(); object?staticValue = null; try { staticValue = parameterType != null ? CoreJson.DeserializeObject(Entity.ParameterStaticValue, parameterType) : CoreJson.DeserializeObject(Entity.ParameterStaticValue); } // If deserialization fails, use the type's default catch (JsonSerializationException e) { DeserializationLogger.LogModifierDeserializationFailure(GetType().Name, e); if (parameterType != null) { staticValue = Activator.CreateInstance(parameterType); } } UpdateParameterStatic(staticValue); } }