public void Apply(ES.Context context) { if (!String.Equals(context.Version, Version, StringComparison.OrdinalIgnoreCase)) { return; } var controls = Boxes .SelectMany(b => b.Controls) .ToDictionary(c => c.Name, StringComparer.OrdinalIgnoreCase) ; foreach (var param in context.Params) { if (controls.TryGetValue(param.Name, out var control)) { control.Apply(param); } } var dps = controls.Values .OfType <DatePicker>() .Where(d => d.Active == true) .Where(d => Array.FindIndex(context.Params, p => p.Name.Equals(d.Name, StringComparison.OrdinalIgnoreCase)) < 0) ; foreach (var dp in dps) { dp.Active = false; } var cbs = controls.Values .OfType <ComboBoxEx>() .Where(c => c.Active == true) .Where(c => Array.FindIndex(context.Params, p => p.Name.Equals(c.Name, StringComparison.OrdinalIgnoreCase)) < 0) ; foreach (var cb in cbs) { cb.Active = false; } }
public ES.Context ToContext(ArchType arch) { var ctx = new ES.Context { Name = Name, Version = Version }; ctx.Addins = Addins .Where(ai => !(ai is XLL xll && xll.Arch != arch)) .Select(ai => new ES.Addin { Path = ai.Path, ReadOnly = ai.ReadOnly }) .ToArray() ; ctx.Params = Boxes .SelectMany(b => b.Controls) .Select(c => c.ToParam()) .Where(p => p != null) .ToArray() ; return(ctx); }