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; }