private void load(RealmContextFactory realmFactory) { var rulesetId = Ruleset?.ID; List <RealmKeyBinding> bindings; using (var usage = realmFactory.GetForRead()) bindings = usage.Realm.All <RealmKeyBinding>().Where(b => b.RulesetID == rulesetId && b.Variant == variant).Detach(); foreach (var defaultGroup in Defaults.GroupBy(d => d.Action)) { int intKey = (int)defaultGroup.Key; // one row per valid action. Add(new KeyBindingRow(defaultGroup.Key, bindings.Where(b => b.ActionInt.Equals(intKey)).ToList()) { AllowMainMouseButtons = Ruleset != null, Defaults = defaultGroup.Select(d => d.KeyCombination) }); } Add(new ResetButton { Action = () => Children.OfType <KeyBindingRow>().ForEach(k => k.RestoreDefaults()) }); }
public IReadOnlyList <string> GetReadableKeyCombinationsFor(GlobalAction globalAction) { List <string> combinations = new List <string>(); using (var context = realmFactory.GetForRead()) { foreach (var action in context.Realm.All <RealmKeyBinding>().Where(b => b.RulesetID == null && (GlobalAction)b.ActionInt == globalAction)) { string str = action.KeyCombination.ReadableString(); // even if found, the readable string may be empty for an unbound action. if (str.Length > 0) { combinations.Add(str); } } } return(combinations); }