private MeasureResult Evaluate(Rainmeter.Settings.InstanceSettings Instance) { MeasureResult result = null; try { result = GetResource(Instance); result = result.Select(Instance); result = result.Filter(Instance); string strIndex = Instance.INI_Value("Index"); if (strIndex.Length > 0) { int index = int.Parse(strIndex); result = result.Index(index, Instance); } } catch (Exception e) { result = new ErrorResult(-1, e.Message); } finally { Instance.SetTempValue("Age", 0); Instance.SetTempValue("Cached", result); Instance.SetTempValue("resetId", OutlookPlugin.resetId); } return(result); }
private MeasureResult GetResource(Rainmeter.Settings.InstanceSettings Instance) { string resourceKey = Instance.INI_Value("Resource"); if (resourceKey.Length == 0) { return(new ErrorResult(-1, "Resource required")); } else if (resourceKey.StartsWith("[")) { MeasureResult r; if (TryUpdateOtherMeasure(resourceKey, Instance, out r)) { return(r); } return(new ErrorResult(-1, "Unknown measure " + resourceKey)); } else if (resourceKey == "Status") { return(new StatusResult(status, statusMsg)); } else if (resourceKey == "MAPIFolder" || resourceKey == "EmailFolder") { return(GetMAPIFolders(Instance)); } return(new ErrorResult(-1, "Unknown resource '" + resourceKey + "'")); }
protected override double?GetDouble(string key, Rainmeter.Settings.InstanceSettings Instance) { switch (key) { case "%Count": return(folders.Count); case "%TotalUnreadItemCount": if (roots.Count > 0) { int total = 0; foreach (MAPIFolderResult root in roots) { total += root.TotalUnreadItemCount; } return(total); } else { int total = 0; foreach (MAPIFolderResult f in folders) { total += f.UnreadItemCount; } return(total); } default: return(base.GetDouble(key, Instance)); } }
private string Indent(Rainmeter.Settings.InstanceSettings Instance) { string indent = virtual_INI_value(Instance, "Indent"); if (indent == "") { indent = " "; } if (indent.Length > 1) { int start = indent.StartsWith("\"") ? 1 : 0; int end = indent.EndsWith("\"") ? 1 : 0; if (start + end > 0) { indent = indent.Substring(start, indent.Length - start - end); } } string result = ""; for (int i = 0; i < depth; i++) { result += indent; } return(result); }
private bool TryUpdateOtherMeasure(string name, Rainmeter.Settings.InstanceSettings Instance, out MeasureResult result) { string section = name; if (section.StartsWith("[")) { section = section.Substring(1, section.Length - 2); } Rainmeter.Settings.InstanceSettings other = Instance.GetSection(section); if (other == null) { result = null; return(false); } // a measure that is not directly used by a meter does not age, // we have to work around this int age = Math.Max((int)other.GetTempValue("Age", 0), (int)Instance.GetTempValue("Age", 0)); other.SetTempValue("Age", age); result = Measure(other); Instance.SetTempValue("Base", other); return(true); }
public static int ConfigHeight(Rainmeter.Settings.InstanceSettings Instance) { IntPtr hwnd = (IntPtr)(UInt32.Parse(Rainmeter.PluginBridge("GetWindow", Rainmeter.PluginBridge("GetConfig", Instance.INI_File)))); RECT rct; GetWindowRect(hwnd, out rct); return(rct.Bottom - rct.Top); }
protected override string GetString(string key, Rainmeter.Settings.InstanceSettings Instance) { if (key == "%Message") { return(message); } return(base.GetString(key, Instance)); }
// Call this function to determine if the parent skin is topmost public static bool ParentIsTopmost(Rainmeter.Settings.InstanceSettings Instance) { IntPtr hwnd = (IntPtr)(UInt32.Parse(Rainmeter.PluginBridge("GetWindow", Rainmeter.PluginBridge("GetConfig", Instance.INI_File)))); WINDOWINFO info = new WINDOWINFO(true); GetWindowInfo(hwnd, ref info); return((info.dwExStyle & 0x00000008L) > 0); }
public override MeasureResult Index(int i, Rainmeter.Settings.InstanceSettings Instance) { if (0 <= i && i < folders.Count) { return(folders[i]); } return(NullResult.Instance); }
protected override double?GetDouble(string key, Rainmeter.Settings.InstanceSettings Instance) { if (key == "%Code") { return(code); } return(base.GetDouble(key, Instance)); }
protected virtual string GetString(string key, Rainmeter.Settings.InstanceSettings Instance) { double?d = GetDouble(key, Instance); if (d != null) { return(d.ToString()); } return(""); }
public string AsString(Rainmeter.Settings.InstanceSettings Instance) { string result = virtual_INI_value(Instance, GetResultKey()); Regex regex = new Regex("%[a-zA-Z]+"); return(regex.Replace(result, delegate(Match match) { return GetString(match.ToString(), Instance); })); }
private MeasureResult GetCached(Rainmeter.Settings.InstanceSettings Instance) { MeasureResult cached; cached = (MeasureResult)Instance.GetTempValue("Cached", null); if (cached == null || !cached.checkAge(Instance)) { return(null); } return(cached); }
protected override double?GetDouble(string key, Rainmeter.Settings.InstanceSettings Instance) { if (key == "%Code") { return(code); } else if (key == "%IsOk") { return(IsOk() ? 1 : 0); } return(null); }
public override MeasureResult Select(Rainmeter.Settings.InstanceSettings Instance) { string select = Instance.INI_Value("Select"); if (select == "Subfolders") { MAPIFolderListResult result = new MAPIFolderListResult(); result.AddRoot(folder, false); return(result); } return(base.Select(Instance)); }
public double Update2(Rainmeter.Settings.InstanceSettings Instance) { try { MeasureResult result = Measure(Instance); return(result.AsDouble(Instance)); } catch (Exception e) { Rainmeter.Log(Rainmeter.LogLevel.Error, "Sorry, " + e.ToString()); return(double.NaN); } }
protected override string GetString(string key, Rainmeter.Settings.InstanceSettings Instance) { switch (key) { case "%Name": return(Name); case "%Path": return(Path); case "%Indent": return(Indent(Instance)); default: return(base.GetString(key, Instance)); } }
public string GetString(Rainmeter.Settings.InstanceSettings Instance) { try { MeasureResult result = Measure(Instance); return(result.AsString(Instance)); } catch (Exception e) { Rainmeter.Log(Rainmeter.LogLevel.Error, "Sorry, " + e.ToString()); return("Sorry, " + e.ToString()); } }
private MeasureResult Measure(Rainmeter.Settings.InstanceSettings Instance) { lock (Instance) { MeasureResult cached = GetCached(Instance); if (cached != null) { int age = (int)Instance.GetTempValue("Age", 0); Instance.SetTempValue("Age", age + 1); return(cached); } return(Evaluate(Instance)); } }
public override MeasureResult Select(Rainmeter.Settings.InstanceSettings Instance) { string select = Instance.INI_Value("Select"); if (select == "Root") { MAPIFolderListResult result = new MAPIFolderListResult(); foreach (MAPIFolderResult root in roots) { result.Add(root); } return(result); } return(this); }
protected override double?GetDouble(string key, Rainmeter.Settings.InstanceSettings Instance) { switch (key) { case "%TotalUnreadItemCount": return(TotalUnreadItemCount); case "%UnreadItemCount": return(UnreadItemCount); case "%HasUnreadItems": return(UnreadItemCount > 0 ? 1 : 0); case "%ItemCount": return(ItemCount); default: return(base.GetDouble(key, Instance)); } }
protected override string GetString(string key, Rainmeter.Settings.InstanceSettings Instance) { if (key == "%Message") { if (IsOk()) { string okMsg = virtual_INI_value(Instance, "OkMessage"); if (okMsg.Length > 0) { return(okMsg); } } return(message); } return(base.GetString(key, Instance)); }
public override MeasureResult Filter(Rainmeter.Settings.InstanceSettings Instance) { List <MAPIFolderResult> list = folders; string filter = Instance.INI_Value("Filter"); if (filter.Length > 0) { list = list.FindAll(delegate(MAPIFolderResult f) { return(f.testFilter(filter, Instance)); }); } string include = Instance.INI_Value("Include"); if (include.Length > 0) { include = include.Replace(".", "\\.").Replace("*", ".*"); Regex regex = new Regex("^(" + include + ")$"); list = list.FindAll(delegate(MAPIFolderResult f) { return(regex.IsMatch(f.Name)); }); } string exclude = Instance.INI_Value("Exclude"); if (exclude.Length > 0) { exclude = exclude.Replace(".", "\\.").Replace("*", ".*"); Regex regex = new Regex("^(" + exclude + ")$"); list = list.FindAll(delegate(MAPIFolderResult f) { return(!regex.IsMatch(f.Name)); }); } if (list == folders) { return(this); } return(new MAPIFolderListResult(list)); }
protected string virtual_INI_value(Rainmeter.Settings.InstanceSettings Instance, String key) { string r = Instance.INI_Value(key); if (r.Length > 0) { return(r); } if (Instance.INI_Value("Override") == "1") { return(""); } Rainmeter.Settings.InstanceSettings other = (Rainmeter.Settings.InstanceSettings)Instance.GetTempValue("Base", null); if (other == null) { return(""); } return(virtual_INI_value(other, key)); }
public double AsDouble(Rainmeter.Settings.InstanceSettings Instance) { string result = virtual_INI_value(Instance, GetResultKey()); if (result.StartsWith("%")) { double?d = GetDouble(result, Instance); if (d != null) { return((double)d); } return(double.NaN); } else { double d = double.NaN; double.TryParse(result, out d); return(d); } }
public bool checkAge(Rainmeter.Settings.InstanceSettings Instance) { int myResetId = (int)Instance.GetTempValue("resetId", OutlookPlugin.resetId); if (myResetId != OutlookPlugin.resetId) { return(false); } string strUpdateRate = virtual_INI_value(Instance, "UpdateRate"); int updateRate; if (!int.TryParse(strUpdateRate, out updateRate)) { updateRate = 300; } int age = (int)Instance.GetTempValue("Age", (int)0); return(age < updateRate); }
// 'ExecuteBang' is a way of Rainmeter telling your plugin to do something *right now*. // What it wants to do can be defined by the 'Command' parameter. public void ExecuteBang(Rainmeter.Settings.InstanceSettings Instance, string Command) { //string[] args = Command.Split(' '); //Command = args[0]; try { switch (Command) { case "ClearCache": resetId++; return; } MeasureResult mr = Measure(Instance); mr.Bang(GetOutlook(), Command); } catch (Exception e) { Rainmeter.Log(Rainmeter.LogLevel.Error, e.ToString()); } return; }
public static string SkinName(Rainmeter.Settings.InstanceSettings Instance) { try { return(Instance.ConfigName); /* * if (Instance.GetTempValue("_internal_SkinPath", string.Empty).ToString() == string.Empty) * { * string sAppDataPath = System.Environment.GetEnvironmentVariable("AppData").Trim(); * string sRainmeterINIText = System.IO.File.ReadAllText(sAppDataPath + "\\Rainmeter\\Rainmeter.ini"); * string sSkinPath = Chopper(sRainmeterINIText.Replace('\n', '\r'), "SkinPath=", "\r").Trim().TrimEnd(new char[] { '\\' }); * Instance.SetTempValue("_internal_SkinPath", sSkinPath); * } * * System.IO.FileInfo fi = new System.IO.FileInfo(Instance.INI_File); * return fi.DirectoryName.Replace(Instance.GetTempValue("_internal_SkinPath", string.Empty).ToString(), string.Empty).TrimEnd(new char[] { '\\' }).TrimStart(new char[] { '\\' }); */ } catch { } return(string.Empty); }
private MeasureResult GetMAPIFolders(Rainmeter.Settings.InstanceSettings Instance) { MAPIFolderListResult result = new MAPIFolderListResult(); string rootList = Instance.INI_Value("Root"); if (rootList.Length == 0) { rootList = "Inbox"; } Outlook.NameSpace nsMapi = outlook.GetNamespace("MAPI"); foreach (string root in rootList.Split('|')) { if (!root.StartsWith("\\")) { switch (root) { case "Inbox": Outlook.MAPIFolder inbox = nsMapi.GetDefaultFolder(Outlook.OlDefaultFolders.olFolderInbox); result.AddRoot(inbox); break; default: return(new ErrorResult(-1, root + " not implemented")); } } else { Outlook.MAPIFolder folder = FindRoot(nsMapi.Folders, root); if (folder == null) { return(new ErrorResult(-1, root + " not found")); } result.AddRoot(folder); } } return(result); }
public bool testFilter(string filter, Rainmeter.Settings.InstanceSettings Instance) { double?d = GetDouble(filter, Instance); return(d == 1); }