public void FindAndAddMissingTypes() { var classCache = new ClassTypeCache(); classCache.IgnoreAttribute <OnlyIncludeInTestsAttribute>(); classCache.AddTypeWithAttribute <BaseFieldValidator, ValidatorTargetAttribute>(); classCache.AddTypeWithAttribute <BaseObjectValidator, ValidatorTargetAttribute>(); classCache.AddTypeWithAttribute <BaseCrossSceneValidator, ValidatorTargetAttribute>(); classCache.AddTypeWithAttribute <BaseProjectValidator, ValidatorTargetAttribute>(); var validatorTargets = classCache.Types.Select(x => { var vValidatorAttr = (ValidatorTargetAttribute)x.GetCustomAttributes(typeof(ValidatorTargetAttribute), false)[0]; return(vValidatorAttr); }).ToArray(); if (OverrideItems == null) { OverrideItems = new List <OverrideItem>(); } // Remove any missing override items that no longer exist for (var i = OverrideItems.Count - 1; i > 0; i--) { if (validatorTargets.Any(x => x.Symbol == OverrideItems[i].symbol)) { continue; } OverrideItems.Remove(OverrideItems[i]); } for (var i = 0; i < validatorTargets.Length; i++) { var vValidatorAttr = validatorTargets[i]; // If we have never cached this type before, create a reference to it by way of symbol // Otherwise grab the existing reference and reassign the type. if (OverrideItems.All(x => x.symbol != vValidatorAttr.Symbol)) { var oItem = new OverrideItem() { enabled = true, symbol = vValidatorAttr.Symbol, type = classCache[i] }; OverrideItems.Add(oItem); } else { var overrideItem = OverrideItems.First(x => x.symbol == vValidatorAttr.Symbol); overrideItem.type = classCache[i]; } } }
public void tempOverride() { TemporaryOverride newTempOverride = new TemporaryOverride(cs.MenuGroup); newTempOverride.OverrideShortcutKey = "SHIFT+Y"; // Scan code for Y newTempOverride.Name = "Customization Override"; newTempOverride.Description = "Customization Override"; newTempOverride.ElementID = "EID_CUITEMPOVERRIDE"; // Creating a override for Shift+Y (Key down) that will behave as temporary override for OSnap to endpoint (MM_1629) OverrideItem newOverrideItem = new OverrideItem("MM_1629", OverrideKeyState.Down, newTempOverride); newTempOverride.DownOverride = newOverrideItem; }
public bool TryGetOverrideConfigItem(Type type, out OverrideItem overrideItem) { overrideItem = null; for (var i = 0; i < OverrideItems.Count; i++) { if (OverrideItems[i].type == type) { overrideItem = OverrideItems[i]; return(true); } } return(false); }
/// <summary> /// Try and get an <see cref="OverrideItem"/> for validator <see cref="Type"/> <paramref name="type"/>. /// Returns true if found, otherwise false. /// </summary> /// <param name="type"></param> /// <param name="overrideItem"></param> /// <returns></returns> internal bool TryGetOverrideConfigItem(Type type, out OverrideItem overrideItem) { overrideItem = null; for (var i = 0; i < OverrideItems.Count; i++) { if (OverrideItems[i].type != type) { continue; } overrideItem = OverrideItems[i]; return(true); } return(false); }
/// <summary> /// Iterate through all validator types and ensure an <see cref="OverrideItem"/> exists for each one. /// For any that no longer exist, remove these. /// </summary> internal void FindAndAddMissingTypes() { var classCache = new ClassTypeCache(); classCache.IgnoreAttribute <OnlyIncludeInTestsAttribute>(); classCache.AddTypeWithAttribute <FieldValidatorBase, ValidatorAttribute>(); classCache.AddTypeWithAttribute <ObjectValidatorBase, ValidatorAttribute>(); classCache.AddTypeWithAttribute <CrossSceneValidatorBase, ValidatorAttribute>(); classCache.AddTypeWithAttribute <ProjectValidatorBase, ValidatorAttribute>(); var validatorTargets = new List <ValidatorAttribute>(); for (var i = 0; i < classCache.Count; i++) { var type = classCache[i]; var validatorAttrs = type.GetCustomAttributes( typeof(ValidatorAttribute), false) as ValidatorAttribute[]; if (validatorAttrs == null || validatorAttrs.Length == 0) { Debug.LogWarningFormat(ZeroValidatorAttributesFoundWarning, type.FullName); } else if (validatorAttrs.Length > 1) { Debug.LogWarningFormat(MultipleValidatorAttributesFoundWarning, type.FullName); } else { validatorTargets.Add(validatorAttrs[0]); } } // Remove any missing override items that no longer exist for (var i = OverrideItems.Count - 1; i > 0; i--) { if (validatorTargets.Any(x => x.Symbol == OverrideItems[i].symbol)) { continue; } OverrideItems.Remove(OverrideItems[i]); } for (var i = 0; i < validatorTargets.Count; i++) { var vValidatorAttr = validatorTargets[i]; // If we have never cached this type before, create a reference to it by way of symbol // Otherwise grab the existing reference and reassign the type. if (OverrideItems.All(x => x.symbol != vValidatorAttr.Symbol)) { var oItem = new OverrideItem { enabled = true, symbol = vValidatorAttr.Symbol, type = classCache[i] }; OverrideItems.Add(oItem); } else { var overrideItem = OverrideItems.First(x => x.symbol == vValidatorAttr.Symbol); overrideItem.type = classCache[i]; } } }