bool HasConditions(HotstringDefinition hotstring) { string history = this.history.ToString(); if(history.Length == 0) return false; var compare = (hotstring.EnabledOptions & HotstringDefinition.Options.CaseSensitive) == HotstringDefinition.Options.CaseSensitive ? StringComparison.CurrentCulture : StringComparison.CurrentCultureIgnoreCase; int x = history.Length - hotstring.Sequence.Length - 1; if((hotstring.EnabledOptions & HotstringDefinition.Options.AutoTrigger) == HotstringDefinition.Options.AutoTrigger) { if(!history.EndsWith(hotstring.Sequence, compare)) return false; } else { if(history.Length < hotstring.Sequence.Length + 1) return false; if(hotstring.EndChars.IndexOf(history[history.Length - 1]) == -1) return false; if(!history.Substring(x--, hotstring.Sequence.Length).Equals(hotstring.Sequence, compare)) return false; } if((hotstring.EnabledOptions & HotstringDefinition.Options.Nested) != HotstringDefinition.Options.Nested) if(x > -1 && char.IsLetterOrDigit(history[x])) return false; return true; }
public HotstringDefinition Add(HotstringDefinition hotstring) { hotstrings.Add(hotstring); return hotstring; }
public void Remove(HotstringDefinition hotstring) { hotstrings.Remove(hotstring); }
/// <summary> /// Creates a hotstring. /// </summary> /// <param name="Sequence"></param> /// <param name="Label"></param> /// <param name="Options"></param> public static void Hotstring(string Sequence, string Label, string Options) { InitKeyboardHook(); GenericFunction proc; try { var method = FindLocalMethod(Label); if (method == null) throw new ArgumentNullException(); proc = (GenericFunction)Delegate.CreateDelegate(typeof(GenericFunction), method); } catch (Exception) { ErrorLevel = 1; throw new ArgumentException(); } var options = HotstringDefinition.ParseOptions(Options); var key = new HotstringDefinition(Sequence, proc) { Name = Sequence, Enabled = true, EnabledOptions = options }; hotstrings.Add(Sequence, key); keyboardHook.Add(key); }