private string GetUserInput(Rainmeter.Settings.InstanceSettings Instance, Dictionary <string, string> sOverrides) { // Create the form. 'InputBox' is a .NET form with a textbox and two button controls on it. InputBox input = new InputBox(); input.Instance = Instance; input.ChangeX(Instance, "0"); input.ChangeY(Instance, "0"); // Change the styles of the InputBox form based on overrides or INI values #region Style and preference tweaks (INI and override settings) if (sOverrides.ContainsKey("FontFace")) { input.ChangeFontFace(sOverrides["FontFace"]); } else if (!string.IsNullOrEmpty(Instance.INI_Value("FontFace"))) { input.ChangeFontFace(Instance.INI_Value("FontFace")); } if (sOverrides.ContainsKey("FontSize")) { input.ChangeFontSize(sOverrides["FontSize"]); } else if (!string.IsNullOrEmpty(Instance.INI_Value("FontSize"))) { input.ChangeFontSize(Instance.INI_Value("FontSize")); } if (sOverrides.ContainsKey("W")) { input.ChangeW(sOverrides["W"]); } else if (!string.IsNullOrEmpty(Instance.INI_Value("W"))) { input.ChangeW(Instance.INI_Value("W")); } if (sOverrides.ContainsKey("H")) { input.ChangeH(sOverrides["H"]); } else if (!string.IsNullOrEmpty(Instance.INI_Value("H"))) { input.ChangeH(Instance.INI_Value("H")); } if (sOverrides.ContainsKey("X")) { input.ChangeX(Instance, sOverrides["X"]); } else if (!string.IsNullOrEmpty(Instance.INI_Value("X"))) { input.ChangeX(Instance, Instance.INI_Value("X")); } if (sOverrides.ContainsKey("Y")) { input.ChangeY(Instance, sOverrides["Y"]); } else if (!string.IsNullOrEmpty(Instance.INI_Value("Y"))) { input.ChangeY(Instance, Instance.INI_Value("Y")); } if (sOverrides.ContainsKey("StringStyle")) { input.ChangeFontStringStyle(sOverrides["StringStyle"]); } else if (!string.IsNullOrEmpty(Instance.INI_Value("StringStyle"))) { input.ChangeFontStringStyle(Instance.INI_Value("StringStyle")); } if (sOverrides.ContainsKey("StringAlign")) { input.ChangeStringAlign(sOverrides["StringAlign"]); } else if (!string.IsNullOrEmpty(Instance.INI_Value("StringAlign"))) { input.ChangeStringAlign(Instance.INI_Value("StringAlign")); } bool bFocusDismiss = true; if (sOverrides.ContainsKey("FocusDismiss")) { input.MakeFocusDismiss(sOverrides["FocusDismiss"] == "1"); bFocusDismiss = sOverrides["FocusDismiss"] == "1"; } else { input.MakeFocusDismiss(!(Instance.INI_Value("FocusDismiss").Trim().ToUpper() != "1")); bFocusDismiss = !(Instance.INI_Value("FocusDismiss").Trim().ToUpper() != "1"); } if (sOverrides.ContainsKey("FontColor")) { input.ChangeFontColor(sOverrides["FontColor"]); } else if (!string.IsNullOrEmpty(Instance.INI_Value("FontColor"))) { input.ChangeFontColor(Instance.INI_Value("FontColor")); } if (sOverrides.ContainsKey("SolidColor")) { input.ChangeBackColor(sOverrides["SolidColor"]); } else if (!string.IsNullOrEmpty(Instance.INI_Value("SolidColor"))) { input.ChangeBackColor(Instance.INI_Value("SolidColor")); } if (sOverrides.ContainsKey("Passwords")) { if (sOverrides["DefaultValue"] == "1") { input.MakePassword(); } } else if (Instance.INI_Value("Password").Trim().ToUpper() == "1") { input.MakePassword(); } bool bAutoTopMost = true; if (sOverrides.ContainsKey("TopMost")) { if (sOverrides["TopMost"] == "1") { input.MakeTopmost(); bAutoTopMost = false; } else if (sOverrides["TopMost"] == "0") { bAutoTopMost = false; } } else if (Instance.INI_Value("TopMost").Trim().ToUpper() == "1") { input.MakeTopmost(); bAutoTopMost = false; } else if (Instance.INI_Value("TopMost").Trim().ToUpper() != "AUTO") { if (!string.IsNullOrEmpty(Instance.INI_Value("TopMost").Trim())) { bAutoTopMost = false; } } if (bAutoTopMost) { if (Rainmeter.ParentIsTopmost(Instance)) { input.MakeTopmost(); } } if (sOverrides.ContainsKey("DefaultValue")) { input.DefaultValue(sOverrides["DefaultValue"]); } else if (!string.IsNullOrEmpty(Instance.INI_Value("DefaultValue"))) { input.DefaultValue(Instance.INI_Value("DefaultValue").Trim()); } #endregion if (bFocusDismiss) { input.Show(new WindowWrapper(Rainmeter.GetConfigWindow(Instance))); for (; ;) { if (input.DialogResult != System.Windows.Forms.DialogResult.None || input.drBackup != System.Windows.Forms.DialogResult.None) { break; } System.Windows.Forms.Application.DoEvents(); System.Threading.Thread.Sleep(44); } } else { input.ShowDialog(new WindowWrapper(Rainmeter.GetConfigWindow(Instance))); } if (input.drBackup != System.Windows.Forms.DialogResult.None) { if (input.drBackup != System.Windows.Forms.DialogResult.OK) { return(null); } } else if (input.DialogResult != System.Windows.Forms.DialogResult.None) { if (input.DialogResult != System.Windows.Forms.DialogResult.OK) { return(null); } } Instance.SetTempValue("LastInput", input.sTextValue); return(input.sTextValue); }