public void LoadControl_WithControlThrowingHttpParseException_LoadsErrorControlWithExceptionProperty() { // arrange var containerControl = new Mock <IContainerControl>(); var exception = new HttpParseException(); var userControl = new Mock <UserControl>(); userControl.Stub(c => c.ID); var errorControl = userControl.As <IErrorControl>(); userControl.Object.ID = "Foo.Bar"; errorControl.Stub(c => c.Exception); containerControl.Setup(tc => tc.LoadControl("~/Skins/VsShirts/Controls/ViewPost.ascx")).Throws(exception); containerControl.Setup(tc => tc.LoadControl("~/Skins/_System/Controls/Error.ascx")).Returns((UserControl)errorControl.Object); var skin = new SkinConfig { TemplateFolder = "VsShirts" }; var skinControlLoader = new SkinControlLoader(containerControl.Object, skin); // act var control = skinControlLoader.LoadControl("ViewPost") as IErrorControl; // assert Assert.AreEqual(exception, control.Exception.InnerException); }
public static void load() { try { if (File.Exists(file)) { string fileData = File.ReadAllText(file); config = JsonConvert.DeserializeObject <SkinConfig>( fileData, new JsonSerializerSettings { // allow null values NullValueHandling = NullValueHandling.Ignore } ); use(); } if (!File.Exists(fileExample)) // If skin examplefile not exsist - create it { init(); save(fileExample); } } catch (Exception err) { log.Error(err, "Can't load skin configuration."); } }
public void Ctor_WithStream_SetsXmlAndTemplateFolder() { // arrange var xml = new XmlDocument(); // act var config = new SkinConfig(xml, "Test"); // assert Assert.AreEqual("Test", config.TemplateFolder); Assert.AreEqual(xml, config.Xml); }
/// <summary> /// Processes the request. /// </summary> /// <param name="context">Context.</param> public void ProcessRequest(HttpContext context) { context.Response.ContentEncoding = Encoding.UTF8; context.Response.ContentType = "text/css"; var httpContext = new HttpContextWrapper(context); var skin = SkinConfig.GetCurrentSkin(Config.CurrentBlog, httpContext); if (skin != null) { context.Response.Write(skin.CustomCssText); } }
public void LoadControl_WithControlName_ReplacesDotWithUnderscoreInId() { // arrange var containerControl = new Mock<IContainerControl>(); var loadedControl = new UserControl {ID = "Foo.Bar"}; containerControl.Setup(tc => tc.LoadControl("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx")).Returns(loadedControl); var skin = new SkinConfig { TemplateFolder = "OfMyChinnyChinChin" }; var skinControlLoader = new SkinControlLoader(containerControl.Object, skin); // act var control = skinControlLoader.LoadControl("ViewPost"); // assert Assert.AreEqual("Foo_Bar", control.ID); }
public void LoadControl_WithControlName_LoadsTheControlFromTheSkinFolder() { // arrange var containerControl = new Mock<IContainerControl>(); var loadedControl = new UserControl { ID = "Foo.Bar" }; containerControl.Setup(tc => tc.LoadControl("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx")).Returns(loadedControl); var skin = new SkinConfig {TemplateFolder = "OfMyChinnyChinChin"}; var skinControlLoader = new SkinControlLoader(containerControl.Object, skin); // act var control = skinControlLoader.LoadControl("ViewPost"); // assert Assert.AreSame(loadedControl, control); }
public void LoadControl_WithControlThrowingHttpException_LoadsFallbackControl() { // arrange var containerControl = new Mock<IContainerControl>(); var fallbackControl = new UserControl { ID = "Foo.Bar" }; containerControl.Setup(tc => tc.LoadControl("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx")).Throws(new HttpException()); containerControl.Setup(tc => tc.LoadControl("~/Skins/_System/Controls/ViewPost.ascx")).Returns(fallbackControl); var skin = new SkinConfig { TemplateFolder = "OfMyChinnyChinChin" }; var skinControlLoader = new SkinControlLoader(containerControl.Object, skin); // act var control = skinControlLoader.LoadControl("ViewPost"); // assert Assert.AreSame(fallbackControl, control); }
public void LoadControl_WithControlAndFallbackThrowingHttpException_LoadsErrorControl() { // arrange var containerControl = new Mock<IContainerControl>(); var errorControl = new Error(); containerControl.Setup(tc => tc.LoadControl("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx")).Throws(new HttpException()); containerControl.Setup(tc => tc.LoadControl("~/Skins/_System/Controls/ViewPost.ascx")).Throws(new HttpException()); containerControl.Setup(tc => tc.LoadControl("~/Skins/_System/Controls/Error.ascx")).Returns(errorControl); var skin = new SkinConfig { TemplateFolder = "OfMyChinnyChinChin" }; var skinControlLoader = new SkinControlLoader(containerControl.Object, skin); // act var control = skinControlLoader.LoadControl("ViewPost") as Error; // assert Assert.AreSame(errorControl, control); Assert.AreEqual("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx", control.Exception.ControlPath); }
public void LoadControl_WithControlThrowingHttpParseException_LoadsErrorControlWithExceptionHavingControlPath() { // arrange var containerControl = new Mock <IContainerControl>(); var exception = new HttpParseException(); var errorControl = new Error(); containerControl.Setup(tc => tc.LoadControl("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx")).Throws(exception); containerControl.Setup(tc => tc.LoadControl("~/Skins/_System/Controls/Error.ascx")).Returns(errorControl); var skin = new SkinConfig { TemplateFolder = "OfMyChinnyChinChin" }; var skinControlLoader = new SkinControlLoader(containerControl.Object, skin); // act var control = skinControlLoader.LoadControl("ViewPost") as IErrorControl; // assert Assert.AreEqual("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx", control.Exception.ControlPath); }
public void LoadControl_WithControlName_ReplacesDotWithUnderscoreInId() { // arrange var containerControl = new Mock <IContainerControl>(); var loadedControl = new UserControl { ID = "Foo.Bar" }; containerControl.Setup(tc => tc.LoadControl("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx")).Returns(loadedControl); var skin = new SkinConfig { TemplateFolder = "OfMyChinnyChinChin" }; var skinControlLoader = new SkinControlLoader(containerControl.Object, skin); // act var control = skinControlLoader.LoadControl("ViewPost"); // assert Assert.AreEqual("Foo_Bar", control.ID); }
public void LoadControl_WithControlName_LoadsTheControlFromTheSkinFolder() { // arrange var containerControl = new Mock <IContainerControl>(); var loadedControl = new UserControl { ID = "Foo.Bar" }; containerControl.Setup(tc => tc.LoadControl("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx")).Returns(loadedControl); var skin = new SkinConfig { TemplateFolder = "OfMyChinnyChinChin" }; var skinControlLoader = new SkinControlLoader(containerControl.Object, skin); // act var control = skinControlLoader.LoadControl("ViewPost"); // assert Assert.AreSame(loadedControl, control); }
public void LoadControl_WithControlThrowingHttpException_LoadsFallbackControl() { // arrange var containerControl = new Mock <IContainerControl>(); var fallbackControl = new UserControl { ID = "Foo.Bar" }; containerControl.Setup(tc => tc.LoadControl("~/Skins/OfMyChinnyChinChin/Controls/ViewPost.ascx")).Throws(new HttpException()); containerControl.Setup(tc => tc.LoadControl("~/Skins/_System/Controls/ViewPost.ascx")).Returns(fallbackControl); var skin = new SkinConfig { TemplateFolder = "OfMyChinnyChinChin" }; var skinControlLoader = new SkinControlLoader(containerControl.Object, skin); // act var control = skinControlLoader.LoadControl("ViewPost"); // assert Assert.AreSame(fallbackControl, control); }
//Find all Skin.CFG files in the plugins folder and add them as pending skins. private void LoadAllSkins() { foreach (string SkinConfig in Directory.EnumerateFiles(BepInEx.Paths.PluginPath, "Skin.cfg", SearchOption.AllDirectories)) { if (SkinConfig.EndsWith("Skin.cfg")) { string[] newpath = SkinConfig.Split(new string[] { @"\" }, StringSplitOptions.RemoveEmptyEntries); ConfigFile config = new ConfigFile(SkinConfig, false); string currentBodyName = config.Bind <string>("", "CharacterBodyName", "null").Value; if (!pendingSkins.ContainsKey(currentBodyName)) { pendingSkins.Add(currentBodyName, new List <PendingSkin>()); } pendingSkins[currentBodyName].Add(new PendingSkin() { config = config, bodyName = currentBodyName, SkinFolder = Directory.GetParent(SkinConfig).FullName }); } } }
public void Awake() { floatProperties.Add("_Cull"); floatProperties.Add("_BlueChannelBias"); floatProperties.Add("_BlueChannelSmoothness"); floatProperties.Add("_ColorsOn"); floatProperties.Add("_DecalLayer"); floatProperties.Add("_Depth"); floatProperties.Add("_DitherOn"); floatProperties.Add("_EliteBrightnessMax"); floatProperties.Add("_EliteBrightnessMin"); floatProperties.Add("_EliteIndex"); floatProperties.Add("_EmPower"); floatProperties.Add("_EnableCutout"); floatProperties.Add("_Fade"); floatProperties.Add("_FadeBias"); floatProperties.Add("_FlowEmissionStrength"); floatProperties.Add("_FlowHeightBias"); floatProperties.Add("_FlowHeightPower"); floatProperties.Add("_FlowMaskStrength"); floatProperties.Add("_FlowNormalStrength"); floatProperties.Add("_FlowSpeed"); floatProperties.Add("_FlowTextureScaleFactor"); floatProperties.Add("_FlowmapOn"); floatProperties.Add("_ForceSpecOn"); floatProperties.Add("_FresnelBoost"); floatProperties.Add("_FresnelPower"); floatProperties.Add("_GreenChannelBias"); floatProperties.Add("_GreenChannelSmoothness"); floatProperties.Add("_LimbPrimeMask"); floatProperties.Add("_LimbRemovalOn"); floatProperties.Add("_NormalStrength"); floatProperties.Add("_PrintBias"); floatProperties.Add("_PrintBoost"); floatProperties.Add("_PrintDirection"); floatProperties.Add("_PrintEmissionToAlbedoLerp"); floatProperties.Add("_PrintOn"); floatProperties.Add("_RampInfo"); floatProperties.Add("_SliceAlphaDepth"); floatProperties.Add("_SliceBandHeight"); floatProperties.Add("_SliceHeight"); floatProperties.Add("_Smoothness"); floatProperties.Add("_SpecularExponent"); floatProperties.Add("_SpecularStrength"); floatProperties.Add("_SplatmapOn"); floatProperties.Add("_SplatmapTileScale"); floatProperties.Add("_FEON"); floatProperties.Add("_SrcBlend"); floatProperties.Add("_DstBlend"); floatProperties.Add("_InvFade"); floatProperties.Add("_AlphaBias"); floatProperties.Add("_AlphaBoost"); floatProperties.Add("_Boost"); floatProperties.Add("_CalcTextureAlphaOn"); floatProperties.Add("_CloudOffsetOn"); floatProperties.Add("_CloudsOn"); floatProperties.Add("_DisableRemapOn"); floatProperties.Add("_ExternalAlpha"); floatProperties.Add("_FadeCloseDistance"); floatProperties.Add("_FadeCloseOn"); floatProperties.Add("_FresnelOn"); floatProperties.Add("_InternalSimpleBlendMode"); floatProperties.Add("_OffsetAmount"); floatProperties.Add("_UseUV1On"); floatProperties.Add("_VertexAlphaOn"); floatProperties.Add("_VertexColorOn"); floatProperties.Add("_VertexOffsetOn"); colorProperties.Add("_EmColor"); directory = Application.dataPath; directory = System.IO.Path.GetFullPath(System.IO.Path.Combine(directory, @"..\BepInEx\skins")); myConfig = new ConfigFile(@"BepInEx\skins\RyanSkinAPI.cfg", true); On.RoR2.SurvivorCatalog.Init += (orig) => { orig(); foreach (SurvivorDef survivorDef in SurvivorCatalog.allSurvivorDefs) { //Skip 'finished' prefabs. This is for custom survivors that do skins differently in an incompatible way to the RyanSkinAPI. if (survivorDef.bodyPrefab && survivorDef.bodyPrefab.CompareTag("Finish")) { continue; } AddComponents(survivorDef); if (myConfig.Bind <bool>(new ConfigDefinition("", "DumpBoilerplates"), false).Value) { base.Logger.LogInfo("Dumping " + survivorDef.name); DumpDefaultSkins(survivorDef.bodyPrefab.gameObject); } } foreach (string ModFolder in Directory.EnumerateDirectories(directory)) { foreach (string SkinFolder in Directory.EnumerateDirectories(ModFolder)) { foreach (string SkinConfig in Directory.EnumerateFiles(SkinFolder)) { if (SkinConfig.EndsWith("Skin.cfg")) { string[] newpath = SkinConfig.Split(new string[] { @"\" }, StringSplitOptions.RemoveEmptyEntries); string RelativePath = @"BepInEx\skins\" + newpath[newpath.Length - 3] + @"\" + newpath[newpath.Length - 2] + @"\" + newpath[newpath.Length - 1]; ConfigFile config = new ConfigFile(RelativePath, false); string body = config.Bind <string>("", "CharacterBodyName", "null").Value; pendingSkins.Add(new PendingSkin() { config = config, bodyName = body, SkinFolder = SkinFolder }); } } } } ; foreach (SurvivorDef survivorDef in SurvivorCatalog.allSurvivorDefs) { //Skip finished bodies. if (survivorDef.bodyPrefab.CompareTag("Finish")) { continue; } foreach (PendingSkin pendingSkin in pendingSkins) { if (survivorDef.bodyPrefab.name == pendingSkin.bodyName) { AddSkin(survivorDef, pendingSkin.SkinFolder, pendingSkin.config); } } } }; }
private void OnGUI() { if (_skinnable is SkinnableGeneral) { if (_skinnable is SkinnableMesh) { GUILayout.Label("Save Mesh Skin", EditorStyles.boldLabel); _saveMesh = EditorGUILayout.Toggle("Save Mesh", _saveMesh); } else if (_skinnable is SkinnablePrefab) { GUILayout.Label("Save Prefab Skin", EditorStyles.boldLabel); _savePrefab = EditorGUILayout.Toggle("Save Prefab", _savePrefab); if (_savePrefab == true) { if (EditorApplication.isPlaying) { EditorGUILayout.HelpBox("'Save Prefab' does not works in play mode and will be ignored", MessageType.Warning); } if ((_skinnable as SkinnablePrefab).objectToReplace == null) { EditorGUILayout.HelpBox("There is no prefab assigned to the 'Object To Replace' reference, please assign a prefab", MessageType.Warning); } } } else if (_skinnable is SkinnableParticles) { GUILayout.Label("Save Particles Skin", EditorStyles.boldLabel); _saveParticleColors = EditorGUILayout.Toggle("Save Particles Colors", _saveParticleColors); if (_saveParticleColors) { GUIStyle gs = new GUIStyle(); gs.padding.left = 15; GUILayout.BeginVertical(gs); _saveParticleStartColor = EditorGUILayout.Toggle("Save Start Color", _saveParticleStartColor); _saveParticleColorOverLife = EditorGUILayout.Toggle("Save Color Over Life", _saveParticleColorOverLife); _saveParticleColorBySpeed = EditorGUILayout.Toggle("Save Color By Speed", _saveParticleColorBySpeed); GUILayout.EndVertical(); } } else { GUILayout.Label("Save General Skin", EditorStyles.boldLabel); } _saveMaterials = EditorGUILayout.Toggle("Save Materials Properties", _saveMaterials); _saveMatColors = EditorGUILayout.Toggle("Save Material Colors", _saveMatColors); if (_saveMatColors) { ScriptableObject target = this; SerializedObject so = new SerializedObject(target); SerializedProperty objectColorsProp = so.FindProperty("saveColors"); EditorGUILayout.PropertyField(objectColorsProp, true); so.ApplyModifiedProperties(); _skinnable.saveColors = saveColors; } } else if (_skinnable is SkinnableLight) { GUILayout.Label("Save Light Skin", EditorStyles.boldLabel); _saveLightColor = EditorGUILayout.Toggle("Save Light Color", _saveLightColor); _saveLightIntensity = EditorGUILayout.Toggle("Save Light Intensity", _saveLightIntensity); } GUILayout.Space(10); if (GUILayout.Button("Choose Skin Asset")) { EditorGUIUtility.ShowObjectPicker <SkinConfig>(null, true, "", _pickerFlag); } if (Event.current.commandName == "ObjectSelectorUpdated") { _skin = EditorGUIUtility.GetObjectPickerObject() as SkinConfig; } GUILayout.Space(10); EditorGUI.BeginDisabledGroup(_skin == null); if (GUILayout.Button("Save")) { SaveSkinnable(_skin.skinObjects); Debug.Log("Skin Object Saved"); } EditorGUI.EndDisabledGroup(); }
//static List<Control> getControls() //{ // var controls = tools.GetAllControls(Program.window); // List<Control> list = new List<Control>(){}; // string type; // foreach(var c in controls){ // type = c.GetType().ToString(); // if (type == "AutoPrintr.DocTypeCheckBox") { continue; } // list.Add(c); // } // return list; //} public static void init() { // Get all controls //var controls = getControls(); var controls = GetAllControls(Program.window); // Creating new skin config = new SkinConfig() { window = new Skin() { }, CheckBox = new SkinCheckBox() { }, all = new Skin() { }, table = new SkinTable() { RowHeader = new Skin() { }, ColumnHeader = new Skin() { } }, controlsByType = new Dictionary <string, Skin>() { }, controls = new List <SkinForControl>() { } }; string type; // Now processing the controls foreach (var c in controls) { type = c.GetType().ToString(); if ( c.Name.Length == 0 | type == "AutoPrintr.DocTypeCheckBox" | type == "System.Windows.Forms.TableLayoutPanel" ) { continue; } config.controls.Add( new SkinForControl() { ControlName = c.Name, ControlType = c.GetType().ToString(), BackColor = tools.Color2RGB(c.BackColor), TextColor = tools.Color2RGB(c.ForeColor), Font = new skinFont() { Name = c.Font.Name, Size = c.Font.Size, Unit = c.Font.Unit, Bold = c.Font.Bold, Italic = c.Font.Italic, Strikeout = c.Font.Strikeout, Underline = c.Font.Underline } } ); } }
public void LoadControl_WithControlThrowingHttpParseException_LoadsErrorControlWithExceptionProperty() { // arrange var containerControl = new Mock<IContainerControl>(); var exception = new HttpParseException(); var userControl = new Mock<UserControl>(); userControl.Stub(c => c.ID); var errorControl = userControl.As<IErrorControl>(); userControl.Object.ID = "Foo.Bar"; errorControl.Stub(c => c.Exception); containerControl.Setup(tc => tc.LoadControl("~/Skins/VsShirts/Controls/ViewPost.ascx")).Throws(exception); containerControl.Setup(tc => tc.LoadControl("~/Skins/_System/Controls/Error.ascx")).Returns((UserControl)errorControl.Object); var skin = new SkinConfig { TemplateFolder = "VsShirts" }; var skinControlLoader = new SkinControlLoader(containerControl.Object, skin); // act var control = skinControlLoader.LoadControl("ViewPost") as IErrorControl; // assert Assert.AreEqual(exception, control.Exception.InnerException); }
public SkinControlLoader(IContainerControl container, SkinConfig skin) { Container = container; Skin = skin; }
public SkinControlLoader(IContainerControl container, SkinConfig skin) { Container = container; Skin = skin; }
public void InitializeBlogPage() { var skin = SkinConfig.GetCurrentSkin(Blog, SubtextContext.HttpContext); var skinControlLoader = new SkinControlLoader(this, skin); InitializeControls(skinControlLoader); if (skin.HasCustomCssText) { CustomCss.Attributes.Add("href", Url.CustomCssUrl()); } else { //MAC IE does not like the empy CSS file, plus its a waste :) CustomCss.Visible = false; } if (Rsd != null) { Rsd.Attributes.Add("href", Url.RsdUrl(Blog).ToString()); } if (wlwmanifest != null) { wlwmanifest.Attributes.Add("href", Url.WlwManifestUrl()); } if (opensearch != null) { opensearch.Attributes.Add("href", Url.OpenSearchDescriptorUrl()); opensearch.Attributes.Add("Title", Blog.Title); } if (RSSLink != null) { RSSLink.Attributes.Add("href", Url.RssUrl(Blog).ToString()); } // if specified, add script elements if (scripts != null) { scripts.Text = ScriptRenderer.RenderScriptElementCollection(skin.SkinKey); } if (styles != null) { styles.Text = StyleRenderer.RenderStyleElementCollection(skin.SkinKey); } if (openIDServer != null && !string.IsNullOrEmpty(Blog.OpenIdServer)) { openIDServer.Text = string.Format(OpenIdServerLocation, Blog.OpenIdServer); } if (openIDDelegate != null && !string.IsNullOrEmpty(Blog.OpenIdDelegate)) { openIDDelegate.Text = string.Format(OpenIdDelegateLocation, Blog.OpenIdDelegate); } if (metaTags != null) { metaTags.Blog = Blog; } }