public PluginResponse Post(UpdatePluginRequest request) { PluginResponse response = new PluginResponse(); Profile profile = (from p in Program.Runtime.Setup.Profiles where p.Id == request.ProfileId select p).FirstOrDefault(); bool newPlugin = request.Id == 0; int newId = 0; IAfterglowPlugin plugin = null; Type type = null; switch (request.PluginType) { case 1: if (newPlugin) { type = Program.Runtime.Setup.AvailableLightSetupPlugins.Where(a => a.Name == request.Type).FirstOrDefault(); newId = Program.Runtime.Setup.GetNewId<ILightSetupPlugin>(); } else { plugin = profile.LightSetupPlugins.Where(l => l.Id == request.Id).FirstOrDefault(); } break; case 2: if (newPlugin) { type = Program.Runtime.Setup.AvailableCapturePlugins.Where(a => a.Name == request.Type).FirstOrDefault(); newId = Program.Runtime.Setup.GetNewId<ICapturePlugin>(); } else { plugin = profile.CapturePlugins.Where(l => l.Id == request.Id).FirstOrDefault(); } break; case 3: if (newPlugin) { type = Program.Runtime.Setup.AvailableColourExtractionPlugins.Where(a => a.Name == request.Type).FirstOrDefault(); newId = Program.Runtime.Setup.GetNewId<IColourExtractionPlugin>(); } else { plugin = profile.ColourExtractionPlugins.Where(l => l.Id == request.Id).FirstOrDefault(); } break; case 4: if (newPlugin) { type = Program.Runtime.Setup.AvailablePostProcessPlugins.Where(a => a.Name == request.Type).FirstOrDefault(); newId = Program.Runtime.Setup.GetNewId<IPostProcessPlugin>(); } else { plugin = profile.PostProcessPlugins.Where(l => l.Id == request.Id).FirstOrDefault(); } break; case 5: if (newPlugin) { type = Program.Runtime.Setup.AvailablePreOutputPlugins.Where(a => a.Name == request.Type).FirstOrDefault(); newId = Program.Runtime.Setup.GetNewId<IPreOutputPlugin>(); } else { plugin = profile.PreOutputPlugins.Where(l => l.Id == request.Id).FirstOrDefault(); } break; case 6: if (newPlugin) { type = Program.Runtime.Setup.AvailableOutputPlugins.Where(a => a.Name == request.Type).FirstOrDefault(); newId = Program.Runtime.Setup.GetNewId<IOutputPlugin>(); } else { plugin = profile.OutputPlugins.Where(l => l.Id == request.Id).FirstOrDefault(); } break; default: plugin = null; break; } if (newPlugin && type != null) { plugin = Activator.CreateInstance(type) as IAfterglowPlugin; } if (SetPluginProperties(plugin, request.Properties)) { if (newPlugin) { plugin.Id = newId; switch (request.PluginType) { case 1: profile.LightSetupPlugins[0] = plugin as ILightSetupPlugin; break; case 2: profile.CapturePlugins[0] = plugin as ICapturePlugin; break; case 3: profile.ColourExtractionPlugins[0] = plugin as IColourExtractionPlugin; break; case 4: profile.PostProcessPlugins.Add(plugin as IPostProcessPlugin); break; case 5: profile.PreOutputPlugins.Add(plugin as IPreOutputPlugin); break; case 6: profile.OutputPlugins.Add(plugin as IOutputPlugin); break; default: plugin = null; break; } } Program.Runtime.Save(); // Load the saved version PluginRequest newRequest = new PluginRequest(); newRequest.Id = plugin.Id; newRequest.PluginType = request.PluginType; newRequest.ProfileId = profile.Id; return Post(newRequest); } return null; }
public bool Post(DeletePluginRequest request) { PluginResponse response = new PluginResponse(); Profile profile = (from p in Program.Runtime.Setup.Profiles where p.Id == request.ProfileId select p).FirstOrDefault(); if (request.Id == 0) { return true; } bool updated = false; switch (request.PluginType) { case 4: IPostProcessPlugin postProcessPlugin = profile.PostProcessPlugins.Where(l => l.Id == request.Id).FirstOrDefault() as IPostProcessPlugin; if (postProcessPlugin != null) { profile.PostProcessPlugins.Remove(postProcessPlugin); updated = true; } break; case 5: IPreOutputPlugin preOutputPlugin = profile.PreOutputPlugins.Where(l => l.Id == request.Id).FirstOrDefault() as IPreOutputPlugin; if (preOutputPlugin != null) { profile.PreOutputPlugins.Remove(preOutputPlugin); updated = true; } break; case 6: IOutputPlugin outputPlugin = profile.OutputPlugins.Where(l => l.Id == request.Id).FirstOrDefault() as IOutputPlugin; if (outputPlugin != null) { profile.OutputPlugins.Remove(outputPlugin); updated = true; } break; default: break; } if (updated) { Program.Runtime.Save(); } return true; }
public PluginResponse Post(PluginRequest request) { PluginResponse response = new PluginResponse(); Profile profile = (from p in Program.Runtime.Setup.Profiles where p.Id == request.ProfileId select p).FirstOrDefault(); if (profile == null) { return response; } bool newPlugin = request.Id == 0; Type type = null; IAfterglowPlugin plugin = null; switch (request.PluginType) { case 1: if (newPlugin) { type = Program.Runtime.Setup.AvailableLightSetupPlugins.Where(a => a.Name == request.Type).FirstOrDefault(); } else { plugin = profile.LightSetupPlugins.Where(l => l.Id == request.Id).FirstOrDefault(); } break; case 2: if (newPlugin) { type = Program.Runtime.Setup.AvailableCapturePlugins.Where(a => a.Name == request.Type).FirstOrDefault(); } else { plugin = profile.CapturePlugins.Where(l => l.Id == request.Id).FirstOrDefault(); } break; case 3: if (newPlugin) { type = Program.Runtime.Setup.AvailableColourExtractionPlugins.Where(a => a.Name == request.Type).FirstOrDefault(); } else { plugin = profile.ColourExtractionPlugins.Where(l => l.Id == request.Id).FirstOrDefault(); } break; case 4: if (newPlugin) { type = Program.Runtime.Setup.AvailablePostProcessPlugins.Where(a => a.Name == request.Type).FirstOrDefault(); } else { plugin = profile.PostProcessPlugins.Where(l => l.Id == request.Id).FirstOrDefault(); } break; case 5: if (newPlugin) { type = Program.Runtime.Setup.AvailablePreOutputPlugins.Where(a => a.Name == request.Type).FirstOrDefault(); } else { plugin = profile.PreOutputPlugins.Where(l => l.Id == request.Id).FirstOrDefault(); } break; case 6: if (newPlugin) { type = Program.Runtime.Setup.AvailableOutputPlugins.Where(a => a.Name == request.Type).FirstOrDefault(); } else { plugin = profile.OutputPlugins.Where(l => l.Id == request.Id).FirstOrDefault(); } break; default: plugin = null; break; } if (newPlugin && type != null) { plugin = Activator.CreateInstance(type) as IAfterglowPlugin; } else if (plugin == null) { return response; } response.Id = plugin.Id; response.Name = plugin.Name; response.Title = string.Format("{0} - {1}", profile.Name, plugin.Name); response.Description = plugin.Description; response.Author = plugin.Author; response.Version = plugin.Version; response.Website = plugin.Website; response.PluginType = request.PluginType; response.ProfileId = profile.Id; response.Properties = GetPluginProperties(plugin); return response; }